如何检测Android应用是32位还是64位

news/2024/11/28 22:44:47/

目录

1、前言

2、检测App

 3.应用是否包含 64 位库?


1、前言

从Android 4.4宣布支持64位系统以来,各终端方案厂商逐步推出了各自的64位soc解决方案。Google为了兼容之前32位系统的应用,在64位系统上也实现了对32位应用的支持。那么问题就来了,在一个64位系统的Android手机上如何检测应用是运行在32位还是64位环境?

2、检测App

任何一个Android手机用户对APK文件肯定不会陌生,它是一个Android应用资源的封装文件。当你下载安装一个App之后,从Launcher启动该应用,系统会由Zygote分叉出一个子进程来提供App运行的虚拟机和Runtime环境。与32位系统不同的是,在64系统中会同时存在两个Zygote进程——zygote和zygote64,分别对应32位和64位应用。所以,要进行App的32/64位检测,只需要看它的父进程是哪个Zygote即可。

下面的例子通过App的PPID信息——2759,检测出了终端系统中所有的64位应用,且该方式无需root权限

$ adb shell ps |grep zygote
root      2759  1     2131692 87052          0 0000000000 S zygote64
root      2760  1     1574048 53740          0 0000000000 S zygote$ adb shell ps|grep 2759
root      2759  1     2131692 87052          0 0000000000 S zygote64
system    3257  2759  2339956 158936          0 0000000000 S system_server
radio     3393  2759  1601272 96220          0 0000000000 S com.android.phone
u0_a85    3407  2759  1564856 88740          0 0000000000 S com.android.inputmethod.latin
u0_a20    3422  2759  1970228 167288          0 0000000000 S com.android.systemui
u0_a7     3769  2759  1548288 63384          0 0000000000 S android.ext.services
u0_a13    3958  2759  1896704 131832          0 0000000000 S com.android.launcher3
u0_a6     3989  2759  1562416 94060          0 0000000000 S android.process.acore
u0_a17    4046  2759  1563300 88504          0 0000000000 S android.process.media
u0_a28    4112  2759  1555640 82004          0 0000000000 S com.android.quicksearchbox
u0_a64    4157  2759  1554484 72944          0 0000000000 S com.android.calendar
u0_a57    4215  2759  1572160 83532          0 0000000000 S com.android.email
u0_a77    4231  2759  1554408 67192          0 0000000000 S com.android.exchange
u0_a5     4279  2759  1549136 66072          0 0000000000 S com.android.onetimeinitializer
u0_a10    4299  2759  1552472 74088          0 0000000000 S com.android.providers.calendar
u0_a94    4325  2759  1869948 112984          0 0000000000 S com.android.soundrecorder
system    4345  2759  1561180 73680          0 0000000000 S com.sprd.engineermode
u0_a15    4887  2759  1874612 106196          0 0000000000 S com.android.packageinstaller
u0_a73    5133  2759  2425904 205912          0 0000000000 S com.android.browser

 3.应用是否包含 64 位库?

首先要确保这两个文件夹中都有原生库。总结如下:

平台32 位库文件夹64 位库文件夹
ARMlib/armeabi-v7alib/arm64-v8a
x86lib/x86lib/x86_64

第一步  打开自己要检测的APP

查看 lib 文件夹,可以在其中找到所有“.so”文件。如果在的应用中找不到任何“.so”文件,则说明该应用已经准备好相应的库,无需采取进一步措施。如果看到 armeabi-v7a 或 x86,则说明有 32 位库。

检查是否在 arm64-v8a 或 x86_64 文件夹中也有类似的“.so”文件。

如果您没有任何 arm64-v8a 或 x86_64 库,则需要更新编译流程以开始在 APK 中编译并打包相应工件。

第二步 添加64位的库就OK

// Your app's build.gradleapply plugin: 'com.android.app'android {compileSdkVersion 27defaultConfig {appId "com.google.example.64bit"minSdkVersion 15targetSdkVersion 28versionCode 1versionName "1.0"            ndk.abiFilters 'armeabi-v7a'//32位,'arm64-v8a'//64位 ,'x86'//32位,'x86_64'//64位// ...然后点击编译就可以啦~
接着在用第一步判断就可以发现应用是否支持64位代码了


http://www.ppmy.cn/news/141098.html

相关文章

数据结构笔记5数组

数据结构笔记5数组 前言 数据结构笔记4串 写一下数组的笔记。 思维框架图 习题 选择题 \7. 设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间&…

如何选购自己满意的主板(建议观看)

主板是电脑的核心组件之一,其作用就像人的“身躯”一样,用于连接CPU,内存,硬盘,显卡和光驱等硬件。因此我们选择一个合适的主板非常重要。 一:主板芯片组芯片组是主板的核心部件,其型号直接影响…

usb3.0 ssd 测试软件,板载性能:SATA3及USB3.0接口测试

●板载性能:SATA3及USB3.0接口测试 A85芯片组的原生SATA3接口史无前例的提升至8个,这对于对硬盘速度有着苛刻要求的用户有着非凡的意义。目前,只有A85和A75芯片组采用了全SATA3的SATA接口配置。尽管其它芯片组有第三方桥接芯片所支持的SATA3接口&#xf…

安装wsl2以及迁移镜像至d盘

1、查看本地wsl版本号 C:\Users\jiangcheng> wsl -v -l WSL 版本: 1.2.5.0 内核版本: 5.15.90.1 WSLg 版本: 1.0.51 MSRDC 版本: 1.2.3770 Direct3D 版本: 1.608.2-61064218 DXCore 版本: 10.0.25131.1…

基于轻量级YOLOv5n/s/m三款模型开发构建基于无人机视角的高空红外目标检测识别分析系统,对比测试分析性能

有关于无人机目标检测和红外场景下的目标检测的项目在我之前的文章中都有实践经历了,但是将无人机和红外场景结合的目标检测项目还是很少的,本文的核心想法就是基于高空无人机场景开发构建目标检测系统。 前面相关博文如下,感兴趣的话可以自…

MongoDB-04-常用命令记录

命令练习:https://www.cnblogs.com/DDgougou/p/10200281.html类型用途库相关命令show dbs查看所有库db查看在当前在那个库下use 库名创建、切换到该库db.dropDatabase()删除库,必须使用use切换到该库下集合(表)相关命令插入数据in…

了解Chatgpt key token计价或扣费说明

OpenAI的定价是基于token的,token是用于自然语言处理的词的片段。对于英文文本,1个token大约是4个字符或0.75个单词。 你的请求的token数是由你的提示和你请求的回复长度决定的。 通常1000个Token约等于750个英文单词或者400~500个汉字。 …

佳能MG2580S打印机进纸不顺畅维修

用户送来一台佳能MG2580彩色喷墨打印机说是打印走纸不是很顺畅,接下来我们就来看看是如何不顺畅的; 这不就是卡纸么!? 那么就开始检测维修吧,根据观察总感觉像是机器内部有异物,打开盖子看一下吧&#xf…