Sophix常见bug集锦

1 启动后遇到AMSSdkTypeEnum相关崩溃

如果你遇到了

java.lang.NoClassDefFoundError:
Failed resolution of: Lcom/alibaba/sdk/android/utils/AMSDevReporter$AMSSdkTypeEnum

一般是build.gradle配置有问题。可能是你配成了

compile ('com.taobao.android:alisdk-hotfix:2.0.8') {
        transitive = false
}

从而将相关依赖排除了,导致类找不到而报错。因此,可改为

compile 'com.taobao.android:alisdk-hotfix:2.0.8'

若改完出现utdid包冲突,可再改为

compile ('com.taobao.android:alisdk-hotfix:2.0.8') {
     exclude(module:'utdid4all')
}

2 NoSuchMethodError异常,找不到对应方法

补丁正常生成后,运行旧包就会报这个NoSuchMethodError异常,提示说没有这个方法,但是确实是有这个方法的

原因

一般为混淆原因,可能是补丁由经过混淆的包生成的,而运行的是没混淆的包,所以要保持混淆一致

解决方案

如补丁是经过混淆过的新旧包生成的,那就运行生成补丁时的旧包试一下,注意,一定要保持新旧包混淆规则一致

3 热修复只修改资源文件,可以吗?

如果是asset资源,必须要有代码做过修改,才可以。
res资源,无需有代码修改。
asset资源独立修改,我们会尽快优化该功能。

4 补丁加载完后提示资源没有差异,修复不成功

打新旧包后,打补丁,旧包加载补丁成功后提示There is not different in resources.no any patchClasses,最终修复不成功

原因

打包apk的时候开启了instant run,造成apk内部的构造与不开启有差异,致使打补丁时对比不出新旧包的差异,导致修复不成功

解决方案

打包apk的时候关闭instant run,新旧包都要重新生成,然后再打补丁包

你可能感兴趣的:(Sophix常见bug集锦)