您的位置:首页 > 移动开发 > Android开发

android插件化-apkplug框架启动-02

2014-05-12 10:58 417 查看
本文章基于apkplug v1.6.7 版本编写,最新方式以官网最新消息为准
一 apkplug框架所需要的库文件(宿主) 可从http://git.oschina.net/plug/apkplugSDK  获取最新库文件

    同时可下载最新的apkplugdemo源码 http://git.oschina.net/plug/apkplugDemos

    libs--
        --libndkfoo.so   armeabi armeabi-v7a mips x86

        --Bundle(版本号).jar      
    将以上的文件加入宿主应用的libs目录下
 
二 AndroidManifest.xml 权限配置
    插件平台需要几个基础的权限配置,请将以下的几个权限加入到工程的AndroidManifest.xml中

    <!-- 插件平台需要的权限! -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 

    <uses-permission android:name="android.permission.INTERNET"/>

    另外将一下加入到<application></application>节点中

    <!-- 插件平台需要的配置! -->
   <activity
            android:name="org.apkplug.app.apkplugActivity"  
            android:theme="@style/android:Theme.Light"
            android:configChanges="orientation|keyboardHidden"
       />
三 启动apkplug框架
    你可以在应用的Application中启动框架具体代码如下 (并不限制在Application中)
    public FrameworkInstance start( List activatorList,Context appContext,PropertyInstance property)

    public FrameworkInstance start( List activatorList,Context appContext,PropertyInstance property,DisplayMetrics dm2)

    
    1.activatorList 是一个BundleActivator的List(可以为null) 这些BundleActivator在框架启动时启动(系统级别)

    2.PropertyInstance 框架保存配置信息的接口
        //框架通过该接口获取本地保存的变量
        public  String getProperty(String key);        //框架通过该接口设置本地变量
        public  void setProperty(String key,String v);            
       //框架启动时将自动安装该该函数提供的文件 "file:"+apk文件路径  (1.6.7以后不建议使用 可用BundleControl代替)

        public String[] AutoInstall();        //框架启动时将自动安装并启动该该函数提供的文件  "file:"+apk文件路径  (1.6.7以后不建议使用 可用BundleControl代替)

        public String[] AutoStart();        //调试模式   调试模式中退出APP时调用FrameworkInstance.shutdown();将删除所有插件
        public boolean Debug(); 
 
四 框架启动成功获取FrameworkInstance接口
    框架启动成功以后会返回org.apkplug.app.FrameworkInstance接口,它是宿主应用与apkplug框架和插件通信的接口。

    //停止框架
    public void shutdown();    //获取框架的SystemBundle           apkplug框架启动时会创建一个SystemBundle 它的BundleID为0 同时它不可停止和卸载,我们科通过它与其他插件通信

    public Bundle getSystemBundle();    //SystemBundle 插件的上下文 BundleContext
    public BundleContext getSystemBundleContext(); 
    启动代码:
     

view source

print?

01
try
02
{
03
 
FrameworkInstance frame=FrameworkFactory.getInstance().start(
null
,Launcher.
this
,MyProperty.getInstance(
this
.getApplicationContext()));
04
 
}
catch

(Exception ex){
05
     
System.err.println(
"Could not create : "

+ ex);
06
     
ex.printStackTrace();
07
     
StringBuffer buf=
new

StringBuffer();
08
     
buf.append(
"插件平台启动失败:\n"
);
09
     
buf.append(ex.getMessage());
10
     
Toast.makeText(
this
,
"插件平台启动失败"
,Toast.LENGTH_SHORT).show();
11
 
}
 
至此框架便嵌入到应用中并启动成功了,下一篇文章将讲解怎样通过SystemBundle获取已插件和信息等操作 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息