1.导入宿主插件
- 在项目跟build.gradle文件加入如下代码
classpath 'com.qihoo360.replugin:replugin-host-gradle:+'
- 在appModule文件夹的build.gradle文件中加入如下代码
apply plugin: 'replugin-host-gradle'
compile 'com.qihoo360.replugin:replugin-host-lib:2.1.3'
如果插件中用到了AppCompactTheme那么还要在当前build.gradle中加上
repluginHostConfig {
useAppCompat = true
}
- 修改application
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
RePluginConfig config = new RePluginConfig();
//是否检查插件的签名
config.setVerifySign(BuildConfig.DEBUG);
RePlugin.App.attachBaseContext(this, config);
}
@Override
public void onCreate() {
super.onCreate();
RePlugin.App.onCreate();
}
@Override
public void onLowMemory() {
super.onLowMemory();
/* Not need to be called if your application's minSdkVersion > = 14 */
RePlugin.App.onLowMemory();
}
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
/* Not need to be called if your application's minSdkVersion > = 14 */
RePlugin.App.onTrimMemory(level);
}
@Override
public void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
/* Not need to be called if your application's minSdkVersion > = 14 */
RePlugin.App.onConfigurationChanged(config);
}
}
- 添加权限(这一步千万不能省略,因为调用install后他会把sd卡上的apk迁移到
data/data/包名/app_p_a
文件夹下并更改后缀名为jar)
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
## 2.生成插件apk
* 新建一个项目
* 在项目跟目录build.gradle文件中加入
classpath 'com.qihoo360.replugin:replugin-plugin-gradle:+'
* 在moudle的build.gradle文件中加入
apply plugin: 'replugin-plugin-gradle'
compile 'com.qihoo360.replugin:replugin-plugin-lib:2.1.3'
* 在Manifest中加入(不可缺少,否则无法打开插件)
<meta-data
android:name="com.qihoo360.plugin.name"
android:value="plugin1"/>
<meta-data
android:name="com.qihoo360.plugin.version.ver"
android:value="1"/>
---
完成了基本条件,然后打包生成插件apk放到自己所需要的sd卡的目录中就行了,接下来就是如何打开这个插件了
## 3.打开插件
* 在宿主中的activity中加入如下代码
/**
* 安装插件
*
* @param view
*/
public void install(View view) {
PluginInfo pluginInfo = RePlugin.install("/sdcard/plugin1.apk");
Log.d(TAG, pluginInfo + "");
}
/**
* 卸载插件
*
* @param view
*/
public void unInstall(View view) {
RePlugin.uninstall("/sdcard/plugin1.apk");
}
/**
* 打开页面
*
* @param view
*/
public void openActivity(View view) {
try {
RePlugin.startActivity(this, RePlugin.createIntent("plugin1",
"com.github.jokar.plugin1.MainActivity"));
} catch (Exception e) {
e.printStackTrace();
}
}