问题描述
Some time ago I had trouble with my Huawei P30 and ADB/Android Studio installing APKs.事实证明我正在使用过时版本的库/工具。解决了,愉快地继续前进。
现在我的手机已升级到Android 10,我面临的问题与以前非常相似,但是我似乎无法以相同的方式来解决(通过更新库)。我尝试安装每种工具的多个版本,进行Android Studio和Android相关工具的全新安装,但似乎无济于事。
Android Studio
当前行为是Android Studio生成APK只是为了以后无限期地卡在“安装”步骤中。在少量测试中,它会失败。
ADB
我还尝试使用adb
从命令行安装APK,但结果不一。
$ adb version
Android Debug Bridge version 1.0.41
Version 30.0.4-6686687
运行Android Studio时,安装该应用程序要么失败,要么无限期挂起,就像在Android Studio中一样:
$ cd .../platform-tools
$ adb start-server
* daemon not running; starting Now at tcp:5037
* daemon started successfully
$ adb install C:\...\example.apk
Performing Streamed Install
adb: Failed to install C:\...\example.apk
$ adb install C:\...\example.apk
Performing Streamed Install
^^^ Hangs there forever
现在,事情变得有趣了,如果我关闭Android Studio,则安装APK大约50%的时间会成功安装(另一半安装失败并重新启动电话连接):
$ cd .../platform-tools
$ adb kill-server
$ adb start-server
* daemon not running; starting Now at tcp:5037
* daemon started successfully
$ adb install C:\...\example.apk
Performing Streamed Install
adb: Failed to install C:\...\example.apk
$ adb kill-server
$ adb start-server
* daemon not running; starting Now at tcp:5037
* daemon started successfully
$ adb install C:\...\example.apk
Performing Streamed Install
Success
$ adb kill-server
$ adb install C:\...\example.apk
* daemon not running; starting Now at tcp:5037
* daemon started successfully
Performing Streamed Install
Success
$ adb kill-server
$ adb install C:\...\example.apk
* daemon not running; starting Now at tcp:5037
* daemon started successfully
Perform
adb: Failed to install C:\...\example.apk
我可以轻松执行其他操作,例如将文件推送到手机中或卸载应用程序。到目前为止,该问题仅与安装APK有关:
$ adb shell pm uninstall com.example
Success
$ adb push C:\...\app-debug.apk /sdcard/APKs
C:\DropBox...\app-debug.apk: 1 file pushed,0 skipped. 15.2 MB/s (31131771 bytes in 1.956s)
为什么安装应用程序失败或成功,就像掷硬币一样?这可能是驱动程序问题吗? Android Studio如何干扰单独运行adb工具的成功率?
解决方法
尝试使用 ./gradlew installDebug
安装您的应用程序。它可能会给出失败的原因
您还可以使用 Android 的 Studio 用户界面:
,尝试禁用USB调试模式,然后在手机上再次启用它。有时,将其设置为启用时,它会被窃听并像禁用它一样起作用
,如果设备上存在该软件包,则可以先将其卸载:
检查您的应用的程序包名称是否存在
$ adb shell dumpsys package com.package.name
- 如果存在:
$ adb shell pm uninstall --user 0 com.package.name
如果卸载失败,则该应用程序可能是设备管理员或设备所有者。
- 如果不存在:
尝试更改Android Studio的安装标志: 运行>编辑配置>安装标志
pm install --user 0
注意:该命令为
pm install --user 0
,没有adb shell
更新:
让我们假设该应用程序从未安装在设备上。
- 首次安装
adb install myapp.apk
命令将成功执行,并且将安装应用程序。
- 第二次安装
adb install myapp.apk
该命令将失败,因为您已经安装了软件包com.package.name
第二次安装时,应先卸载:
adb uninstall com.package.name
adb install myapp.apk
或强制重新安装:
adb install -r myapp.apk
,
尝试将adb
更新到最新版本
可以解决:adb install xxx.apk
停留在执行流式安装中
更多详细信息,请参见:android - Error: ADB exited with exit code 1 Performing Streamed Install - Stack Overflow