美文网首页工作生活
VirtualAPK 插件框架

VirtualAPK 插件框架

作者: Lucky胡 | 来源:发表于2019-07-01 17:08 被阅读0次

错误
1、gradlew clean assemblePlugin 出错

transformClassesAndResourcesWithProguardForRelease FAILED

2、AndroidX的坑
由于插件在编译时会检测引用的包是否在主程序里有,如果插件和主程序,一个用AndroidX一个用Android,就会报错:
The dependencies that will be used in the current plugin must be included in the host app first. Please add it in the host app as well.

3、

Task :publiclib:javaPreCompileRelease FAILED

FAILURE: Build failed with an exception.

4、java.lang.NoSuchFieldException: modifiers
这是用java12导致的,需要用java8.
把jdk版本从12降低到8即可。

5、Unable to find method 'org.gradle.api.tasks.compile.CompileOptions.setBootClasspath(Ljava/lang/String;)V'
将build:gradle由3.0.0升级到'com.android.tools.build:gradle:3.1.0'

6/ResourceType: No known package when getting value for resource number
小屏幕可以,pad会报错。

7、Incompatible structural change detected: Structural change of com.google.protobuf.GeneratedMessageV3 is hazardous

Caused by: java.lang.IncompatibleClassChangeError: com.hiscene.droneplugin.proto.SyncCSyncSData

proto的错误

8、 android.content.res.Resources$NotFoundException: Resource ID #0x6f040000 type #0x12 is not valid
插件的packageId不能设置为一样的,不同插件需要自己设置不同的packageId。
virtualApk {
packageId = 0x6f // the package id of Resources.
targetHost = '../HiLeia/mobile_presentation' // the path of application module in host project.
applyHostMapping = true //optional, default value: true.
}

9、java.lang.UnsatisfiedLinkError: dlopen failed: library "libavcodec-57.so" not found
插件里的so加载不成功。插件单独运行时so可以加载,作为插件运行时不能加载。
解决方法如下:
https://github.com/didi/VirtualAPK/wiki/常见问题解答

10、retrofit卡主
converter-protobuf的版本需要用2.4.0,这里面有protobuf,需要用2.4.0,否则protobuf版本就变成3.5.0了。

11、构建插件时,遇到插件里的依赖在宿主里明明已经依赖了,但是提示没有
The dependencies [com.android.support:multidex:1.0.2] that will be used in the current plugin must be included in the host app first. Please add it in the host app as well.
问题解决:插件和宿主使用的Multidex不同,一个是android,一个是androidX,导致的不同。

12、SearchView无法使用
在插件运行时,SearchView会导致插件view无法加载。

13、rxjava在插件里卡主,release时出现,debug不出现
混淆的问题
需要将插件也混淆
加上反混淆

-dontwarn javax.annotation.**
-dontwarn javax.inject.**
# OkHttp3
-dontwarn okhttp3.logging.**
-keep class okhttp3.internal.**{*;}
-dontwarn okio.**
# Retrofit
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
# RxJava RxAndroid
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
    long producerIndex;
    long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
    rx.internal.util.atomic.LinkedQueueNode consumerNode;
}

# Gson
-keep class com.google.gson.stream.** { *; }
-keepattributes EnclosingMethod

14、解决插件里第三方库的Android依赖和宿主里的AndroidX依赖冲突
即使在宿主里加上第三方库的Android依赖,也无法解决。
因为宿主自动将Android依赖替换为AndroidX依赖。
解决方法:
1、在

dependencies {
    configurations.all {
        resolutionStrategy.force "androidx.appcompat:appcompat:1.0.2"
    }

相关文章

  • VirtualApk插件

    VirtualApk介绍 VirtualAPK是滴滴出行自研的一款插件化框架。?传送门 VirtualApk 接入...

  • VirtualApk之插件部分

    *注:本节只针对VirtualApk框架的插件部分,不涉及宿主 VirtualAPK官方github地址及项目说明...

  • VirtualAPK 插件框架

    错误1、gradlew clean assemblePlugin 出错 transformClassesAndR...

  • 阿里Atlas组件框架使用

    APP插件化/组件化框架分析VirtualAPK插件框架简单使用 今天主要讲述的阿里Atlas组件框架的简单使用,...

  • Android插件化热修复

    项目实战之插件化VirtualAPK 使用滴滴插件化方案 VirtualApk 源码解析VirtualAPK 踩坑...

  • Android 进阶解密阅读笔记20

    资源插件化 在 VirtualApk 框架里,资源插件化有两种方案, 合并资源 插件资源(即仅插件使用,插件不能访...

  • Android插件化

    Android插件化从入门到放弃-最强合集插件化探索,滴滴开源框架VirtualAPK的深入分析深度 | 滴滴插件...

  • 滴滴的VirtualApk插件化Android项目使用步骤记录

    1、VirtualApk介绍: virtualApk是滴滴出行自主研发的一款优秀的插件化框架,拥有入侵性底、兼容性...

  • APP插件化/组件化框架分析

    VirtualAPK插件框架简单使用阿里Atlas组件框架使用 最近一段时间在研究插件化和组件化实现方案,今天也算...

  • VirtualAPK 多模块插件化实践

    VirtualAPK的特性 VirtualAPK是滴滴出行自研的一款优秀的插件化框架,主要有如下几个特性。 1.功...

网友评论

    本文标题:VirtualAPK 插件框架

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