如何使用插件化apk

Apkplug最大的亮點就在於它的強大功能-插件化apk,就是多個APK在一個APK上運行,可實現應用內更新等需求。還能夠搭建聚合廣告,聚合支付等平臺。
android

今天先介紹其插件化apk的功能。接入流程可歸結以下圖:app

步驟1:註冊ApkPlug官網帳號:框架

官網地址httpwww.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

相關文章
相關標籤/搜索