高版本安卓安装低版本不兼容app
我想在自己安卓15的手机上安装一个低版本的游戏 app (com.popcap.pvz_na.apk),但是安装包提示不兼容,无法安装。
应用未安装:应用与您的手机不兼容
然后我做了下面的尝试:
- adb 安装和 Install with Options
adb install --bypass-low-target-sdk-block ./test.apk
或者在 Install with Options 里选择 Bypass Low Target SDK Block 进行安装。
都是同样的报错:
com.xxx.xxx
INSTALL_FAILED_NO_MATCHING_ABIS:
INSTALL_FAILED_NO_MATCHING_ABIS:
Failed to extract native libraries, res=-113
- adb 指定 ABI 安装
adb install --abi armeabi xxx.apk
或者
adb install --abi armeabi-v7 xxx.apk
报错:
Performing Streamed Install
adb: failed to install xxx.apk:
Exception occurred while executing 'install':
java.lang.IllegalArgumentException: ABI armeabi not supported on this device
手机不支持 armeabi 和 armeabi-v7a。大概率只能在虚拟机里安装,不过我还想继续尝试。
- MT管理器修改 / apktool修改
使用 MT 管理器查看 apk 并修改后重新打包签名安装,或者使用 apktool 反编译修改后重新打包签名安装。二者效果是类似的。
java -jar apktool.jar d demo.apk -o demo java -jar apktool.jar b demo -o new_demo.apk
参考:https://www.yeyulingfeng.com/108924.html 使用MT管理器查看该 apk 的 lib 目录,发现只有 armeabi 目录,我把该目录重命名为 arm64-v8a,然后重新打包签名安装,可以成功安装,且可以打开。但是该 app 运行是会申请通讯录和存储权限,我即使同意了,app 似乎也无法识别到这些权限,导致无法进入。
然后打开 AndroidManifest.xml,发现该 app 申请的权限如下:
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.USE_CREDENTIALS"/>
<uses-permission android:name="com.android.vending.CHECK_LICENSE"/>
<uses-permission android:name="com.android.vending.BILLING"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
即使我是用 adb pm grant 命令授予了这些权限,app 依然无法识别到这些权限。
目前暂时未解决该问题。