私は、ネイティブ C コードに JNI を使用した Android アプリケーションに取り組んでいます。このアプリケーションを Android 2.0 バージョンと ndkr3 でビルドすると、正常に動作します。
Android SDK バージョン 1.5 と API バージョン 3 を変更したとき、ライブラリ libtest_demo.so を開けないという問題に直面しました。
05-13 16:54:23.603: INFO/dalvikvm(1211): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library
libtest_demo.so ファイルを同じ場所 /data/data/org.abc.test_demo/lib/libtest_demo.so に配置しましたが、それでも同じ問題が発生します。
私のJavaファイルでは、次のようなネイティブライブラリを呼び出しました
System.loadLibrary("abc_jni");
System.loadLibrary("test_demo");
logcat から、両方のライブラリが同じメモリ アドレスを使用していることがわかりました。
これは logcat の出力です
05-13 17:56:15.732: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8
05-13 17:56:15.732: DEBUG/dalvikvm(9897): Added shared lib /data/data/org.abc.test_demo/lib/libabc_jni.so 0x437317f8
05-13 17:56:15.742: DEBUG/dalvikvm(9897): Trying to load lib /data/data/org.abc.test_demo/lib/libtest_demo.so 0x437317f8
05-13 17:56:15.752: INFO/dalvikvm(9897): Unable to dlopen(/data/data/org.abc.test_demo/lib/libtest_demo.so): Cannot find library