1

C++ (NDK) でビルドされた共有コード ライブラリを持つアプリで作業している場合、Android 2.2 はライブラリを読み込めません。

特定のビューに移動すると、.so ネイティブ ライブラリから取得した結果を読み込む必要があります。2.3 以降では機能しますが、2.2 ではアプリが黒い画面になります。ネイティブ コードをロードしている最中に死んでいると考えましたが、何が起こっているのかわかりません。

例: 2.3 では、ADT の詳細出力は次のようになります。

04-15 11:49:07.210: DEBUG/dalvikvm(26048): lib /data/data/com.app.myapp/lib/libViewer.so 0x4051b858 を読み込もうとしています

04-15 11:49:07.220: DEBUG/dalvikvm(26048): 共有ライブラリ /data/data/com.app.myapp/lib/libViewer.so 0x4051b858 を追加しました

しかし2.2で。それはそのままです:

04-15 11:56:27.123: DEBUG/dalvikvm(275): lib /data/data/com.app.myapp/lib/libViewer.so 0x45f3dc28 を読み込もうとしています

そして、それはただここに座っています...

誰もこのような問題に遭遇しましたか?

Java のコードの観点からは、次の行でフリーズします。

static {
     System.loadLibrary("nativeViewer");//<-- goes into neverland here
}
4

1 に答える 1

1

gcc 4.7 でコンパイルしたときにこの問題が発生しました。デフォルトのコンパイラである gcc 4.6 を使用するように変更したところ、あなたが説明した問題はなくなりました。私は ndk のドキュメントを調べましたが、gcc 4.7 が android 2.2 以前で動作しないことについては何も見ませんでしたが、gcc 4.7 は実験的であると言われています。

于 2013-04-15T18:58:56.957 に答える