私の32ビットARMのAndroidアプリケーションには、ネイティブコードでdlopen()という.soファイルが付属しています。これはうまく動作し、私は/data/data/com.domain.app/lib/libX.so
の場所にそれらをdlopenすることができます。64ビットAndroidアプリケーションのインストール後にlib /ディレクトリが見つかりません
私のパッケージ(arm64-v8a)に64ビットのバイナリを追加し、それを64ビットのAndroidデバイスにインストールすると、/data/data/com.domain.app/lib
ディレクトリは存在しません。
/data/app/com.domain.app-1/lib/arm64
そして、「-1」サフィックスさらに悪いことに:
は、いくつかの調査の後、私は、64ビットのAndroidデバイス上の.soファイルを別のディレクトリに終わることがわかりました変化し、「-2」などになる可能性があります。
これは、アプリケーションのホームディレクトリにインストールされてしまったかどうか確認する方法です:
$ adb shell run-as com.steenriver.biplane '/system/bin/sh -c "pwd"' /data/data/com.steenriver.biplane
$ adb shell run-as com.steenriver.biplane '/system/bin/sh -c "ls -al"' drwxrwx--x u0_a108 u0_a108 2017-01-17 15:04 app_.gpg.classloader drwxrwx--x u0_a108 u0_a108 2017-01-17 15:04 cache drwxrwx--x u0_a108 u0_a108 2017-01-17 15:04 code_cache drwxrwx--x u0_a108 u0_a108 2017-01-17 15:04 files
32ビットデバイスは、ここに記載されているlib/
エントリを持つことになります。
Androidの呼び出しが可能です(Javaまたはネイティブコードのどちらでも).soファイルがどこに終わったかを教えてくれるので、私はそれらをdlopenできますか?