一、插件的配置
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