IllegalAccessError
java.lang.IllegalAccessError: Method 'void com.b.c.d.c.c.()' is inaccessible to class 'com.b.c.d.c.h' (declaration of 'com.b.c.d.c.h' appears in /data/user/0/com.b.c/tinker/patch-0879c7e8/dex/tinker_classN.apk!classes3.dex)
com.b.c.d.c.h是com.b.c.d.c.c的父类,在com.b.c.d.c.c调用的super()
如果我把这个父类去掉,在其他地方又会报
java.lang.IllegalAccessError: Illegal class access: 'com.b.c.d.e.f.a' attempting to access 'com.b.c.d.e.f.a$12' (declaration of 'com.b.c.d.e.f.a' appears in /data/user/0/com.hongdou.mobile/tinker/patch-3708d44b/dex/tinker_classN.apk)
麻烦看看是什么问题?
安卓8.0和9.0上都出现了这个问题,5.1和8.2没此问题,同一个patch
项目compileSdkVersion是28
tinkerVersion是1.9.13
编patch包的时候本地会留一份合成之后的新dex,在这个路径下面:
用baksmali或者dexdump看下com.b.c.d.e.f.a和com.b.c.d.e.f.a$12是不是都在新dex里?
编patch包的时候本地会留一份合成之后的新dex,在这个路径下面: /build/outputs/apk/tinkerPatch/<debug|release>/tempPatchedDexes
用baksmali或者dexdump看下com.b.c.d.e.f.a和com.b.c.d.e.f.a$12是不是都在新dex里?
build\outputs\apk\tinkerPatch\release目录下没找到tempPatchedDexes
编patch包的时候本地会留一份合成之后的新dex,在这个路径下面: /build/outputs/apk/tinkerPatch/<debug|release>/tempPatchedDexes 用baksmali或者dexdump看下com.b.c.d.e.f.a和com.b.c.d.e.f.a$12是不是都在新dex里?
build\outputs\apk\tinkerPatch\release目录下没找到tempPatchedDexes
只有 app-release文件夹 ***_1.0.5_client_release文件夹 tinker_result文件夹 dex_log.txt log.txt patch_signed.apk patch_signed_7zip.apk patch_unsigned.apk
你开了加固模式吗?或者你完全没修改过java代码?
你开了加固模式吗?或者你完全没修改过java代码?
开了加固模式,修改了代码改了一个方法
tinker修复代码中不能引入任何新的lambda表达式,否则会造成奔溃