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")
進行插件的加載背犯,執(zhí)行后日志顯示異常信息如下:
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" />
- 在代碼中進行動態(tài)權限申請(targetSdkVersion >= 23 需要)
3. 啟動插件
這邊通過包名的形式來啟動插件的 MainActivity
。
RePlugin.startActivity(MainActivity.this, RePlugin.createIntent("cn.zheteng123.repluginplugin", "cn.zheteng123.repluginplugin.MainActivity"));