ADB命令行在安装过程中挂起(PhoneGap)

13

我的 Phonegap 应用无法加载到我的 Android 设备上(即使 HelloWorld 默认应用程序也无法加载)。

一切都很好,直到今天。这是我的控制台日志:

***\>adb devices
List of devices attached
4c05609b        device

***\>phonegap run --device -V android
[phonegap] detecting Android SDK environment...
[phonegap] using the local environment
[phonegap] compiling Android...
[phonegap] Generating config.xml from defaults for platform "android"
[phonegap] Compiling app on platform "android" via command "cmd" /c ***\platforms\android\cordova\build
[phonegap] Platform "android" compiled successfully.
[phonegap] successfully compiled Android app
[phonegap] installing app onto device
[phonegap] Generating config.xml from defaults for platform "android"
[phonegap] Running app on platform "android" via command "cmd" /c ***\platforms\android\cordova\run --device

它只是坐在那里一直显示“运行中”...

我已经打开了另一个终端窗口并运行了adb logcat,在某个时间点(也许是在最后一行被打印出来的10-15秒之后),它就停止记录日志。结束该进程并随后调用adb logcat会导致更多的挂起(根本没有日志记录)。

因此,我必须执行kill-server,start-server才能跳出这个无休止的挂起状态,在这一点上,phonegap进程终止并显示:

       [error] An error occurred while running the android project.
***\platforms\android\cordova\node_modules\q\q.js:126
                    throw e;
                          ^
ERROR: Failed to launch application on device: ERROR: Failed to install apk to d
evice: Error executing "adb -s 4c05609b install -r "***\platforms\android\bin\Po
ached-debug-unaligned.apk"": protocol failure

我已经尝试过:

  • 在C:\Users\Name中删除我的.cordova文件夹
  • 直接运行adb install(不使用phonegap)
  • 部署到模拟器(同样的问题)
  • 拔出/重新插入设备
  • 重启所有设备
  • 在设备上切换“开发者模式”并取消USB调试权限

我已经没有更多的想法了!

非常感谢任何提示或线索。

ADB版本1.0.31

Galaxy S3运行Android v4.3


编辑:

部署到模拟器声称已成功完成,但应用程序从未打开,并且不会显示在模拟器内的应用程序列表中。所以我无法在模拟器上实际测试它。

真的需要一些帮助。


编辑2:

在进一步尝试之后,我发现我的问题可以更具体地描述为“当我尝试与设备交流时,ADB挂起(冻结)”。 我已经确定这一点,因为 adb shell adb install adb push 都以上述方式失败。没有错误,只是有限等待。

adb logcat adb devices 和其他读取函数都可以正常工作,直到上述写入函数之一挂起,此时我需要进行 adb kill-server TASKKILL 以再次使 adb logcat 正常工作。

不确定这些附加信息是否有所帮助,但你可以看一下。我尚未尝试的最后一件事是按照此人的建议对我的手机进行出厂设置。如果我不能很快找到解决方案,我将尽力备份自己的数据并尝试此选项...

在这成为我的最后选择之前,请救救我!


几个问题:您使用的是什么设备?它运行的是哪个版本的安卓系统?您最近更新了操作系统吗,或者您的USB调试设置是否更改了? - Dawson Loudon
我会将其作为编辑包含,但它是运行Android 4.3的S3。我没有做任何更改。它运行良好了几个星期,然后突然(中午)开始卡顿。此后,我已经随机安装了HelloWorld应用程序,但每30次左右只有一次成功,并且完全不可靠。 - isick
你尝试过重新启动设备吗?我在我的Galaxy Grand上遇到了同样的情况。我重新启动了设备,之后就没有任何问题了。 - Anand
是的,我重新启动了设备。我还开始使用第二个设备(运行4.2的Nexus S),它也有同样的问题。问题现在似乎更加零散。它以上述方式失败,但经过几次(不连续和看似任意数量的)adb kill-server调用后,我可以将构建发送到我的手机。仍然想知道根本原因是什么... - isick
我在虚拟机内工作时也遇到了这个问题。有趣的是,我有另一个非常相似的虚拟机用于不同的项目,但使用同一设备时却没有出现相同的行为问题。 - pgraham
7个回答

16

如果这能帮到其他人,我曾经遇到一个类似的问题,即ADB install -r "apk path" 会无限期地卡住。

我排除了许多问题,并发现这是由于我的USB线长度引起的。

我使用了一个USB延长线来连接我的设备。我的设备线和USB延长线的总长度导致了这个问题。移除延长线可以解决该问题,最终我更换了一个较短的延长线作为最终解决方案。


5
我这里几乎要哭了,一直在试图修理我的东西,然后我看到了你的评论并尝试使用其他的电缆... 成功了。我肯定会为此给你买一杯啤酒。 - Tomaz Canabrava
1
太棒了!很高兴我能帮到你 :) - Trey
1
@TomazCanabrava 如果这个答案有帮助,请投票支持! :) - amfcosta
1
将同一USB电缆插入不同的端口解决了我的问题。 - BlueRaja - Danny Pflughoeft
更换电缆解决了我的问题,但我发现新的电缆需要我以某种特定的方式握住它,才能让设备识别到它已经被插入。这可能是由于电缆或端口有点不稳定,所以我设置了通过 WIFI 安装(请参见 https://futurestud.io/tutorials/how-to-debug-your-android-app-over-wifi-without-root),现在没有电缆会引起问题!到目前为止好多了。 - Visualise

9
问题似乎会自行解决。正如其他人所建议的,任意组合ADB kill-server、重新启动设备和重新安装SDK似乎可以缓解问题(即使只是为了推送几次)。
我仍然不知道是什么原因导致了这个问题,尽管迷信地相信上述任意组合可以“修复”它,但我不确定如何永久解决它。
对于未来阅读此文的人,除非有一个确定的解释,我的唯一建议就是花一个小时左右重新启动/重建您的开发环境...并确保购买一个耐用的压力球。

我曾经遇到过类似的问题,当我在搜索时,控制台处于挂起状态。当我研究完后回来时,大约等待了2分钟后它开始安装。 - Jay Snayder
在等待了几分钟后,我按下了Ctrl+C。adb终端显示成功,并再次可用。 - Tobi G.

3

这里有一些可尝试的方法:

  1. 你是否使用工作电脑?请确保你拥有USB写权限。同时,尝试更换不同的USB端口和数据线。你的设备上是否安装了最新的USB驱动程序?
  2. 尝试更新SDK工具。或者可能某些文件已经损坏,重新安装可能会解决问题。
  3. 你的设备上是否有足够的空间?
  4. 在两个设备中是否都开启了“未知来源”选项?
  5. 你的目标Android版本是哪个?

2

建议您尝试重启设备,就像其他人建议的那样。从我的经验来看,有时候杀死 adb 进程,然后运行 cordova run 命令可以神奇地帮助解决问题。


在任务管理器(Windows)中结束adb进程,然后执行adb kill-server,再执行adb start-server,最后拔掉/插入设备对我很有帮助。 - Hugo H

0
在我的情况下,adb 似乎卡住了,但实际上从 Mac 到模拟器的数据传输非常缓慢:
$ adb push platforms/android/build/outputs/apk/android-debug.apk /data/local/tmp/
150 KB/s (15587200 bytes in 101.223s)

在连接 USB 真实设备时速度要快得多。不知道为什么...


0

我曾经遇到过同样的问题(使用cordova / 在旧设备上测试),即在安装期间出现挂起。

尝试直接从命令行运行adb install ...

adb [-s <deviceID>] install <apk>

...并且相同的问题,因此不是cordova特定的....

打开了Android设备监视器(ADM)...

..sdk\tools>monitor

然后再次从cmd行运行安装,并看到logcat消息说包是sdk 16 / 设备是15...doh!

所以回到AndroidManifest.xml并将android:minSdkVersion更改为15,一切都恢复正常了-安装正常工作。

(问题出现是因为我安装了其他东西,它已更改了minSdkVersion,然后删除了其他东西,从未重置minSdkVersion)

因此,可能您的构建的设备sdk / Android版本过低。如果不是这样,当您从命令行启动安装时,ADM logcat输出可能会指示问题所在。


-1
通常情况下,重新插拔设备可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接