RePlugin 初体验

1. 配置

按照 RePlugin 文档对 build.gradle 进行配置之后,进行 Gradle Sync,报错:

No signature of method: com.android.build.gradle.internal.scope.VariantScopeImpl.getMergeAssetsTask() is applicable for argument types: () values: []

问题原因:

工程使用的 Gradle 版本为 4.6,build tool 版本为 3.2.1。build tool 3.2.X 的一些接口做了调整。

解决方案:

方案一:对 RePlugin 源码进行相应的修改。

  1. variant.getVariantData().getScope().getGenerateBuildConfigTask().name --> variant.getVariantData().getTaskContainer().getGenerateBuildConfigTask().name
  2. variant.getVariantData().getScope().getMergeAssetsTask().name --> variant.getVariantData().getTaskContainer().getMergeAssetsTask().name

方案二:使用较早版本的 Gradle 及 build tool。

使用 Gradle 版本 4.4,build tool 版本 3.1.2


参考链接:https://github.com/Qihoo360/RePlugin/issues/646

2. 加载插件

通过调用 RePlugin.install("/sdcard/replugin/exam.apk") 进行插件的加载,执行后日志显示异常信息如下:

installLocked: Not a valid apk. path=/sdcard/replugin/exam.apk

问题原因:

应用没有读写存储的权限。

解决方案:

  1. 声明读写存储的权限


  1. 在代码中进行动态权限申请(targetSdkVersion >= 23 需要)

参考链接:https://github.com/Qihoo360/RePlugin/issues/618

3. 启动插件

这边通过包名的形式来启动插件的 MainActivity

RePlugin.startActivity(MainActivity.this, RePlugin.createIntent("cn.zheteng123.repluginplugin", "cn.zheteng123.repluginplugin.MainActivity"));

你可能感兴趣的:(RePlugin 初体验)