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通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
 
随机推荐
- android开源项目框架大全:
			
android开源项目框架大全: 1.多页切换TabHost9 高仿网易云音乐客户端的Home页面切换Tabhost 高仿网易云音乐客户端的Home页面切换Tabhost,并且三角形是透明的,实现方式 ...
 - Numpy知识(三)
			
ndarray的花式索引. 正负数索引,正数就是从0开始的下标正向寻找,负数是-1开始的负向寻找. arr[[1,5,2,6],[0,3,1,2]]:拿取arr[1,0],arr[5,3],arr[2 ...
 - yii NAV x下拉
			
$menuItems[] = [ 'label' => "<img src='/images/small.jpg'>", 'url' => ['/site/ ...
 - 用伪类:after画箭头
			
在项目中,经常会用到尖头,尤其是表单中,会有剪头的样式,尽量不要用图片显示.用伪类实现. eg 查看更多 > html: <div class="more"> ...
 - wamp添加本地虚拟域名
			
修改一下文件位置,引入文件 下面是配置文件添加配置指向目录 <VirtualHost *:80> ServerAdmin 979996962@qq.com DocumentRoot &qu ...
 - mui-顶部选项卡-第一个选项卡内容不显示
			
<div id="item1" class="mui-control-content mui-active"> <div id="s ...
 - 关于log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).的问题
			
解决办法(非长久之计,折中) 将该方法插入到main函数中,可以自行打印日志信息了 BasicConfigurator.configure(); //自动快速地使用缺省Log4j环境.原文链接:htt ...
 - Steering Behaviors
			
[Steering Behaviors] 1.Seek 下述的算法是一个基本Seek行为,但不带任何Steering输出的力.在该公式作用下,游戏个体的移动方式是直线型的,如果target的位置变了的 ...
 - SimpleAdapter用法
			
[SimpleAdapter用法] public class TestSimpleAdapter extends Activity { @Override protected void onCreat ...
 - 关于OPEN_MAX宏undeclared的问题
			
最近在看unp时,I/O复用-poll一章的代码使用到了OPEN_MAX.据书中描述,这一宏定义在limits.h头文件中,指代一个进程在任意时刻能打开的最大描述符数目.但在代码编译时遇到了错误,提示 ...