2

Android NDKを使用すると、(ネイティブCコードから)ロードされた.soライブラリのリストを取得できますか?Android版のiOS関数_dyld_image_count()/ _ dyld_get_image_name()を探しています。

また、特定の関数を含む.soのライブラリ名を取得することもできます(iOSではこの関数はdladdr()です)。

4

2 に答える 2

1

はい、これを入手できますここにサンプルがあります

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...

    }

これを試してみてくださいこれはあなたを助けるかもしれません

于 2012-12-21T13:03:22.823 に答える
1

ファイルを読み取って解析/proc/self/mapsできます。これには、アプリケーション用にロードされた各共有オブジェクトのアドレスが含まれています。selfアプリケーションが独自の情報を読み取るのに役立ちます。

Android NDKでも利用可能なnmコマンドラインユーティリティは、特定の共有オブジェクトファイルから利用できるシンボルを表示できます。それがどのように実装されているかを見て、同じライブラリを利用しようとすることはできますが、それは簡単なことではありません。

于 2012-12-21T13:19:30.480 に答える