安卓强制安装32 或者 64位软件方法

Source

安卓强制安装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指令

[]括起来的为内容可更改

  1. 获取APK路径:【可以查看想要获取的APK包名】
    输入命令获取APK安装路径:

    adb shell pm path [org.yjmobile.zmxy]
    

    输出类似:package:/data/app/~~74qWlDIDMuJYbJV9khC9KQ==/org.yjmobile.zmxy--xGJXnkgz8TgXdIfzh9A_Q==/base.apk

  2. 提取APK文件:【会把APK安装到执行这个命令的路径下 名字为zmxy_32.apk】
    使用adb pull拉取APK到本地:

    adb pull /data/app/~~74qWlDIDMuJYbJV9khC9KQ==/org.yjmobile.zmxy--xGJXnkgz8TgXdIfzh9A_Q==/base.apk [zmxy_32.apk]
    
  3. 下载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环境,但你得先找到安装包所在的路径,再在目录下以相对引用的方式安装