android插件化-apkplugdemo源代码阅读指南-10
2014-08-21 13:29
393 查看
阅读本节内容前可先了解 apkplug基础教程
本教程是基于apkplug V1.6.8 版本号编写 最新开发方式以官网为准
可下载最新的apkplugdemo源代码http://git.oschina.net/plug/apkplugDemos
apkplugdemo演示图
一 apkplugdemoproject源代码结构
src
|-com.apkplugdemo.adapter --插件列表Adapter
|-com.apkplugdemo.adapter.base --adapter 基类
|-com.apkplugdemo.FileUtil--文件操作类
|-com.apkplugdemo.FileUtil.filter--文件类型过滤类
|-com.apkplugdemo.util--项目通用工具类
|-com.apkplugdemo.util.Observer--java观察者设计模式类
|-com.apkplugdemo.util.preferencesFactory --preferences操作类
|-com.example.apkplugdemo --项目application 和activity类
|-huahua.viewpager --与com.example.apkplugdemo功能同样 仅仅是提供fragment方式展示
二 阅读方式
依据以上结构能够看出除去工具类我们须要阅读的代码并不多
com.apkplugdemo.adapter.ListBundleAdapter--负责首页列表Item展示以及 "执行"button事件
com.example.apkplugdemo.ProxyApplication --负责启动apkplug框架,以及安装assets文件夹下的插件 (通过InstallBundle类安装)
com.example.apkplugdemo.MyProperty--启动框架须要的接口类,为框架提供本地化变量保存于获取的接口 (老版本号还提供自启插件的安装 v1.6.8版本号用BundleControl服务替代)
com.example.apkplugdemo.MainActivity--项目启动类,展示已安装插件列表,提供安装SD卡中插件的button等功能
com.example.apkplugdemo.InstallBundle--启动assets文件夹下的插件
三 ProxyApplication
ProxyApplication 仅仅启动框架 然后调用InstallBundle启动插件
四 InstallBundle 安装插件实现
InstallBundle 是调用BundleControl实现将assets文件夹中的apk文件安装到宿主应用中的,具体可看 <apkplug插件安装-04>
五 MainActivity 界面代码
MainActivity 初始化函数
initBundleList() -- 获取已安装插件 <获取apkplug已安装插件-03>
ListenerBundleEvent()--监听插件安装事件 <监听apkplug插件安装事件>
apkplugdemo有关于apkplug框架的调用就是这些了,其它工具性的代码感兴趣的同学能够自己看。
本教程是基于apkplug V1.6.8 版本号编写 最新开发方式以官网为准
可下载最新的apkplugdemo源代码http://git.oschina.net/plug/apkplugDemos
apkplugdemo演示图
一 apkplugdemoproject源代码结构
src
|-com.apkplugdemo.adapter --插件列表Adapter
|-com.apkplugdemo.adapter.base --adapter 基类
|-com.apkplugdemo.FileUtil--文件操作类
|-com.apkplugdemo.FileUtil.filter--文件类型过滤类
|-com.apkplugdemo.util--项目通用工具类
|-com.apkplugdemo.util.Observer--java观察者设计模式类
|-com.apkplugdemo.util.preferencesFactory --preferences操作类
|-com.example.apkplugdemo --项目application 和activity类
|-huahua.viewpager --与com.example.apkplugdemo功能同样 仅仅是提供fragment方式展示
二 阅读方式
依据以上结构能够看出除去工具类我们须要阅读的代码并不多
com.apkplugdemo.adapter.ListBundleAdapter--负责首页列表Item展示以及 "执行"button事件
com.example.apkplugdemo.ProxyApplication --负责启动apkplug框架,以及安装assets文件夹下的插件 (通过InstallBundle类安装)
com.example.apkplugdemo.MyProperty--启动框架须要的接口类,为框架提供本地化变量保存于获取的接口 (老版本号还提供自启插件的安装 v1.6.8版本号用BundleControl服务替代)
com.example.apkplugdemo.MainActivity--项目启动类,展示已安装插件列表,提供安装SD卡中插件的button等功能
com.example.apkplugdemo.InstallBundle--启动assets文件夹下的插件
三 ProxyApplication
ProxyApplication 仅仅启动框架 然后调用InstallBundle启动插件
01 | public void onCreate() { |
02 | super .onCreate(); |
03 | try { |
04 | List activators= new java.util.ArrayList<BundleActivator>(); |
05 | //将服务添�框架,框架将在启动时启动这些服务 |
06 | activators.add( new appServiceManager()); |
07 | frame=FrameworkFactory.getInstance().start(activators, this , new MyProperty( this .getApplicationContext())); |
08 | BundleContext context =frame.getSystemBundleContext(); |
09 | //安装assets目录下的插件 该类替代了MyProperty.AutoStart()方法 ,1.6.7以上建议使用新方式 |
10 | InstallBundle ib= new InstallBundle(); |
11 | ib.installBundle(getApplicationContext(), context, |
12 | new installCallback(){ |
13 | @Override |
14 | public void callback( int arg0, Bundle arg1) { |
15 | if (arg0==installCallback.stutas5||arg0==installCallback.stutas7){ |
16 | Log.d( "" ,String.format( "插件安装 %s : %d" ,arg1.getName(),arg0)); |
17 | return ; |
18 | } else { |
19 | Log.d( "" , "插件安装失败 :%s" +arg1.getName()); |
20 | } |
21 | } |
22 | }); |
23 | } catch (Exception ex){ |
24 | System.err.println( "Could not create : " + ex); |
25 | ex.printStackTrace(); |
26 | int nPid = android.os.Process.myPid(); |
27 | android.os.Process.killProcess(nPid); |
28 | } |
29 | } |
InstallBundle 是调用BundleControl实现将assets文件夹中的apk文件安装到宿主应用中的,具体可看 <apkplug插件安装-04>
//从assets文件夹中复制apk文件到SD卡中 InputStream in=context.getAssets().open("BundleDemoOSGIService1.apk"); File f0=new File(context.getFilesDir(),"BundleDemoOSGIService1.apk"); if(!f0.exists()){ copy(in, f0); //第一次启动时运行安装,以后就不运行了 // startlevel设置为1插件会自启 isCheckVersion不检測插件版本号覆盖更新 this.install(mBundleContext,"file:"+f0.getAbsolutePath(),callback,1,false); }
五 MainActivity 界面代码
MainActivity 初始化函数
initBundleList() -- 获取已安装插件 <获取apkplug已安装插件-03>
ListenerBundleEvent()--监听插件安装事件 <监听apkplug插件安装事件>
apkplugdemo有关于apkplug框架的调用就是这些了,其它工具性的代码感兴趣的同学能够自己看。
相关文章推荐
- android插件化-apkplugdemo源码阅读指南-10
- android插件化-apkplug框架启动-02
- android插件化-apkplug插件开发-07
- android插件化-获取apkplug框架已安装插件-03
- android插件化-获取apkplug框架已安装插件-03
- android插件化-apkplug从宿主启动插件Activity-06
- android插件化-监听apkplug插件安装/卸载状态-05
- android 插件化 模块化开发(apkplug)
- android插件化-apkplug中以监听方式获取OSGI服务-09
- 使用apkplug实现Android客户端插件化
- android插件化-apkplug从宿主启动插件Activity-06
- android插件化-apkplug中以监听方式获取OSGI服务-09
- android插件化-apkplug框架启动-02
- Android 如何对apk文件进行反编译以及重新打包签名 标签: apktoolandroid反编译jebSmali2Java 2016-05-10 16:00 3897人阅读 评论(0) 收藏
- android插件化-apkplug中OSGI服务基本原理-08
- android插件化-安装apkplug插件-04
- android插件化-apkplug框架基本结构-01
- android使用apkplug实现插件化开发
- android 插件化 模块化开发(apkplug)
- 使用apkplug实现Android客户端插件化