我正在开发一个应用程序,该应用程序确定设备上安装的所有应用程序使用的本机代码架构和本机库。它类似于运行以下命令。
aapt dump badging <file.apk location>
包管理器不提供有关本机代码(如本机代码)或本机共享库的信息。我可以使用以下代码检索目标应用程序使用的本机共享库:
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...
}
我所需要的只是应用程序包使用的本机代码架构。我想从应用程序包中确定兼容的本机代码架构。