当试图从Eclipse安装.apk时,无论是Android模拟器还是物理设备(通过USB),我都会收到“无法安装* .apk on device'*':timeout”错误 . 在模拟器和物理设备(三星Galaxy S2,root)上找不到.apk .
如果我避免使用eclipse,只使用命令行,我也无法安装.apk .
为什么要发一个新帖子?
还有其他几个stackoverflow帖子引用了“无法安装...”错误 . 我创建了一个新帖子有几个原因:
-
其他大多数帖子都不详细 .
-
原始海报的突出相关帖子Android error: Failed to install *.apk on device *: timeout仅适用于物理设备连接 . 所以这是一个不同的情况,尽管有类似的症状 .
-
该帖子中的所有候选解决方案,以及其他几个,我都试过了 . 这些列于"Candidate solutions i've tried"下方 .
这个帖子很冗长,因为我采取的步骤很长,正如bug所证明的那样 . 如果您不想阅读或至少扫描,请不要发表评论 .
我的环境
主机操作系统: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
ANDROID SDK
-
Android SDK工具修订版:20 . (主要测试版本19) .
-
Android SDK平台工具:11 .
-
ADT插件("Android Development Toolkit",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 Device Chooser"启动(我已将运行配置设置为手动启动) .
-
在Android设备选择器中,我选择了我的avd(定位Android 2.2),然后点击确定 .
-
仿真器打开"5554:jlbavd2_2" . 我的AVD名称是"jlbavd2_2" .
-
我打开模拟器 . 在Eclipse中,我打开DDMS视图 . 在"Devices"窗格中,我单击白色三角形并选择"Reset 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列出目标 .
- 我获得了我的目标ID(我选择了Android 2.2) .
android create project --target 3 --name MyAppCmd --path ./MyAppCmd --activity MyAppCmdActivity --package au.com.myorg.myappcmd
-
我得到一系列 Health 的输出“创建项目目录...”,“添加文件......”
-
在Windows中我双击"AVD Manager.exe" .
-
我启动了我的avd(针对Android 2.2)
-
返回我的命令窗口
cd MyAppCmd ant debug
-
在输出列表之后我得到“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
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透视图的"Reset ADB"命令(来自Devices窗口三角形);命令行"adb kill-server"和"adb start-server";并使用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设备 .
因此,adb客户端和adb守护程序之间存在部分通信(通过adb服务器) .
我对Android开发相对较新 . 但是,我已经成功地将.apks安装到模拟器和我的设备大约6个月前(从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守护程序之间的某些连接 . 这是由于我的电脑上有一些奇怪的设置(就像任何开发人员一直在我的系统上更改各种设置) . 但是,我已经尝试禁用安全性和其他可能存在冲突的TCP / IP进程(据我所知) .
-
我忽略了一些简单的问题 .
-
这是谷歌's/Android'的错 . 也就是说,Android adb中存在一个错误,需要更新android SDK平台工具 . 我认为这不太可能,因为我预计它现在已经浮出水面 .
更新发布
2012-06-22 18:55(UTC):
完全重新安装(再次)Java,Eclipse和Android SDK,并在安装中有一些变化(例如,安装Java到root; Android SDK到默认的“Program Files”;并在安装期间关闭所有安全软件) .
我注意到“停止ADB服务器失败(代码-1)”错误 . 在Android SDK Manager中记录并安装平台/工具的各个部分(通过Manager) .
2012-06-30 06:15(UTC):
重新调整“我的环境”规范以反映最新测试 .
14 回答
尝试更改ADB连接超时 . 我认为它默认为5000毫秒,我把我改为10000毫秒来解决这个问题 .
如果您在Eclipse中,可以通过执行此操作
Window-> Preferences - > Android - > DDMS - > ADB Connection Timeout(ms)
如果它的超时则可能是与eclipse的ADB连接需要更多的超时限制 . 试试这个:
Prefrences>android>DDMS and you will see ADB connection timeout extend it to 20000
当我们在物理设备上发生这种情况时,我们通常会尝试通过拔出,在设备上切换“android调试模式”并重新连接来修复它 .
确保您使用ADMIN帐户 . 这个问题也让我感到沮丧,但当我切换到管理员帐户(在Windows Vista上)时,adb似乎正确地在设备上安装了apk .
我遇到过同样的问题;通过将* .apk复制到手机内存并直接在设备上安装(通过Myfiles并选择* .apk),它工作正常 . 我怀疑USB连接存在问题(错误太多,由于使用USB的其他进程,Eclipse太慢,等等) .
我的简单方法是重启模拟器(不是eclipse) . 它只是工作,我不必发送任何adb命令 . 但物理设备很少发生 .
几个月后,我通过升级到一个全新的环境解决了这个问题 . 具体来说,是一台全新安装Windows 8的新机器 . 我也避免安装Comodo套件(我不知道这是导致问题) .
因此,虽然这不是问题的直接解决方案(目前还不清楚是什么导致它),但也许它可以作为另一个例子,其中问题的解决方法或横向解决方案有时是一个不错的最后选择 .
试试这些......
关闭你的日食 .
转到cmd并输入:(我希望你在你的路径中设置了android tools文件夹的路径)
adb kill-server
adb start-server
输出将是:
启动Eclipse .
启动模拟器,如果您使用的是物理设备,请查看电缆是否松动,连接是否正确
I've got the same behavior as mentioned in your question, and tried every solution listed by you. Try this: change the USB port. For me, I have a total of 4 USB ports (two in front of my desktop and the two others in the back). The two ones on the front gives me [timeout install] whatever I do. The first one in the back I've tried has worked. I wonder it might be some issue related with USB port version, or MotherBoard embedded USB.
只需拔掉插头并插入手机(物理)即可 . 当手机连接时间太长而没有做任何事情时,这确实发生在我身上(太多次) .
这是我在Win7 64位系统上执行此操作时所做的事情:
关闭Eclipse
从任务管理器中杀死adb.exe和emulator-arm.exe的所有副本
打开Eclipse
切换到DDMS视图并确保您可以看到设备
打开窗口/ ADV管理器
选择所需的模拟器,然后按开始
在DDMS中观察“设备”面板,查看模拟器是否显示 . 如果它没有加载这个时间,那么关闭模拟器 .
然后从6开始重复 .
对我来说,模拟器永远不会第一次启动,但在第二次尝试中,9次中的9次将成功启动 .
希望他们能解决这个问题!标记
如果您不在管理员帐户中,请确保关闭家长控制 . 它对我有用 .
你可以试试这个:
打开“Android虚拟设备管理器”
从那里列出的设备中选择一个并运行它 .
正确的Android应用程序 - >运行方式 - > Android应用程序
它对我有用 . 我在eclipse中的模拟器上试过这个 . 应用程序运行需要一段时间 . 对我来说花了33秒 . 等到控制台中的消息显示"Success!"
首先,您必须更新系统的所有驱动程序,然后以基本方式安装android studio,然后错误将解决 . 先尝试因为我也多次面对这个问题....