Android NDKを使用すると、(ネイティブCコードから)ロードされた.soライブラリのリストを取得できますか?Android版のiOS関数_dyld_image_count()/ _ dyld_get_image_name()を探しています。
また、特定の関数を含む.soのライブラリ名を取得することもできます(iOSではこの関数はdladdr()です)。
Android NDKを使用すると、(ネイティブCコードから)ロードされた.soライブラリのリストを取得できますか?Android版のiOS関数_dyld_image_count()/ _ dyld_get_image_name()を探しています。
また、特定の関数を含む.soのライブラリ名を取得することもできます(iOSではこの関数はdladdr()です)。
はい、これを入手できますここにサンプルがあります
try {
Set<String> libs = new HashSet<String>();
String mapsFile = "/proc/" + android.os.Process.myPid() + "/maps";
BufferedReader reader = new BufferedReader(new
FileReader(mapsFile));
String line;
while ((line = reader.readLine()) != null) {
if (line.endsWith(".so")) {
int n = line.lastIndexOf(" ");
libs.add(line.substring(n + 1));
}
}
Log.d("Ldd", libs.size() + " libraries:");
for (String lib : libs) {
Log.d("Ldd", lib);
}
} catch (FileNotFoundException e) {
// Do some error handling...
} catch (IOException e) {
// Do some error handling...
}
これを試してみてくださいこれはあなたを助けるかもしれません
ファイルを読み取って解析/proc/self/maps
できます。これには、アプリケーション用にロードされた各共有オブジェクトのアドレスが含まれています。self
アプリケーションが独自の情報を読み取るのに役立ちます。
Android NDKでも利用可能なnmコマンドラインユーティリティは、特定の共有オブジェクトファイルから利用できるシンボルを表示できます。それがどのように実装されているかを見て、同じライブラリを利用しようとすることはできますが、それは簡単なことではありません。