如何在Android棒棒糖中以编程方式知道应用程序的进程是32位还是64位?

Vik*_*ngh 4 android 32bit-64bit android-5.0-lollipop

众所周知,Android 5.0.64位支持。我有一个非常简单的问题。我们可以通过编程方式检查任何应用程序在哪种模式下运行,即32位或64位吗?例如:我的Nexus 9上运行了Facebook应用程序,那么我可以使用Android应用程序检查Facebook应用程序的进程是在32位模式还是64位模式下运行?

提前致谢!

小智 5

尝试System.getProperty("os.arch")。我还没有在 64 位 Android 上尝试过,但如果是 64 位设备,它必须返回类似“aarch64”的内容。

http://developer.android.com/reference/java/lang/System.html#getProperty(java.lang.String)


kak*_*ppa 5

在Nexus 5x中

String arch = System.getProperty("os.arch");
Run Code Online (Sandbox Code Playgroud)

退货

armv8l
Run Code Online (Sandbox Code Playgroud)

不是aarch64,我的代码坏了。然而,

root@bullhead:/ # uname -m
aarch64

root@bullhead:/ # getprop ro.product.cpu.abilist
arm64-v8a,armeabi-v7a,armeabi
Run Code Online (Sandbox Code Playgroud)

有线。所以我将代码更改为

boolean is64 = (android.os.Build.VERSION.SDK_INT >= 21) && System.getProperty("ro.product.cpu.abilist").contains("64");
Run Code Online (Sandbox Code Playgroud)

于2016-02-11更新

在Samsung Samsung Galaxy S5 Neo中,Android 5.1.1

String arch = System.getProperty("os.arch");
Run Code Online (Sandbox Code Playgroud)

返回,aarch64但它不是64位设备!!!

ro.product.cpu.abilist 退货 armeabi-v7a,armeabi

bool is64Bit =   System.getProperty("ro.product.cpu.abilist").contains("64");
Run Code Online (Sandbox Code Playgroud)

检查是唯一的检查方法。