程诺陪你学AndroidAndroid 组件化开发

RePlugin 初体验

2018-11-25  本文已影响99人  learner222

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. 声明读写存储的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  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"));
上一篇 下一篇

猜你喜欢

热点阅读