安卓强制安装32 或者 64位软件方法
引言:
起因是,我在帮软件找bug时,需要把64位的软件转换成32位,进而更好的找bug,首先APK文件本身是一个压缩包,里面包含应用的代码、资源、清单文件等。当应用支持多ABI时,APK中可能会有针对不同CPU架构的本地库(如armeabi-v7a,arm64-v8a,x86等)。当用户安装APK时,系统会根据设备的架构选择对应的本地库进行安装。但是,如果用户通过adb指定了abi参数,那么会强制安装该abi对应的版本,即使设备本身是64位的,也可能安装32位的库
1、Android 神器工具软件【准备环节】
1、Termux【需要科学上网下载】
官网:Termux | F-Droid - Free and Open Source Android App Repository
2、MT管理器
官网:MT管理器
2、熟悉adb指令
[]括起来的为内容可更改
-
获取APK路径:【可以查看想要获取的APK包名】
输入命令获取APK安装路径:adb shell pm path [org.yjmobile.zmxy]
输出类似:
package:/data/app/~~74qWlDIDMuJYbJV9khC9KQ==/org.yjmobile.zmxy--xGJXnkgz8TgXdIfzh9A_Q==/base.apk
。 -
提取APK文件:【会把APK安装到执行这个命令的路径下 名字为zmxy_32.apk】
使用adb pull
拉取APK到本地:adb pull /data/app/~~74qWlDIDMuJYbJV9khC9KQ==/org.yjmobile.zmxy--xGJXnkgz8TgXdIfzh9A_Q==/base.apk [zmxy_32.apk]
-
下载APK文件:【强制指定abi】
adb install --abi armeabi [造梦西游OL_32位.apk]
–abi 强制指定安装时使用的ABI类型,覆盖系统默认选择
armeabi
是32位的,arm64-v8a
是64位的,armeabi-v7a
也是32位的
3、【重点】强制安装32位的 两种方法
1. 通过 Termux
+ Android Debug Bridge (adb) for Termux
-
原理:在手机上安装终端模拟器(如Termux),再通过Termux运行
adb
命令。 -
安装
adb
:pkg install android-tools
-
连接本机ADB(需Root权限):
adb devices # 此时会显示手机自身为设备 adb install --abi armeabi-v7a [安装包路径: 比如/sdcard/Download/app.apk ]
2. 通过Termux
+ pm
+ MT管理器
-
提取安装包
先把安装包放在一个喜欢的地方,比方说MT管理器提取安装包的路径
-
权限管理
在Termux中敲如下命令,获取允许访问手机存储权限
termux-setup-storage
-
进入Root环境【
exit
退出(返回普通用户)】su
-
直接安装 APK
# 强制安装 APK 并指定 ABI pm install --abi armeabi /sdcard/MT2/apks/造梦西游OL_15.2.1.apk
最终指令:
总结
需要读者需要一定的Linux指令基础,比方说在用adb安装时,虽然不用进入root环境,但你得先找到安装包所在的路径,再在目录下以相对引用的方式安装