Apkplug最大的亮點就在於它的強大功能-插件化apk,就是多個APK在一個APK上運行,可實現應用內更新等需求。還能夠搭建聚合廣告,聚合支付等平臺。
android
今天先介紹其插件化apk的功能。接入流程可歸結以下圖:app
步驟1:註冊ApkPlug官網帳號:框架
官網地址http:www.apkplug.com網站
打開Apkplug官網後,點擊右上角的「註冊」,在跳轉頁面填入相關信息,註冊界面以下:spa
確認後註冊成功,使用你的帳號登陸網站。你就能夠用Apkplug開發應用了插件
步驟2:開發插件xml
Apkplug中的插件也是一個完整的apk,它與普通應用的區別有如下3點:ip
1, 插件assets目錄下有一個plugin.xml文檔,經過它可判斷一個工程是主應用仍是插件。ci
2, 插件有一個入口類BundleActivator開發
3, 插件會外部引用一個osgi.jar文件
開發插件的步驟有以下4步:
1,引入osgi.jar庫文件
Apkplug中插件須要導入的庫文件只有一個osgi.jar。
導入osgi.jar庫文件須要注意一下
osgi.jar文件只能引用不能編譯到apk文件中,不然會出現類衝突的狀況
異常代碼:had used adifferent Lorg/osgi/framework/BundleActivator; during pre-verification。
osgi.jar包導入方法:
這文件在Apkplug SDK中能夠找到。
Apkplug SDK下載地址:http://apkplugdemo.oss-cn-qingdao.aliyuncs.com/ApkplugSDK2.7.0.zip
2,編寫插件入口類BundleActivator
插件啓動時首先調用BundleActivator,其功能相似android中的application類。
public class SimpleBundle implements BundleActivator
{
private BundleContext mcontext = null;
public void start(BundleContext context)throws Exception
{
System.err.println("你好我是插件,我將爲你展現啓動acitivty我已經啓動了個人BundleId爲:"+context.getBundle().getBundleId());
}
public void stop(BundleContext context)
{
System.err.println("你好我是插件,我被中止了 個人BundleId爲:"+context.getBundle().getBundleId());
}
}
3,編寫plugin.xml配置文件
plugin.xml 是一個配置表,它跟AndroidManifest.xml做用相似。 plugin.xml文檔放置在assets中便可 重要屬性說明: Bundle-Name 插件名稱 Bundle-SymbolicName 插件包名-與應用packagename可一一對應 Bundle-Version 插件版本 -1.0.0 Bundle-Activator插件入口 -與Appliction 相似 Bundle-Activity 插件界面 -多個Activity可用 , 分割Bundle-Service 插件Service -多個Service可用 , 分割 (v2.0.0新增)Bundle-Receiver 插件廣播 -多個廣播類可用 ,分割 (v2.0.0新增)
4, 編譯生成插件apk文件
插件工程中添加的文件目錄結構以下:
最後編譯運行插件工程,生成的apk文件即爲插件文件
步驟3:開發主應用
Apkplug 主應用開發分兩步集成:
1. 獲取主應用受權AppAuth。
登陸帳號進入Apkplug後臺後,切換到「應用受權頁面」,按要求填寫好應用信息,而後肯定,你就擁有了一個等待開發的應用受權AppAuth。應用受權界面以下:
進入「受權列表」頁面,點擊「查看詳情」連接,進入「應用詳情界面」,就能夠看到已申請的AppAuth,點擊其後面的「複製」,便可直接複製AppAuth,以下圖所示
2. 對接Apkplug SDK 導入相關庫文件。
①配置應用權限
主應用須要幾個基礎的權限配置,請將如下的幾個權限加入到主應用的AndroidManifest.xml中。
<!-- 插件平臺須要的權限! -->
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permissionandroid:name="android.permission.INTERNET"/>
<uses-permissionandroid:name="android.permission.READ_PHONE_STATE">
</uses-permission>
另外將一下加入到<application></application>節點中
<!-- 插件平臺須要的配置! -->
<activity
android:name="org.apkplug.app.apkplugActivity"
android:theme="@style/android:Theme.Light"
android:configChanges="orientation|keyboardHidden"
/>
最後將咱們從Apkplug管理後臺申請到的AppAuth加入到配置文件中。
<meta-dataandroid:name="apkplug-auth" android:value="xxxxxxxx"></meta-data>
注:因爲3.2.2節中咱們直接複製了AppAuth,此處直接粘貼到AndroidManifest文檔中。
以下圖:
②導入SDK庫文件
主應用須要導入兩個文件,將其放入libs目錄中便可。
1, libndkfoo.so
2, Bundle2.0.0.jar
以下圖:
這兩個庫文件在Apkplug SDK中能夠找到。
Apkplug SDK下載地址:http://apkplugdemo.oss-cn-qingdao.aliyuncs.com/ApkplugSDK2.7.0.zip
而後:
主應用啓動Apkplug最簡只須要一段代碼便可,建議在Application中啓動框架。
FrameworkInstanceframe=FrameworkFactory.getInstance().start(List<BundleActivator>,Context);
將上一步驟開發好的插件apk,放置在主應用工程裏的assets路徑下。
以下圖:
步驟4:啓動主應用
最後啓動主應用便可。簡單的插件化apk的方法就講完了,有興趣的關注我,下次講雲端託管插件實現應用內更新。
注意事項
申請appauth,是以包名爲惟一參數的。申請以後後天不可修改。
此方法只適用於本地插件apk文件,若是須要雲端託管插件,還需爲插件申請appid.
demo見附件http://apkplugdemo.oss-cn-qingdao.aliyuncs.com/ApkplugDemo.zip