由于模拟器超时,安装失败

Posted

技术标签:

【中文标题】由于模拟器超时,安装失败【英文标题】:Failed to install due to Timeout in Emulator 【发布时间】:2012-06-22 08:58:13 【问题描述】:

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

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

为什么要在此发布新帖子?

还有其他几个引用“安装失败...”错误的 *** 帖子。我创建了一个新帖子有几个原因:

其他帖子大多不详。 原始发帖人的重要相关帖子Android error: Failed to install *.apk on device *: 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)。 您的项目所针对的平台以及在模拟器中运行的平台版本。尝试了每一个: Android 4.0.3 (API 15) Android 2.2 (API 8) Andorid 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 安装到物理设备(root 三星 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

我得到了一系列看起来很健康的输出“Created project directory ...”、“Added file ...”

在 Windows 中,我双击“AVD Manager.exe”。 我启动了我的 avd(针对 Android 2.2)

回到我的命令窗口

cd MyAppCmd

蚂蚁调试

在输出列表后,我得到“BUILD SUCCESSFUL ...”(之前我不得不编辑 C:\android\android-sdk\platform-tools\dx.bat 来更改“set defaultXmx =-Xmx1024M" 到 "set 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

adb 设备

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 isn't talking to the emulator 的步骤 增加了 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)。

Android 相关:

通过多种方式重置 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 等)。 从我的电脑上断开以太网电缆。

其他信息

一些 adb 命令可以工作。

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

adb shell monkey -v 100

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

adb 设备。

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

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

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

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

我可以通过我的手机(无线连接到我的开发机器)上的 ES 文件资源管理器双击文件来手动安装 .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 管理器中记录和安装平台/工具的各个部分(通过管理器)。

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

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

【问题讨论】:

感谢 hawaii.five-O。忘记列出我已经重新安装了 Android SDK。将更新帖子。 检查这个问题:***.com/questions/10795914/android-timeout-error 白痴。那里没有列出我上面没有列出的候选解决方案。 好吧,建议重新下载一个新的android sdk,并更新到最新的sdk。 这对我来说是第一次,但请缩小你的问题,这太难读了 【参考方案1】:

你可以试试这个:

    打开“Android 虚拟设备管理器” 从列出的设备中选择一个并运行它。 正确的 Android 应用程序 -> 运行方式 -> Android 应用程序

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

【讨论】:

【参考方案2】:

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

【讨论】:

这看起来不像是答案 先试试 因为我也多次遇到这个问题....现在我的问题解决了.....【参考方案3】:

尝试更改 ADB 连接超时。我认为它默认为 5000 毫秒,我将其更改为 10000 毫秒以解决该问题。

如果你在 Eclipse 中,你可以通过浏览来做到这一点

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

【讨论】:

"增加了 ADB 连接超时。Eclipse > Window > Preferences > Android > DDMS > " ADB connection time out(ms):" = 10000 (我也试过 60000)。"跨度> 【参考方案4】:

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

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

【讨论】:

【参考方案7】:

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

【讨论】:

感谢您添加我没有提到的可能解决方案。我试过这个(不假思索地)。幸运的是,我通过升级到运行 Windows 8 的新机器解决了这个问题。【参考方案8】:

这是我在 Win7 64 位系统上发生这种情况时所做的:

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

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

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

【讨论】:

【参考方案9】:

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

【讨论】:

谢谢。出现这些症状时要注意的事情。但是,它不适用于我的情况(问题发生在模拟器中)。【参考方案10】:

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

【讨论】:

谢谢 mthama。鉴于问题出在模拟器和设备上,USB 情况不应该相关。但是,在你的提示下。我尝试直接连接到我的板载 USB 端口(我通常通过 USB 集线器连接(。与集线器的情况一样,设备被识别,但我得到相同的“安装失败”错误。你在连接到模拟器时遇到问题吗换USB端口解决的问题?【参考方案11】:

试试这些...

关闭 Eclipse。 转到 cmd 并输入:(希望您在路径中设置了 android tools 文件夹的路径)

adb kill-serveradb start-server

输出将是:

daemon not running. starting it now on port 5037 
daemon started successfully 

启动 Eclipse。

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

【讨论】:

库马尔。感谢您的答复。但是,回复:“我希望您在路径中设置了 android 工具文件夹的路径”我在“我的环境”下列出了我的路径设置。在“我尝试过的候选解决方案”下,我提到使用您的方法和其他方法重置 adb。错误的电缆连接不会导致仿真器中出现同样的问题。正如我在帖子中提到的那样,我可以通过该物理连接向设备发送猴子命令,这表明物理连接没有问题。【参考方案12】:

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

【讨论】:

甚至不需要拔掉电源,切换标志就足够了。 为我工作 - 拔掉、切换、重新插入并立即工作 - 多么愚蠢【参考方案13】:

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

【讨论】:

【参考方案14】:

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

Prefrences&gt;android&gt;DDMS and you will see ADB connection timeout extend it to 20000

【讨论】:

你错过了我上面写的“增加了 ADB 连接超时。Eclipse > Window > Preferences > Android > DDMS >” ADB connection time out(ms):” = 10000(我也试过了60000)。” 尝试 adb kill-server 然后 adb start-server 然后 adb install 包名称...如果这在模拟器中不起作用,那么您说您有根设备尝试在其中尝试相同的东西...跨度> 维平萨胡。是的,我已经尝试过这两种方法。也就是说,通过我列出的三种技术中的任何一种来重置 adb。检查模拟器或设备是否被识别(在 eclipse DDMS 视图 > 设备面板中:观察列出的模拟器或设备。或从命令行“adb devices”)。然后通过eclipse或命令行安装一个.apk;到模拟器或物理设备。

以上是关于由于模拟器超时,安装失败的主要内容,如果未能解决你的问题,请参考以下文章

针对使用nuget命令,因下载超时安装失败的程序包,可以离线方式安装

关于cmd安装pip3模块失败的 Read timed out.的补救方法

pip安装软件超时失败

python使用pip安装第三方库(工具包)速度慢超时失败的解决方案

前端npm或yarn装包踩坑——安装超时失败,设置镜像源不生效

Python 下载依赖包环境经常失败超时解决方法