adb 安装出现 Failure [INSTALL_FAILED_VERIFICATION_FAILURE] 的解决方法

对于有些手机,比如 Lenevo A808t,在用 adb install -r 安装 apk 包时,会报如下错误,

Failure [INSTALL_FAILED_VERIFICATION_FAILURE]

参考 StackOverflow 后问题没有得到解决

由于在 android studio 下可以编译安装成功,发现 android studio 编译安装 apk 包的命令如下:

$ adb push /home/user/Documents/project/xxx/app/build/outputs/apk/app-server_local-debug.apk /data/local/tmp/com.xxx.yyy
$ adb shell pm install -r "/data/local/tmp/com.xxx.yyy
    pkg: /data/local/tmp/com.xxx.yyy
Success

首先将 apk 包 push 到 /data/local/tmp 目录下,然后使用 pm 安装命令 adb shell pm install -r 安装,便可以安装成功了。

最后给出简化版解决方案:

# 首先将 apk push 到 /data/local/tmp/xx 目录下
>$ adb push xxx.apk /data/local/tmp/xxx

# 然后直接在 /data/local/tmp/xx 下安装
>$ adb shell pm install -r /data/local/tmp/xxx

为了简化上述安装操作,我使用 python 写了一个安装脚本,只需要输入 apk 包所在位置即可,调用命令如下:

>$ ./apkinstaller.py /path/to/apkfile.apk
#!/usr/bin/python

import sys
import os
import re

# sys.argv 用于存储传递给 python 脚本的参数
# 脚本名:    sys.argv[0]
# 参数1:     sys.argv[1]
# 参数2:     sys.argv[2]
argslen = len(sys.argv)

# 判断是否指定了要安装的 apk 包路径
if argslen == 1:
    print "Usage: apkinstaller.py [APK_FILE]"
    print "Install apk to your mobile"
    sys.exit(0)

# 获取到 apk 包路径
apk_path = sys.argv[1]

# 判断 apk 文件是否存在
if not os.path.exists(apk_path):
    print apk_path + " : no such apk file"
    sys.exit(0)

# 截取到 apk 文件名
apk_file = re.findall(".*/(.+\.apk)", apk_path)[0]

print
print 'installing ' + apk_file
print

# python 调用 shell 脚本进行安装
os.system('adb push ' + apk_path + ' /data/local/tmp/' + apk_file)
os.system('adb shell pm install -r /data/local/tmp/' + apk_file)

猜你喜欢

转载自blog.csdn.net/liangjiu2009/article/details/78411835