RePlugin 初体验

作者: learner222 | 来源:发表于2018-11-25 16:04 被阅读99次

    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"));
    

    相关文章

      网友评论

        本文标题:RePlugin 初体验

        本文链接:https://www.haomeiwen.com/subject/gtlpqqtx.html