1

重複の可能性:
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 クラスを見つけられるのに、他のアプリでは見つけられない理由がわかりません。

4

1 に答える 1