android插件化-apkplugdemo源代码阅读指南-10
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android插件化-apkplugdemo源代码阅读指南-10,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2934字,纯文字阅读大概需要5分钟。
内容图文
本教程是基于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 安装插件实现
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框架的调用就是这些了,其它工具性的代码感兴趣的同学能够自己看。
原文:http://www.cnblogs.com/yxwkf/p/3926994.html
内容总结
以上是互联网集市为您收集整理的android插件化-apkplugdemo源代码阅读指南-10全部内容,希望文章能够帮你解决android插件化-apkplugdemo源代码阅读指南-10所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。