zoukankan      html  css  js  c++  java
  • android插件化-apkplug框架启动-02

    本文章基于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 权限配置

        插件平台须要几个基础的权限配置,请将下面的几个权限增加到project的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();
     
        启动代码:
         
    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("插件平台启动失败: ");
    09      buf.append(ex.getMessage());
    10      Toast.makeText(this, "插件平台启动失败",Toast.LENGTH_SHORT).show();
    11  }


     
    至此框架便嵌入到应用中并启动成功了,下一篇文章将解说如何通过SystemBundle获取已插件和信息等操作 
  • 相关阅读:
    Diophantus of Alexandria(唯一分解定理)
    K
    HDU-多校2-Everything Is Generated In Equal Probability(公式+逆元)
    IOS学习经验总结
    ios编译出错:UIButton.h' has been modified since the precompiled header UIKit.pcm' was built
    ios学习--详解IPhone动画效果类型及实现方法
    iOS常用动画 类封装
    iOS学习之自定义弹出UIPickerView或UIDatePicker(动画效果)
    iOS学习之Xcode 的Debug技巧
    iOS学习之Map,定位,标记位置的使用
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3984305.html
Copyright © 2011-2022 走看看