重複の可能性:
Android の C で独自の Java クラスをロードするにはどうすればよいですか?
アプリケーションは Eclipse からのデバッグ/実行で動作しますが、.APK は、カスタム ビューを含む XML レイアウトを解析するときに .classNotFoundException を返します。
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 クラスを見つけられるのに、他のアプリでは見つけられない理由がわかりません。