Android JNI FindClass找不到R.id

时间:2017-11-15 09:07:45

标签: android android-ndk java-native-interface android-resources

我正在尝试查找资源ID的值。加载R类的第一步失败:

jclass rcl = (*env).FindClass("my/package/R$id");

rcl的值为NULL。我试过了

jclass rcl = (*env).FindClass("my/package/R/id");

也返回null。

查找MainActivity等其他类正常工作。使用NDK15。可能有什么不对?

javap的输出: http://siara.cc/output.txt

EDITED: 在将类名更改为我的/ package / R时,我在adb日志中找到以下行:

exception: java.lang.ClassNotFoundException: Didn't find class "my.package.R" on path: DexPathList[[zip file "/data/app/my.package-1/base.apk"],nativeLibraryDirectories=[/data/app/my.package-1/lib/arm, /system/fake-libs, /data/app/my.package-1/base.apk!/lib/armeabi-v7a, /system/lib, /vendor/lib, /system/vendor/lib]]

1 个答案:

答案 0 :(得分:0)

通过添加这样的proguard规则来解决问题:

-keep class my.package.R$* { *; }

似乎proguard也混淆了R类。