2

問題を再現する手順: ネイティブ (C++) ライブラリを使用している XPeria Z (モデル C6602 または C6603) に Play ストアから (有料) アプリをインストールします。アプリは、起動時にネイティブ ライブラリを見つけてロードしません。Play ストアにアップロードされたものとまったく同じ apk を顧客に送信すると、問題は発生せず、すべてが機能します。

このバグは私のアプリの 2 つ (Audio Evolution Mobile と USB Audio Recorder PRO) で発生し、バグ レポートは Android 4.2.2 を実行している XPeria Z ユーザーからのみ報告されているようです。

アプリを購入した顧客に両方のアプリの apk を送信し、インストール後に正常に動作しました。この問題は、他のデバイスを使用している他のユーザーには発生しません。

4

1 に答える 1

0

これがあなたの問題とまったく同じかどうかはわかりませんが、ネイティブ ライブラリが xperia z に読み込まれないという同様の問題がありました。この問題は、有料アプリのフォワード ロックが原因で、.so ファイルが別のフォルダーに配置される原因となっていました。

/mnt/asec/package_name-1/lib/libmy.so

それ以外の:

/data/data/package_name/lib/libmy.so

したがって、次のようなネイティブ ライブラリをロードする場合:

dlopen(lib_path, RTLD_LAZY);

2 番目のパスを使用すると、XPeria Z で失敗します。この最初のパスも試す必要があります。

この問題をローカルで再現するには、次を使用します。

adb install -l my.apk

実際、Java コードからネイティブ ライブラリをロードすることは正しく機能しましたが、唯一の問題は、ネイティブ コードでロードされるライブラリにありました。また、このパスをコードにハードコーディングできるかどうかも疑問です: package_name-1、いつの日か package_name-2 になる可能性があるようです :)

于 2013-07-25T14:54:34.057 に答える