1.下载官网demo https://github.com/Qihoo360/RePlugin/tree/master
2.创建宿主程序 host
(1)build.gradl (Project)
buildscript {
{ p, cfg = "rp-config.gradle" -> if (new File(p, cfg).exists()) apply from: "${p}/${cfg}" else if (p.exists()) call(p.parentFile) }(buildscript.sourceFile.parentFile)
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath "com.qihoo360.replugin:replugin-host-gradle:${RP_VERSION}"
}
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
(2) build.gradle(module)
apply plugin: 'replugin-host-gradle'
repluginHostConfig {
useAppCompat = true
// 可以在这里自定义常驻进程的名字
// persistentName = ":XXXXService"
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:26.0.0-beta1'
compile "com.qihoo360.replugin:replugin-host-lib:${RP_VERSION}"
}
3.创建插件PluginA
(1)build.gradle(Project)
buildscript {
{ p, cfg = "rp-config.gradle" -> if (new File(p, cfg).exists()) apply from: "${p}/${cfg}" else if (p.exists()) call(p.parentFile) }(buildscript.sourceFile.parentFile)
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath "com.qihoo360.replugin:replugin-host-gradle:${RP_VERSION}"
}
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter'}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
(2)build.gradle(module)
// 这个plugin需要放在android配置之后,因为需要读取android中的配置项
apply plugin: 'replugin-plugin-gradle'
repluginPluginConfig {
pluginName = "demo3"
hostApplicationId = "com.xxx.xxx"
hostAppLauncherActivity = "com.xxx.xxx.MainActivity"
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:26.0.0-beta1'
compile "com.qihoo360.replugin:replugin-plugin-lib:${RP_VERSION}"
// /** provided or compile */
// if (rootProject.ext.isPlugin) {
// // 作为插件,provided 方式引入
// provided "com.parse.bolts:bolts-android:1.4.0"
// provided files('libs/drawee-modified-1.7.1.jar')
// provided files('libs/fbcore-1.7.1.jar')
// provided files('libs/fresco-1.7.1.jar')
// provided files('libs/imagepipeline-1.7.1.jar')
// provided files('libs/imagepipeline-base-1.7.1.jar')
// } else {
// // 作为单品,compile 进 APK
// compile "com.parse.bolts:bolts-android:1.4.0"
//
// compile files('libs/fresco-1.7.1.jar')
// compile files('libs/fbcore-1.7.1.jar')
// compile files('libs/drawee-modified-1.7.1.jar')
// compile files('libs/imagepipeline-1.7.1.jar')
// compile files('libs/imagepipeline-base-1.7.1.jar')
// }
}
通过demo可以看到 宿主启动 插件 apk 可以使用如下代码,
simulateInstallExternalPlugin 方法需放在子线程中
if (RePlugin.isPluginInstalled("demo3")) {
RePlugin.startActivity(MainActivity.this, RePlugin.createIntent("demo3", "com.sinoiov.driver.login.register.MainActivity"));
} else {
InstallApkUtil.simulateInstallExternalPlugin(MainActivity.this);
}