赞
踩
通过adb install apk时经常遇到一些安装失败的情况,遇到坑,好在最后都解决了。下面对这类问题进行汇总,可能还会不断更新吧。(没有人敢确定,今后的开发测试过程中不会又遇到类似的情况)。
问题的解决不是我独自想的,为表示感谢或对知识的尊重,首先将参考文献列出。
参考文献:
https://blog.csdn.net/zsr0526/article/details/53039050 INSTALL_FAILED_USER_RESTRICTED错误
https://blog.csdn.net/liuwanyouyue/article/details/78476907 Apk安装失败原因
https://blog.csdn.net/xiaoyaozaimz/article/details/78555667 INSTALL_FAILED_TEST_ONLY运行报错
https://www.cnblogs.com/H-BolinBlog/p/5402652.html INSTALL_FAILED_UPDATE_INCOMPATIBLE
INSTALL_FAILED_USER_RESTRICTED
意思为:用户没有操作权限。
问题最可能出现的手机上,【打开开发者选项--打开USB安装】,即允许安装外部应用。
INSTALL_FAILED_TEST_ONLY
意思为:APK为测试版,不允许安装
出现的情况最可能是:使用android studio运行时可以安装,但将APK包拷到手机存储卡上进行安装时出现。
可能原因:
1、gradle文件中使用了测试版本
- buildscript {
- ...
- dependencies {
- classpath 'com.android.tools.build:gradle:2.2.0-alpha3'
- }
- ...
- }
将-alpha3去掉即可,修改后的代码略了。
2、AndroidMainfest.xml有测试版的设置
- <appliaction
- ...
- android:testOnly="true"
- ...>
- ....
- </application>
当然去掉即可
3、使用adb命令行的参数
adb install -t apk
参数为 -t 我猜测其含义为-test的意思。
INSTALL_FAILED_UPDATE_INCOMPATIBLE
意思为:更新不兼容
最可能出现的原因是:APK的签名与之前安装过的APK(两者的包名一样)签名不一致。即为手机系统认为明明是同一个应用(包名一致),可签名不一致,为了安全起见,禁止安装。
我当时遇到的情况是:测试加固之前APK是否正常使用,然后使用手机上点应用图标的方式删除了该APP;然后对APK进行加固,并重新安装时,报上述错误。
解决方案(不适用我遇到的情况):
1、更改包名。借助开发IDK, 以android studio为例
2、对于已经Root手机,解决方案可去见前面所列的【参考文献】。这里我略去。
3、适用我当时遇到的情况的解决方案:使用adb uninstall apk包名的方式删除应用。(多人说,在手机点击删除应用的方式不干净彻底)
我当时使用这个方法时,系统提示并没有该应用。【表情就是:什么鬼!!!既然没有该应用,为什么不让我安加固后的。不是删除不彻底吗?】至于什么,原理是怎样的我不清楚。那怎么?办法还是有的。我将加固之前的APK重新安装了一遍,然后再使用adb uninstall 进行删除。最后就可以使用adb install 加固后的apk。开心!!
刚才提到的签名问题,即加固之前与之后可能导致签名不一致,我参见了【参考文献】中的一种说法,并猜测的。即“APK安装失败原因”。
后面,将是一条很长很长的路。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。