標籤:android 模組化 apkplug 外掛程式 輕應用
本文章基於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 sourceprint?
03 |
FrameworkInstance frame=FrameworkFactory.getInstance().start( null ,Launcher. this ,MyProperty.getInstance( this .getApplicationContext())); |
05 |
System.err.println( "Could not create : " + ex); |
07 |
StringBuffer buf= new StringBuffer(); |
08 |
buf.append( "外掛程式平台啟動失敗:\n" ); |
09 |
buf.append(ex.getMessage()); |
10 |
Toast.makeText( this , "外掛程式平台啟動失敗" ,Toast.LENGTH_SHORT).show(); |
至此架構便嵌入到應用中並啟動成功了,下一篇文章將講解怎樣通過SystemBundle擷取已外掛程式和資訊等操作