2012-04-18 28 views
1

可能重复:
How do I load my own Java class in C on Android?
Application works in debug/run from Eclipse, but .APK gives .classNotFoundException when parsing XML layout that contains a custom ViewJNIEnv->的findClass()未能在JNI_OnLoad

在Android中,我访问本地C库,这样做:

System.loadLibrary("testlib"); 

加载本机库。 在JNI_OnLoad()函数,它试图找到一个Java胶水代码类:

JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { 
     JNIEnv *env; 
     jclass k; 
     jint r; 

     r = vm->GetEnv ((void **) &env, JNI_VERSION_1_4); 
     k = env->FindClass ("com/test/android/aclass"); 

的的findClass()失败,并抛出一个NoClassDefFoundError的异常。 任何想法为什么我无法从我的C代码中看到我的Java类?

我在另一个测试应用程序中使用这个相同的库,它工作(所以我相信该库的工作原理)。我不明白为什么一个应用程序可以找到java类,而另一个不能。

+0

哪里'COM /测试/安卓/ aclass'类中定义?在项目本身或混合在一个jar文件中? – Femi 2012-04-18 05:43:34

+0

在项目本身。 – bubba 2012-04-18 05:55:35

+0

好文章 - 感谢您的链接。但最终发现我的问题是proguard.cfg。当我禁用proguard它现在的工作。 – bubba 2012-04-20 02:31:14

回答