32

尝试从 Eclipse 安装 .apk 时,无论是安装到 android 模拟器还是物理设备(通过 USB),我都会收到“无法在设备 '*' 上安装 *.apk:超时”错误。在模拟器或物理设备(三星 Galaxy S2,已植根)上找不到 .apk。

如果我避免使用 Eclipse,而只使用命令行,我也无法安装 .apk。

为什么要在这方面发新帖?

还有其他几个 stackoverflow 帖子引用了“无法安装...”错误。我创建了一个新帖子有几个原因:

  • 其他大部分帖子都不详细。
  • 突出的相关帖子,Android 错误:无法在设备上安装 *.apk *: timeout,对于原始海报,仅适用于物理设备连接。所以这是一个不同的情况,尽管有相似的症状。
  • 我已经尝试过该帖子中的所有候选解决方案以及其他几个解决方案。这些在“我尝试过的候选解决方案”下列出。

这篇文章很长,因为我采取的步骤很长,正如错误所保证的那样。如果您不想阅读或至少扫描此帖子,请不要发表评论。

我的环境

主机操作系统:Windows XP SP3

JAVA:Java SDK 版本 1.6.0_32

WINDOWS 环境变量:

JAVA_HOME=C:\Program Files\Java\jdk1.6.0_33;

PATH=...;%JAVA_HOME%\bin\;C:\android\android-sdk\tools;C:\android\android-sdk\platform-tools\;...;C:\Program Files\apache-ant-1.8.2\bin;...;

IDE:Eclipse(安装经典)Indigo。版本 3.7.2

安卓 SDK

  • Android SDK 工具修订版:20。(主要使用修订版 19 进行测试)。
  • Android SDK 平台工具:11。
  • ADT 插件(“Android 开发工具包”,Eclipse 插件)版本:20.0.0.v201206010423-369331(也与之前的版本 18.0.0.v201203301501-306762)。
  • 您的项目所针对的平台和在模拟器中运行的平台版本。尝试了每一个:
    • 安卓 4.0.3 (API 15)
    • 安卓 2.2 (API 8)
    • 安卓 2.1 (API 7)

移动设备:运行 Android Ice Cream Sandwhich (ICS) 4.0.3 的三星 Galaxy S2

蚂蚁:1.8.2

我经历的产生错误的步骤。

使用 Eclipse 尝试将 .apk 安装到模拟器:

  • 打开 Eclipse(它加载了我的工作区,其中包含一个 android 应用程序)。
  • 使用之前配置的运行配置运行我的 android 应用程序。
  • “Android 设备选择器”启动(我已将运行配置设置为手动启动)。
  • 在 Android 设备选择器中,我选择我的 avd(针对 Android 2.2),然后单击确定。
  • 模拟器以“5554:jlbavd2_2”打开。我的 AVD 名称是“jlbavd2_2”。
  • 我让模拟器保持打开状态。在 Eclipse 中,我打开 DDMS 视图。在“设备”窗格中,单击白色三角形并选择“重置 adb”。

在 Eclipse 控制台,Android 视图中,我得到

[2012-06-19 19:20:52 - MyApp] Starting full Post Compiler.
[2012-06-19 19:20:52 - MyApp] ------------------------------
[2012-06-19 19:20:52 - MyApp] Android Launch!
[2012-06-19 19:20:52 - MyApp] adb is running normally.
[2012-06-19 19:20:52 - MyApp] Performing au.com.myorg.myapp.MyAppActivity activity launch
[2012-06-19 19:20:52 - MyApp] Refreshing resource folders.
[2012-06-19 19:20:52 - MyApp] Starting incremental Pre Compiler: Checking resource changes.
[2012-06-19 19:20:52 - MyApp] Nothing to pre compile!
[2012-06-19 19:20:53 - MyApp] Starting incremental Package build: Checking resource changes.
[2012-06-19 19:20:53 - MyApp] Skipping over Post Compiler.
[2012-06-19 19:20:59 - MyApp] Launching a new emulator with Virtual Device 'jlbavd'
[2012-06-19 19:22:29 - MyApp] New emulator found: emulator-5554
[2012-06-19 19:22:29 - MyApp] Waiting for HOME ('android.process.acore') to be launched...
[2012-06-19 19:22:44 - MyApp] HOME is up on device 'emulator-5554'
[2012-06-19 19:22:44 - MyApp] Uploading MyApp.apk onto device 'emulator-5554'
[2012-06-19 19:22:49 - MyApp] Failed to install MyApp.apk on device 'emulator-5554': timeout
[2012-06-19 19:22:49 - MyApp] Launch canceled!

在 Eclipse 控制台的 DDMS 输出中,我得到:

...
[2012-06-19 19:22:44 - ddm-hello] handling HELO
[2012-06-19 19:22:44 - ddm-hello] HELO: v=1, pid=150, vm='Dalvik v1.2.0', app='android.process.acore'
[2012-06-19 19:22:44 - MyApp.apk] Uploading MyApp.apk onto device 'emulator-5554'
[2012-06-19 19:22:44 - Device] Uploading file onto device 'emulator-5554'
[2012-06-19 19:22:49 - ddms] write: timeout
[2012-06-19 19:22:49 - Device] Error during Sync: timeout.
[2012-06-19 19:22:49 - ddms] Removing req 0x4000002d from set

有时(也许我做的步骤略有不同)我得到:

[2012-06-16 14:20:02 - MyFirstApp02] Starting full Post Compiler.
[2012-06-16 14:20:02 - MyFirstApp02] ------------------------------
[2012-06-16 14:20:02 - MyFirstApp02] Android Launch!
[2012-06-16 14:20:02 - MyFirstApp02] adb is running normally.
[2012-06-16 14:20:02 - MyFirstApp02] Performing au.com.myorg.MyFirstApp02Activity activity launch
[2012-06-16 14:20:08 - MyFirstApp02] Launching a new emulator with Virtual Device 'jlbavd2_2'
[2012-06-16 14:20:17 - Emulator] bind: Unknown error
[2012-06-16 14:20:17 - MyFirstApp02] New emulator found: emulator-5556
[2012-06-16 14:20:17 - MyFirstApp02] Waiting for HOME ('android.process.acore') to be launched...
[2012-06-16 14:20:38 - MyFirstApp02] HOME is up on device 'emulator-5556'
[2012-06-16 14:20:38 - MyFirstApp02] Uploading MyFirstApp02.apk onto device 'emulator-5556'
[2012-06-16 14:20:50 - MyFirstApp02] Failed to install MyFirstApp02.apk on device 'emulator-5556': timeout
[2012-06-16 14:20:50 - MyFirstApp02] Launch canceled!

注意“绑定:未知错误”。有时会发生此错误,有时不会。

如果我将以太网电缆拔出到我的硬件路由器,我会得到以下信息:

[2012-06-19 23:27:29 - MyApp] Android Launch!
[2012-06-19 23:27:29 - MyApp] adb is running normally.
[2012-06-19 23:27:29 - MyApp] Performing au.com.softmake.myapp.MyAppActivity activity launch
[2012-06-19 23:27:29 - MyApp] Refreshing resource folders.
[2012-06-19 23:27:29 - MyApp] Starting incremental Pre Compiler: Checking resource changes.
[2012-06-19 23:27:29 - MyApp] Nothing to pre compile!
[2012-06-19 23:27:33 - MyApp] Launching a new emulator with Virtual Device 'jlbavd'
[2012-06-19 23:27:40 - Emulator] Warning: No DNS servers found
[2012-06-19 23:27:44 - Emulator] emulator: emulator window was out of view and was recentered
[2012-06-19 23:27:44 - Emulator]
[2012-06-19 23:28:29 - MyApp] New emulator found: emulator-5554
[2012-06-19 23:28:29 - MyApp] Waiting for HOME ('android.process.acore') to be launched...
[2012-06-19 23:28:36 - MyApp] HOME is up on device 'emulator-5554'
[2012-06-19 23:28:36 - MyApp] Uploading MyApp.apk onto device 'emulator-5554'
[2012-06-19 23:28:42 - MyApp] Failed to install MyApp.apk on device 'emulator-5554': timeout
[2012-06-19 23:28:42 - MyApp] Launch canceled!

请注意“警告:未找到 DNS 服务器”

使用 Eclipse 尝试将 .apk 安装到物理设备(根三星 Galaxy S2。4.0.3 并启用 USB 调试),在完成与上述类似的步骤后,我进入 Eclipse 控制台,Android 输出:

[2012-06-15 22:40:34 - MyFirstApp] Starting full Post Compiler.
[2012-06-15 22:40:34 - MyFirstApp] ------------------------------
[2012-06-15 22:40:34 - MyFirstApp] Android Launch!
[2012-06-15 22:40:34 - MyFirstApp] adb is running normally.
[2012-06-15 22:40:34 - MyFirstApp] Performing
    au.com.myorg.myfirstapp.MyFirstAppActivity activity launch
[2012-06-15 22:40:39 - MyFirstApp] Uploading MyFirstApp.apk onto device '0019adf659f24e'
[2012-06-15 22:40:51 - MyFirstApp] Failed to install MyFirstApp.apk on device '0019adf659f24e': timeout
[2012-06-15 22:40:51 - MyFirstApp] Launch canceled!

与尝试安装到模拟器时出现的错误相同。

当仅使用命令行并因此避免使用 Eclipse 时,我将执行以下步骤:

  • 在我的工作目录中打开一个 Windows 命令提示符(我使用的是 C:\Data\Sda\Code\Mobile\Android\Examples>")。

    android 列表目标。

  • 我获得了我的目标 ID(我选择 Android 2.2)。

    android 创建项目 --target 3 --name MyAppCmd --path ./MyAppCmd --activity MyAppCmdActivity --package au.com.myorg.myappcmd

  • 我得到一系列看起来很健康的输出“创建的项目目录......”,“添加的文件......”

  • 在 Windows 中,我双击“AVD Manager.exe”。
  • 我启动了我的 avd(针对 Android 2.2)
  • 返回我的命令窗口

    cd MyAppCmd

    蚂蚁调试

  • 在输出列表之后,我得到“BUILD SUCCESSFUL ...”(以前我必须编辑 C:\android\android-sdk\platform-tools\dx.bat 以将“set defaultXmx=-Xmx1024M”更改为“设置 defaultMx=-Xmx512M" 以使构建成功)。我观察到 bin/MyAppCmd-debug.apk 存在。

  • 我尝试安装

    adb install bin/MyAppCmd-debug.apk

  • 输出:

    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    error: device offline
    

    亚行设备

    List of devices attached
    emulator-5554   device
    

    adb install bin/MyAppCmd-debug.apk

  • 命令窗口中没有进一步的输出。没有错误信息。只是一个闪烁的光标,没有错误或成功消息,也没有返回命令提示符“>”。

  • 我关闭了命令行并打开了一个新的。

  • 如果我尝试推送命令(以前在我的 Windows 系统上创建了 temp.txt),我会得到相同的结果(闪烁的光标等)......

    adb push temp.txt /sdcard/temp.txt

我尝试过的候选解决方案

Eclipse 相关:

  • 遵循Eclipse 中的步骤没有与模拟器交谈
  • 增加了 ADB 连接超时。Eclipse > Window > Preferences > Android > DDMS > " ADB connection time out(ms):" = 10000(我也试过 60000)。
  • 运行应用程序两次(并再次选择当前运行的模拟器或手机)。
  • 清理了我的项目:Eclipse > Project > Clean ...
  • 重新启动 Eclipse。
  • 将 Eclipse 从 Indigo (2.7.x) 降级到 Helios (2.6.x)。

安卓相关:

  • 以多种方式重置 adb: 从 Eclipse DDMS 角度(从设备窗口三角形)中的“重置 ADB”命令;带有“adb kill-server”和“adb start-server”的命令行;并使用 Windows 任务管理器杀死 adb.exe。
  • 重新安装我的三星 OEM USB 驱动程序(通过使用 KIES > 工具 > 连接错误疑难解答)。
  • 将我的 Android SDK 安装到路径中没有空格的目录中。即 C:\Android\android-sdk。这需要重新安装 SDK,以前位于 C:\Program files\Android\android-sdk
  • 我的 Android 项目安装在路径中没有空格的目录中。
  • 删除和重新创建 avd(从 Android AVD 管理器和使用 Windows 资源管理器)。
  • 使用针对不同平台(Android 2.2 和 Android 4.0.3)的不同 AVD。
  • 就在模拟器打开之后但超时之前:解锁手机 V 等到手机锁定(在模拟器中)超时。
  • 已验证我的 AndroidManifest.xml 中有:

      <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" /> 
    

环境相关(PC和电话):

  • 重新启动了我的手机。
  • 重新启动我的开发PC。
  • 关闭我的软件和硬件防火墙。
  • 开启 MS Security Essentials 实时保护。
  • 禁用了我的主机列表。
  • 重新安装Java。
  • 引导进入 Windows 安全模式并运行 Eclipse。
  • 通过查看Sysinternals TCPView中可用的内容,手动终止大多数其他应用程序 TCP/IP 进程(例如 GoogleDesk.exe、Apache Server PunkBuster 等) 。
  • 断开以太网电缆与我的 PC 的连接。

其他信息

一些 adb 命令有效。

例如,以下内容使模拟器屏幕跳舞(如预期的那样)。

adb shell 猴子 -v 100

我可以列出设备,并正确检索它们的状态

亚行设备。

因此 adb 客户端和 adb 守护进程之间存在部分通信(通过 adb 服务器)。

我对 Android 开发比较陌生。但是,大约 6 个月前,我已经成功地将 .apks 安装到了模拟器和我的设备上(从我现在正在尝试工作的 WinXP PC 上)。从那以后我就忽略了Android。当我最近回到它时,我在构建我的 .apks 时遇到了一些问题,这是通过删除我的 debug.key 并允许 eclipse 生成一个新的来解决的。

在这 6 个月的时间里,我的开发机器发生了各种各样的变化。安装新的服务器和应用程序,更改防火墙设置等。所以很可能有一些我忽略的变化。

我还有一台 Win7 笔记本电脑,我已经成功地将 .apks 安装到模拟器和 USB 连接的物理设备上。也就是说,我在Win7机器上安装了一份Android SDK、Eclipse、JAVA等。所以我知道我对正确设置它的正确程序有一个大致的了解。

我可以通过 ES File Explorer 从我的手机(无线连接到我的开发机器)双击文件来手动安装 .apk。

最后的想法

似乎 adb 客户端、adb 服务器或 adb 守护程序在完全相互通信方面存在问题。

我有三个假设:

  • 这是我的错。存在某种 TCP/IP 冲突,它破坏了 adb 客户端、adb 服务器或 adb 守护程序之间的某些连接。这是由于我的 PC 上的一些怪异设置(就像任何开发人员一样,我一直在更改系统上的各种设置)。但是,我尝试禁用安全性和其他可能冲突的 TCP/IP 进程(据我所知)。
  • 我一直忽略一些简单的问题。
  • 这是谷歌/安卓的错。也就是说,Android adb 中有一个 bug,需要更新 android SDK 平台工具。我认为这不太可能,因为我希望它现在已经浮出水面。

要发布的更新

2012-06-22 18:55 (UTC):

完全重新安装(再次)Java、Eclipse 和 Android SDK,在安装过程中有一些变化(例如,将 Java 安装到 root;Android SDK 安装到默认的“Program Files\”;并在安装过程中关闭所有安全软件)。

我注意到错误“停止 ADB 服务器失败(代码 -1)”。在 Android SDK Manager Log 期间和安装平台/工具的各个部分(通过 Manager)。

2012-06-30 06:15 (UTC):

重新调整了“我的环境”规范以反映最新的测试。

4

14 回答 14

3

如果它的超时那么可能是与 Eclipse 的 ADB 连接将需要更多的超时限制。所以试试这个:

Prefrences>android>DDMS and you will see ADB connection timeout extend it to 20000

于 2012-06-20T08:53:30.193 回答
2

当我们在物理设备上发生这种情况时,我们通常会尝试通过拔下电源、切换设备上的“android 调试模式”并重新连接来修复它。

于 2012-08-04T01:23:34.120 回答
2

确保您在 ADMIN ACCOUNT 上工作。这个问题也让我很沮丧,但是当我切换到管理员帐户(在 Windows Vista 上)时,adb 似乎在设备上正确安装了 apk。

于 2013-01-07T02:27:02.347 回答
2

我遇到过同样的问题; 通过将 *.apk 复制到手机内存并将其直接安装在设备上(通过 Myfiles 并选择 *.apk),它工作正常。我怀疑 USB 连接有问题(错误太多,Eclipse 由于其他进程使用 USB 太慢等)。

于 2013-03-27T23:11:08.300 回答
1

我的简单方法是重新启动模拟器(不是 Eclipse)。它无需我发送任何 adb 命令即可工作。虽然很少发生在物理设备上。

于 2012-07-24T11:04:29.067 回答
1

几个月后,我通过升级到全新的环境解决了这个问题。具体来说,是一台全新安装 Windows 8 的新机器。我也避免安装 Comodo 套件(我不知道这是导致问题的原因)。

因此,虽然这不是问题的直接解决方案(仍然不清楚是什么原因造成的),但也许它可以作为另一个例子,其中解决问题的方法或横向解决方案有时是一个很好的最后选择。

于 2013-02-09T06:16:37.470 回答
1

尝试更改 ADB 连接超时。我认为它默认为 5000 毫秒,我将我的更改为 10000 毫秒以摆脱这个问题。

如果您在 Eclipse 中,则可以通过

Window-> Preferences -> Android -> DDMS -> ADB Connection Timeout (ms)

于 2014-09-30T08:39:54.220 回答
0

试试这些...

  • 关闭你的日食。
  • 转到cmd并输入:(我希望你已经在你的路径中设置了android工具文件夹的路径)

adb kill-server
adb start-server

输出将是:

daemon not running. starting it now on port 5037 
daemon started successfully 
  • 启动你的 Eclipse。

  • 启动您的模拟器,如果您在物理设备上,请查看您的电缆是否松动并正确连接

于 2012-06-30T06:40:38.983 回答
0

只需拔下和插入电话(物理)即可。当手机连接时间过长并且什么也没做时,这确实发生在我身上(太多次)。

于 2012-08-20T18:30:39.613 回答
0

我的行为与您的问题中提到的相同,并尝试了您列出的所有解决方案。试试这个:更改 USB 端口。对我来说,我总共有 4 个 USB 端口(两个在我的桌面前面,另外两个在后面)。无论我做什么,前面的两个都给了我[超时安装]。我试过的第一个在后面已经奏效了。我想知道这可能是与 USB 端口版本或主板嵌入式 USB 相关的一些问题。

于 2012-09-21T14:59:25.750 回答
0

你可以试试这个:

  1. 打开“ Android 虚拟设备管理器
  2. 从那里列出的设备中选择一个并运行它。
  3. 右键您的 Android应用程序 -> 运行方式 -> Android 应用程序

它对我有用。我在eclipse中的模拟器上试过这个。应用程序运行需要一段时间。对我来说,它花了 33 秒。等到控制台中的消息显示“成功!”

于 2012-09-26T06:10:23.510 回答
0

发生这种情况时,我在 Win7 64 位系统上执行以下操作:

  1. 关闭日食
  2. 从任务管理器中杀死 adb.exe 和 emulator-arm.exe 的所有副本
  3. 打开日食
  4. 更改为 DDMS 视图并确保您可以看到设备
  5. 打开窗口/ADV 管理器
  6. 选择所需的模拟器并按开始
  7. 观察 DDMS 中的设备面板,看看模拟器是否显示。如果在开始窗口进度条完成之前它没有显示,那么模拟器这次不会加载,所以关闭模拟器。
  8. 然后从 6 开始重复。

对我来说,模拟器永远不会第一次启动,但 10 次中有 9 次将在第二次尝试时成功启动。

希望他们能解决这个问题!标记

于 2012-12-26T16:51:19.370 回答
0

如果您不是管理员帐户,请确保已关闭家长控制。它对我有用。

于 2014-05-28T04:18:00.833 回答
-1

首先您必须更新系统的所有驱动程序,然后以基本方式安装android studio,然后错误就会解决。先试试,因为我也多次遇到这个问题......

于 2017-07-17T05:12:09.930 回答