tinker icon indicating copy to clipboard operation
tinker copied to clipboard

IllegalAccessError

Open zedazheng opened this issue 6 years ago • 6 comments

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

zedazheng avatar Jun 17 '19 07:06 zedazheng

编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里?

tys282000 avatar Jun 17 '19 07:06 tys282000

编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

zedazheng avatar Jun 17 '19 07:06 zedazheng

编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

zedazheng avatar Jun 17 '19 07:06 zedazheng

你开了加固模式吗?或者你完全没修改过java代码?

tys282000 avatar Jun 24 '19 07:06 tys282000

你开了加固模式吗?或者你完全没修改过java代码?

开了加固模式,修改了代码改了一个方法

zedazheng avatar Jun 27 '19 02:06 zedazheng

tinker修复代码中不能引入任何新的lambda表达式,否则会造成奔溃

deathfish avatar Jan 18 '22 13:01 deathfish