Android.HowToDesignPluginArchitectureInAndroidApp
There is a tools called "dx", this tool can transfer Java Binary Code into Android Dalvik Binary code.
In Android, Java Binary Code cannot be recognized.
1. 首先解决 "How to load a Java class dynamically on android/dalvik?"
可以使用DexClassLoader类来动态加载外部class。
DexClassLoader: "A class loader that loads classes from .jar and .apk files containing a classes.dex entry.
This can be used to execute code not installed as part of an application." [Ref2] [Tdo1]
2. 接下来解决 "How to use a Java class which is loaded dynamically in Android/dalvik?"
A:采用Java语言本身的Reflection功能。
B:采用预定于的接口,插件中的EntryClass来实现该接口。
3. 最后解决 "How to use the asset, like image, audio file?"
Reference
1. Android App 插件架构的设计
https://enplug.com/blog/loading-classes-dynamically-on-android-particularly-when-you-have-to-use-them-in-a-third-party-framework-like-libgdx
http://stackoverflow.com/questions/3022454/how-to-load-a-java-class-dynamically-on-android-dalvik
2. DexClassLoader
http://developer.android.com/reference/dalvik/system/DexClassLoader.html
3. Custom Class Loading in Dalvik
http://android-developers.blogspot.com/2011/07/custom-class-loading-in-dalvik.html
Ant的使用
Todo
1. 研究dalvik包,来看看dalvik包可以为我们带来什么支持?
dalvik.system
dalvik.bytecode
dalvik.annotation
2. Dive into Android Source
http://android.github.io/
3. Dive Into Ant
Ant的使用,学习
Android.HowToDesignPluginArchitectureInAndroidApp的更多相关文章
- 【原】Android热更新开源项目Tinker源码解析系列之三:so热更新
本系列将从以下三个方面对Tinker进行源码解析: Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Android热更新开源项目Tinker源码解析系列之二:资源文件热更新 A ...
- 配置android sdk 环境
1:下载adnroid sdk安装包 官方下载地址无法打开,没有vpn,使用下面这个地址下载,地址:http://www.android-studio.org/
- Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记
以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...
- Android Studio配置 AndroidAnnotations——Hi_博客 Android App 开发笔记
以前用Eclicps 用习惯了现在 想学学 用Android Studio 两天的钻研终于 在我电脑上装了一个Android Studio 并完成了AndroidAnnotations 的配置. An ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【原】Android热更新开源项目Tinker源码解析系列之二:资源文件热更新
上一篇文章介绍了Dex文件的热更新流程,本文将会分析Tinker中对资源文件的热更新流程. 同Dex,资源文件的热更新同样包括三个部分:资源补丁生成,资源补丁合成及资源补丁加载. 本系列将从以下三个方 ...
- Android Studio 多个编译环境配置 多渠道打包 APK输出配置
看完这篇你学到什么: 熟悉gradle的构建配置 熟悉代码构建环境的目录结构,你知道的不仅仅是只有src/main 开发.生成环境等等环境可以任意切换打包 多渠道打包 APK输出文件配置 需求 一般我 ...
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
随机推荐
- linux安装memcached和php的memcache扩展 (已使用)
所需软件libevent-1.4.6-stable.tar.gz (http://monkey.org/~provos/libevent/)memcache-2.2.3.tgz (http://pec ...
- flume 使用手册
以下jie皆来自官网: 1:首先版本是flume 1.8 查看版本: bin/flume-ng version 2:配置与启动 https://flume.apache.org/FlumeUserG ...
- CentOS 6.5下Redis安装测试
NoSQL之Redis - CentOS 6.5安装测试 1.下载redis 可以在线安装或者下载 redis ①在线安装前需要检测是否存在rpm包不存在的话查看yum在线是否存在rpm包不存在的话就 ...
- with check(转)
假如我要为一个表中添加一个外键约束.语法如下 alter table dbo.employee with check add constraint [FK_employeeno] foreign ...
- 外购半成品回写PR时将同一供应商同一编码的PR合并数量回写
'); --PR 净需求 '); ---加上PR回写逻辑后 '); ---加上PR回写逻辑后 ') order by item; ---最终回写去SAP的数据 ) as LGORT ,'SAPRFC' ...
- GitHub优秀项目
https://blog.csdn.net/javaxuexi123/article/details/79248124
- centos 6 和centos 7 系统下vnc配置
一. VNC 服务的大概介绍: VNC (Virtual Network Console)是虚拟网络控制台的缩写.它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的. ...
- tf.trainable_variables()
https://blog.csdn.net/shwan_ma/article/details/78879620 一般来说,打印tensorflow变量的函数有两个:tf.trainable_varia ...
- 153. Find Minimum in Rotated Sorted Array (Array; Divide-and-Conquer)
Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...
- Python+Selenium学习--定位一组对象
场景 从上一节的例子中可以看出,webdriver可以很方便的使用find_element方法来定位某个特定的对象,不过有时候我们却需要定位一组对象,这时候就需要使用find_elements方法. ...