由于模拟器中的超时而无法安装

时间:2012-06-20 08:47:11

标签: android android-emulator timeout

当尝试从Eclipse安装.apk时,无论是安装到Android模拟器还是物理设备(通过USB),我都会得到一个"无法在设备上安装* .apk' *&# 39;:超时"错误。 在模拟器或物理设备(三星Galaxy S2,已植根)上找不到.apk。

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

为什么要发布新帖?

还有其他一些stackoverflow帖子引用了"无法安装......"错误。我出于以下几个原因创建了一个新帖子:

  • 其他大多数帖子都不详细。
  • 原始海报的突出相关帖子Android error: Failed to install *.apk on device *: timeout仅适用于物理设备连接。所以这是一个不同的案例,尽管有类似的症状。
  • 该帖子中的所有候选解决方案,以及其他几个,我都试过了。这些是在#34;候选人的解决方案下面列出的#34;。

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

我的环境

主机操作系统:Windows XP SP3

JAVA:Java SDK版本1.6.0_32

WINDOWS ENVIRONMENT VARIABLES:

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

ANDROID 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)

MOBILE:三星Galaxy S2运行Android Ice Cream Sandwhich(ICS)4.0.3

ANT: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安装到物理设备(已启用USB调试的三星Galaxy S2.4.0.3),并在完成上述类似步骤后,进入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 list targets。

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

      

    android create project --target 3 --name MyAppCmd --path ./MyAppCmd --activity MyAppCmdActivity --package au.com.myorg.myappcmd

  • 我获得了一系列健康的输出"创建了项目目录......","添加了文件..."

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

      

    cd MyAppCmd

         

    ant debug

  • 在输出列表之后我得到了#34;构建成功......" (在之前的场合,我必须编辑C:\ android \ android-sdk \ platform-tools \ dx.bat来改变"设置defaultXmx = -Xmx1024M"到"设置defaultMx = -Xmx512M&# 34;使构建成功)。我观察到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 devices

    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>窗口>偏好> Android> DDMS> " ADB连接超时(ms):" = 10000(我还试过60000)。
  • 运行应用程序两次(并再次选择当前正在运行的模拟器或移动电话)。
  • 清理我的项目:Eclipse>项目>干净......
  • 重新启动Eclipse。
  • 将Eclipse从Indigo(2.7.x)降级为Helios(2.6.x)。

Android相关:

  • 以多种方式重置adb:"重置ADB" Eclipse DDMS透视图中的命令(来自Devices窗口三角形);命令行" adb kill-server"和" adb start-server&#34 ;;并使用Windows任务管理器终止adb.exe。
  • 重新安装Samsung OEM USB驱动程序(使用KIES>工具>排除连接错误)。
  • 将我的Android SDK安装到路径中任何位置没有空格的目录中。即C:\ Android \ android-sdk。这需要重新安装SDK,以前位于C:\ Program files \ Android \ android-sdk
  • 我的Android项目安装在路径中任何位置都没有空格的目录中。
  • 删除并重新创建avd(均来自Android AVD Manager并使用Windows资源管理器)。
  • 使用针对不同平台的不同AVD(Android 2.2和Android 4.0.3)。
  • 在模拟器打开之后但超时之前:解锁手机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 monkey -v 100

我可以列出设备,并使用

正确检索其状态
  

adb devices。

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

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

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

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

我可以手动安装.apk,方法是通过手机中的ES文件浏览器双击文件(无线连接到我的开发机器)。

最后的想法

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

我有三个假设:

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

发布

的更新

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

完全重新安装(再次)Java,Eclipse和Android SDK,安装中有一些变化(例如,安装Java到root; Android SDK到默认&#34; Program Files \&#34 ;;并关闭安装期间的所有安全软件)。

我注意到错误&#34;停止ADB服务器失败(代码-1)。&#34;在Android SDK Manager中记录并安装平台/工具的各个部分(通过Manager)。

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

重新调整&#34;我的环境&#34;规格反映了最新的测试。

14 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

答案 4 :(得分:1)

我的简单方法是重启模拟器(不是eclipse)。它只是工作,我不必发送任何adb命令。但物理设备很少发生。

答案 5 :(得分:1)

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

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

答案 6 :(得分:1)

尝试更改ADB连接超时。我认为它默认为5000毫秒,然后我把我改为10000毫秒来解决这个问题。

如果你在Eclipse中,可以通过

来完成

窗口 - &GT;偏好 - &gt; Android - &gt; DDMS - &gt; ADB连接超时(毫秒)

答案 7 :(得分:0)

试试这些......

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

adb kill-server
adb start-server

输出将是:

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

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

答案 8 :(得分:0)

只需拔下插头并插入手机(物理)即可。当手机连接时间过长而没有任何操作时,这确实发生在我身上(太多次)。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

你可以试试这个:

  1. 打开“ Android虚拟设备管理器
  2. 从中选择一个列出的设备并运行它。
  3. 对你的Android 应用程序 - &gt;运行方式 - &gt; Android应用
  4. 它对我有用。我在eclipse中的模拟器上试过这个。 应用程序运行需要一段时间。对我来说花了33秒。 等到控制台中的消息显示“成功!”

答案 11 :(得分:0)

这是我在Win7 64位系统上执行此操作时所做的事情:

  1. 关闭Eclipse
  2. 从任务管理器
  3. 中杀死adb.exe和emulator-arm.exe的所有副本
  4. 打开Eclipse
  5. 更改为DDMS视图并确保您可以看到设备
  6. 打开窗口/ ADV Manager
  7. 选择所需的模拟器,然后按开始
  8. 观察DDMS中的“设备”面板,查看模拟器是否显示。 如果在“开始”窗口进度条完成之前未显示,则模拟器将不会加载此时间,因此请关闭模拟器。
  9. 然后从6开始重复。
  10. 对我来说,模拟器永远不会第一次启动,但是10次中的9次将在第二次尝试时成功启动。

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

答案 12 :(得分:0)

如果您不在管理员帐户中,请确保家长控件已关闭。它对我有效。

答案 13 :(得分:-1)

首先您需要更新系统的所有驱动程序,然后以基本方式安装android studio,然后错误将解决。 首先尝试因为我也多次面对这个问题....