3

Android アプリを 4.2.1、Nexus 7 で動作するように更新しようとしたときに、疑わしい問題に直面しました。更新する前に、Android バージョン 4.1 で正常に動作していた独自の .so ライブラリを使用しています。今、私はあらゆる種類の問題を抱えています。

3.2.1 を実行している Android デバイスと 4.2.1 を実行している Nexus 7 にデプロイしたときのログを比較しました。ライブラリが 2 つの異なる場所に配置されているため、問題が発生している可能性があります。

アンドロイド 3.2.1:

Trying to load lib /data/data/com.my.app/lib/lib_my_app_jni.so 0x407e8218
Added shared lib /data/data/com.my.app/lib/lib_my_app_jni.so 0x407e8218

アンドロイド 4.2.1 (ネクサス 7):

Trying to load lib /data/app-lib/com.my.app-1/lib_my_app_api_jni.so 0x4257b6c8
Added shared lib /data/app-lib/com.my.app-1/lib_my_app_api_jni.so 0x4257b6c8

なぜ突然謎の app-lib ディレクトリに配置されたのですか? 強制的に戻すにはどうすればよいですか? そして、これはどこに文書化されていますか?

ありがとう...

4

2 に答える 2

6

Android 4.2 から、Android フレームワークにマルチユーザー機能が追加されました。

また、いくつかのディレクトリの場所が変更されていますが、Context.get???Dir() や Context.get???Path() などの API は変更されていません。(戻り値が変わるだけ)

また、Android プラットフォームは、レガシーのシンボリック リンクを作成します。

これらの変更は文書化されていません。

于 2013-02-12T16:42:21.237 に答える
0

ライブラリを当初の意図とは異なる方法で実装することになったため、私自身の質問に答えます。

問題は、ライブラリが存在するディレクトリにアクセス証明書などをコピーしていたことです。このアプローチは、data/data/package/ にある古い Android バージョンでは問題なく機能しました。ただし、新しい Android バージョン (data/app-lib/package/) では、その場所は読み取り専用です。

私たちがしたことは、場所を簡単に移動することでした。入力していただきありがとうございます。

于 2013-02-17T15:12:48.987 に答える