一、手机和apk位数相关
1.检测应用是运行在32位环境还是64位环境
当你下载安装一个App之后,从Launcher启动该应用,系统会由Zygote分叉出一个子进程来提供App运行的虚拟机和Runtime环境。与32位系统不同的是,在64系统中会同时存在两个Zygote进程——zygote和zygote64,分别对应32位和64位应用。所以,要进行App的32/64位检测,只需要看它的父进程是哪个Zygote即可。
adb shell ps|grep zygote
列出两个进程的PPID。
adb shell ps|grep PPID
通过过滤PPID的值查到终端所有的32/64位的应用。
2.判断手机是32位的手机还是64位的手机
判断标准:以指令集与cpu为最高优先级,若两者不一致再判断lib,有lib64则认为是64位手机。
1⃣️查看CPU型号:adb shell cat proc/cpuinfo
我的:
Processor : AArch64 Processor rev 2 (aarch64)
processor : 0
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 1
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 2
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 3
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd03
CPU revision : 4
processor : 4
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2
processor : 5
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2
processor : 6
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2
processor : 7
BogoMIPS : 3.84
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2
传送门:AArch64 是什么
划重点:
AArch64 64 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
AArch32 32 位执行状态,包括该状态的异常模型、内存模型、程序员模型和指令集支持
2⃣️指令集
ARM公司目前的指令集有ARMv5、ARMv6、ARMv7、ARMv8...,
而构架则是很多,目前是Cortex-A5,Cortex-A7,Cortex-A8,Cortex-A9,Cortex-A12,Cortex-A15,Cortex-A53,Cortex-A57。
但构架年年换,指令集十年(或更久)一换,Cortex-A5,Cortex-A7,Cortex-A8,Cortex-A9,Cortex-A12,Cortex-A15都是基于ARMv7指令集的,32位的.
而最新的Cortex-A53,Cortex-A57则是基于ARMv8指令集的,这个是就是我们说的64位,代表着未来.
3.libs存放的是项目中用到的jar包,.so是用户层的动态库,是C++的函数库,ABI定义了.so文件如何运行在相应的系统平台上,从使用的指令集,内存对齐到可用的系统函数库。
当一个应用安装在设备上,只有该设备支持的CPU架构对应的.so文件会被安装
应该为每个ABI目录提供对应的.so文件,so库要和目录一一对应。
传送门:android项目框架中libs之**.so
网友评论