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 源码进行相应的修改。
- variant.getVariantData().getScope().getGenerateBuildConfigTask().name --> variant.getVariantData().getTaskContainer().getGenerateBuildConfigTask().name
- variant.getVariantData().getScope().getMergeAssetsTask().name --> variant.getVariantData().getTaskContainer().getMergeAssetsTask().name
方案二:使用较早版本的 Gradle 及 build tool。
使用 Gradle 版本 4.4,build tool 版本 3.1.2
2. 加载插件
通过调用 RePlugin.install("/sdcard/replugin/exam.apk")
进行插件的加载,执行后日志显示异常信息如下:
installLocked: Not a valid apk. path=/sdcard/replugin/exam.apk
问题原因:
应用没有读写存储的权限。
解决方案:
- 声明读写存储的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- 在代码中进行动态权限申请(targetSdkVersion >= 23 需要)
3. 启动插件
这边通过包名的形式来启动插件的 MainActivity
。
RePlugin.startActivity(MainActivity.this, RePlugin.createIntent("cn.zheteng123.repluginplugin", "cn.zheteng123.repluginplugin.MainActivity"));
网友评论