单个 .apk
文件可能包含针对不同体系结构(例如x86,x86-64等)的NDK二进制文件。我想,在给定设备上安装时,将根据设备体系结构自动选择相应的二进制文件。但是,由于例如64位设备通常与32位软件兼容,因此我想确保已安装相应的二进制文件。
编辑:
-我的意思是出于测试目的的本地安装。
-我知道您可以有不同的.apk
,每个都针对一种特定的体系结构。假设只有一个包含所有架构目标。
答案 0 :(得分:0)
使用adb install
选项通过--abi
安装应用程序时,您可以显式指定ABI。
对于Aarch32:
adb install --abi armeabi-v7a <YOUR_APK_FILE>.apk
对于Aarch64:
adb install --abi arm64-v8a <YOUR_APK_FILE>.apk
这可能被视为黑客,但是对我有用。
如果您已经安装了.apk
并且不想重新安装它,则可以检查感兴趣的.so
文件中的.apk
文件的名称(例如,使用mc) 。就我而言,它们位于/lib/armeabi-v7a
和/lib/arm64-v8a
下。然后,您可以在设备上运行应用程序(在我的情况下为aarch64上的Android Nougat)并执行以下操作:
cat /proc/<PID_OF_YOUR_RUNNING_APP>/maps | grep <NAME_OF_SO_FILE>
对于使用--abi armeabi-v7a
选项安装的.apk,路径名是:
/data/app/<APP_NAME>/lib/arm/<NAME_OF_SO_FILE>
带有--abi arm64-v8a
选项:
/data/app/<APP_NAME>/lib/arm64/<NAME_OF_SO_FILE>
proc文件系统的参考:http://man7.org/linux/man-pages/man5/proc.5.html
答案 1 :(得分:0)
运行:adb shell 运行:dumpsys package软件包| grep
它将为您提供到外部本机目录的路径,即/ data / app // lib / YOUR_INSTALLED_LIB_ARCHITECTURE 另外,您可以使用https://play.google.com/store/apps/details?id=com.xh.nativelibsmonitor.app这个应用程序,它将提供应用程序中打包的库的详细信息以及应用程序中安装的库的体系结构。