shwenzhang / AndResGuard

proguard resource for Android by wechat team
Apache License 2.0
8.54k stars 1.54k forks source link

混淆后,通过反射找不到R文件了 Class.forName(packageName + ".R");报错 #244

Closed CPT-CJS closed 6 years ago

CPT-CJS commented 6 years ago

Caused by: java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx.all.R" on path: DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.xxx.xxx.all-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx.all-1/lib/arm, /data/app/com.xxx.xxx.all-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]

simpleton commented 6 years ago

这个工具本身并不会更改任何class,所以理论上应该不是AndResGuard造成的。或者说你可以在sample里复现这个问题。

CPT-CJS commented 6 years ago

它会移动这个R文件的位置吗

CPT-CJS commented 6 years ago

我刚刚试了下 貌似不是AndResGuard的问题 打扰啦

imknown commented 6 years ago

@SAKURA5460 啥导致的 吊胃口

CPT-CJS commented 6 years ago

怪我怪我 主要是这个不关AndResGuard的事,我就没说。 我代码里面想反射R文件然后动态获取布局的int值。代码混淆后,R文件也混淆了,所以就反射不到。在proguard-rules.pro里面把R文件不混淆就好了。

imknown commented 6 years ago

@SAKURA5460 嘻嘻