Android 如何找出给定.apk中的哪个体系结构版本用于给定的应用程序安装?

Android 如何找出给定.apk中的哪个体系结构版本用于给定的应用程序安装?,android,android-ndk,installation,Android,Android Ndk,Installation,单个.apk文件可能包含针对不同体系结构(如x86、x86-64等)的NDK二进制文件。我假设,在给定设备上安装时,根据设备架构自动选择相应的二进制文件。但是,由于例如64位设备通常与32位软件兼容,因此我希望确保安装了相应的二进制文件 编辑: -我指的是用于测试目的的本地安装。 -我知道您可以有不同的.apk,每个都适用于一个特定的体系结构。假设存在一个包含所有体系结构目标的单一目标。在安装过程中指定ABI: 使用--ABI选项,在安装带有adb install的应用程序时,可以显式指定ABI

单个
.apk
文件可能包含针对不同体系结构(如x86、x86-64等)的NDK二进制文件。我假设,在给定设备上安装时,根据设备架构自动选择相应的二进制文件。但是,由于例如64位设备通常与32位软件兼容,因此我希望确保安装了相应的二进制文件

编辑: -我指的是用于测试目的的本地安装。 -我知道您可以有不同的
.apk
,每个都适用于一个特定的体系结构。假设存在一个包含所有体系结构目标的单一目标。

在安装过程中指定ABI: 使用
--ABI
选项,在安装带有
adb install
的应用程序时,可以显式指定ABI

对于Aarch32:

adb安装--abi-armeabi-v7a.apk

对于Aarch64:

adb安装--abi arm64-v8a.apk

参考:

检查正在运行的进程的ABI: 这可能被认为是一种黑客行为,但对我来说是有效的

如果您已经安装了
.apk
并且不想重新安装,您可以检查感兴趣的
.apk
文件中
.so
文件的名称(例如使用mc)。在我的例子中,它们位于
/lib/armeabi-v7a
/lib/arm64-v8a
下。然后,您可以在设备上运行应用程序(在我的例子中,AARC64上的Android Nougat)并执行以下操作:

cat/proc//maps|grep

对于安装了
--abi armeabi-v7a
选项的.apk,路径名为:

/data/app/

在安装过程中指定ABI: 使用
--ABI
选项,在安装带有
adb install
的应用程序时,可以显式指定ABI

对于Aarch32:

adb安装--abi-armeabi-v7a.apk

对于Aarch64:

adb安装--abi arm64-v8a.apk

参考:

检查正在运行的进程的ABI: 这可能被认为是一种黑客行为,但对我来说是有效的

如果您已经安装了
.apk
并且不想重新安装,您可以检查感兴趣的
.apk
文件中
.so
文件的名称(例如使用mc)。在我的例子中,它们位于
/lib/armeabi-v7a
/lib/arm64-v8a
下。然后,您可以在设备上运行应用程序(在我的例子中,AARC64上的Android Nougat)并执行以下操作:

cat/proc//maps|grep

对于安装了
--abi armeabi-v7a
选项的.apk,路径名为:

/data/app/

运行:adb shell 运行:dumpsys包包| grep

它将为您提供外部本机目录的路径,即/data/app//lib/YOUR_INSTALLED_lib_架构 否则,您可以使用此应用程序,它将提供应用程序中打包的库的详细信息以及应用程序中安装的libs的体系结构。

Run:adb shell 运行:dumpsys包包| grep

它将为您提供外部本机目录的路径,即/data/app//lib/YOUR_INSTALLED_lib_架构
否则,您可以使用此应用程序,它将提供应用程序中打包的库的详细信息以及应用程序中安装的libs的体系结构。

检查
。因此运行进程的
文件似乎只在根设备上工作(这不是我的情况),但解决方案看起来有效,谢谢!检查
。因此运行进程的
文件似乎只能在根设备上工作(这不是我的情况),但解决方案看起来有效,谢谢!