用apkplug来进行插件式开发

一、插件的配置

1、asserts目录下新建一个plugin.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<plugin-features
    Bundle-Activator="com.ress.plugin.MyActivitor"
    Bundle-Activity="com.ress.plugin.activity.MainActivity"
    Bundle-Name="Plug"
    Bundle-SymbolicName="com.ress.plugin"
    Bundle-Version="1.0.0"
    Short-Links="http://yyfr.net/q26 "
    Use-Host-MetaData="true"
    date="2016.08.26"
    plug_id="plug_user_23B60GbdeE0"
    provider-name="APKPLUG"
    start-level="1"
    start-up="true"
>
</plugin-features>

其中:

Bundle-Activitor 插件的入口类

Bundle-Activity 插件的界面  如果有多个activity可以用,分割

Bundle-SymbolicName 插件的包名

Bundle-Name 插件的名称

Bundle-Version 插件的版本

Short-Links 短链接下载插件的话得将插件的短链接配置到这项

更详细的可以去看apkplug官方文档


2、拷贝osgi3.9.0.jar到项目的libs目录下,并且在module的build.gradle中添加入一下代码

 dependencies {
        provided files('libs/osgi.jar')
    }

3、自定义一个类MyActivitor集成自BundleActivitor

public class MyActivitor implements BundleActivator {
    @Override
    public void start(BundleContext bundleContext) throws Exception {
        bundleContext.getBundleContext().startActivity(new Intent(bundleContext.getBundleContext(),MainActivity.class));
    }

    @Override
    public void stop(BundleContext bundleContext) throws Exception {

    }
}

4、打包成apk文件


二、主应用的开发

1、先去apkplug官网注册一个账号

2、添加应用,应用添加了以后打开应用详情会出现如下界面:


3、在主应用程序的AndroidManifest.xml文件中添加如下配置:

权限:

   <uses-permission android:name="android.permission.ACCESSNETWORKSTATE"/>
    <uses-permission android:name="android.permission.BINDMIDIDEVICESERVICE"/>
    <uses-permission android:name="android.permission.READPHONESTATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.MOUNTUNMOUNTFILESYSTEMS"/>
    <uses-permission android:name="android.permission.READEXTERNALSTORAGE"/>
    <uses-permission android:name="android.permission.WRITEEXTERNALSTORAGE"/>
    <uses-permission android:name="android.permission.MOUNTUNMOUNTFILESYSTEMS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

<applicaiton>节点下配置:

<meta-data
            android:name="apkplug_appid"
            android:value="app_23B3SYAnA4M"/>
这里的apkplug_appid就是上面截图中的apkplug_appid,

插件平台需要的配置!

<activity
            android:name="org.apkplug.app.apkplugActivity"
            android:configChanges="orientation|keyboardHidden"
            android:theme="@style/android:Theme.Light"
            />

4、下载apkplug的 sdk,将jar和so文件引入工程,jar放入libs目录下,so文件放入新建的jniLibs文件夹下

5、将之前打包好的插件apk文件放入主应用的asserts目录下

6、自定义一个Application,并在oncreat方法中添加初始化代码

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        try {
            PlugManager.getInstance().init(this, FrameworkFactory.getInstance().start(null, this).getSystemBundleContext(), "MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQCnO1liAe9uVCB46f7AJhaAWIKJyPgISQBjTwG/DdJ0YZHt3ekmvFg7iirj5/mRR8n6LNPxPhUBc+4hbm2S8ANoa7dC/Zt0SdanUGmSSRkv1OF+3jJ3/4hPNj2BYViEcYysWxiepftE70U9R29/Xk3IusuAn8dtF1jEO8eAfjCPVQIBAw==");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

其中那一长串就是之前截图中的publickkey,点击复制按钮,复制过来即可。

7、安装本地的插件

PlugManager.getInstance().installAssets(context,"assets中apk的文件名",“插件版本号”,OnInstallListener listener)

当然也可以安装云端的插件,可以看 官方开发文档,这里只演示最简单的安装本地插件。

8、启动插件

Intent intent = new Intent();
intent.setClassName(MainActivity.this, "com.ress.plugin.activity.MainActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

"com.ress.plugin.activity.MainActivity"就是我们在插件的plugin.xml的Bundle-Activity中填写的Activity,你想启动哪个就写那个。

附上Demod的地址:Demo

插件的地址:plugin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值