2017-01-17 10 views
0

私の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できますか?

答えて

0

64ビットARMでは、ライブラリディレクトリにシンボリックリンクが作成されなくなりました。 .soのファイルを見つけるには、のonCreateで次のJavaコードを()を使用することができます

import android.content.pm.PackageInfo; 
import android.content.pm.ApplicationInfo; 
import android.content.pm.PackageManager; 
... 
ApplicationInfo ainfo = this.getApplicationContext().getPackageManager().getApplicationInfo 
( 
    "com.domain.app", 
    PackageManager.GET_SHARED_LIBRARY_FILES 
); 
Log.v(TAG, "native library dir " + ainfo.nativeLibraryDir); 

シンボリックリンクが提供され、32ビットARM、とこれを比較します

$ adb shell run-as com.steenriver.littlecrane '/system/bin/sh -c "pwd"' 
/data/data/com.steenriver.littlecrane 
$ adb shell run-as com.steenriver.littlecrane '/system/bin/sh -c "ls -al"' 
drwxrwx--x u0_a109 u0_a109   2017-01-18 11:48 app_.gpg.classloader 
drwxrwx--x u0_a109 u0_a109   2017-01-18 11:26 cache 
drwxrwx--x u0_a109 u0_a109   2017-01-18 11:48 code_cache 
drwxrwx--x u0_a109 u0_a109   2017-01-18 11:47 files 
lrwxrwxrwx root  root    2017-01-18 11:48 lib -> /data/app/com.steenriver.littlecrane-2/lib/arm 
関連する問題