When attempting to install an .apk from Eclipse, whether to an android emulator or to a physical device (via USB), I get a “Failed to install *.apk on device ‘*’: timeout” error.
The .apk is not found on the emulator nor physcial device (Samsung Galaxy S2, rooted).
If I avoid eclipse, and just use the command line, I’m also unable to install an .apk.
Why a new post on this?
There are several other stackoverflow posts that reference the “Failed to install…” error. I’ve created a new post for a few reasons:
- Most of the other posts are not detailed.
- The prominent relevant post, Android error: Failed to install *.apk on device *: timeout, for the original poster, applies only to physical device connections. So it is a different case, albeit with similar symptoms.
- All of the candidate solutions in that post, and several others, I have tried. These are listed bellow under “Candidate solutions i’ve tried”.
This post is lengthy as the steps I’ve taken are lengthy, as was warranted by the bug. If you don’t want to read, or at least scan, this post please do not comment.
HOST OS: Windows XP SP3
JAVA: Java SDK version 1.6.0_32
WINDOWS ENVIRONMENT VARIABLES:
IDE: Eclipse (installed classic) Indigo. Version 3.7.2
- Android SDK Tools Revision: 20. (Chiefly tested with revision 19).
- Android SDK Platform-tools: 11.
- ADT plug-in (“Android Development Toolkit”, Eclipse Plugin) version: 20.0.0.v201206010423-369331 (also with prior version 18.0.0.v201203301501-306762).
- Platform targeted by your project & Version of the platform running in the emulator. Tried each off:
- Android 4.0.3 (API 15)
- Android 2.2 (API 8)
- Andorid 2.1 (API 7)
MOBILE: Samsung Galaxy S2 running Android Ice Cream Sandwhich (ICS) 4.0.3
Steps I go through to produce the errors.
Using Eclipse to attempt to install an .apk to the emulator:
- Open eclipse (which loads my workspace with a single android application in it).
- Run my android application using a previously configured Run configuration.
- The “Android Device Chooser” launches (I have set my Run configuration to launch this manually).
- In the Android Device Chooser I select my avd (targeting Android 2.2), and click OK.
- The emulator opens with “5554:jlbavd2_2”. My AVD name is “jlbavd2_2”.
- I leave the emulator open. In Eclipse I open the DDMS view. In the “Devices” pane I click on the white triangle and choose “Reset adb”.
In the Eclipse console, Android view, I get
[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!
In the Eclipse console, DDMS output, I get:
... [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
Sometimes (perhaps I do slightly different steps) I get:
[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!
Note the “bind: Unknown error”. Sometimes this error happens, sometimes it does not.
If I unplug my ethernet cable to my hardware router I get the following:
[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!
Note the “Warning: No DNS servers found”
Using Eclipse to attempt to install an .apk to a physical device (rooted Samsung Galaxy S2. 4.0.3 with USB debugging enabled), and after going through similar steps as above, I get in the Eclipse console, Android Output:
[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!
The same sort of error as when attempting to install to the emulator.
When using the command line only, and thereby avoiding Eclipse, I go through the following steps:
Open a windows command prompt in my working directory (I’m using C:\Data\Sda\Code\Mobile\Android\Examples>”).
android list targets.
I obtain my target id (I choose Android 2.2).
android create project –target 3 –name MyAppCmd –path ./MyAppCmd –activity MyAppCmdActivity –package au.com.myorg.myappcmd
I get a series of healthy looking output “Created project directory …”, “Added file …”
- In windows I double click “AVD Manager.exe”.
- I launch my avd (which targets Android 2.2)
Back to my command window
After a list of output I get “BUILD SUCCESSFUL …” (On a prior occasion I had to edit C:\android\android-sdk\platform-tools\dx.bat to change “set defaultXmx=-Xmx1024M” to “set defaultMx=-Xmx512M” to make the build successful ). I observe that bin/MyAppCmd-debug.apk exists.
I attempt an install with
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
There is no further output in the command window. No error message. Just a blinking cursor, no error or success message, and no return to the command prompt “>”.
I shut down the command line and open a new one.
I get the same result (a blinking cursor, etc.) if I try a push command (temp.txt has been previously created on my windows system) …
adb push temp.txt /sdcard/temp.txt
Candidate solutions i’ve tried
- Followed the steps from Eclipse isn’t talking to the emulator
- Increased the ADB connection time out. Eclipse > Window > Preferences > Android > DDMS > ” ADB connection time out(ms):” = 10000 (I’ve also tried 60000).
- Running the application twice (and choosing the currently running emulator or mobile phone again).
- Cleaned my project: Eclipse > Project > Clean …
- Rebooted Eclipse.
- Downgraded Eclipse from Indigo (2.7.x) to Helios (2.6.x).
- Reset the adb in several ways: “Reset ADB” command from the Eclipse DDMS perspective (from the Devices window triangle); command line with “adb kill-server” and “adb start-server”; and using the Windows Task manager to kill adb.exe.
- Reinstalling my Samsung OEM USB drivers (By using KIES > Tools > Troubleshoot connection error).
- Installing my Android SDK to a directory without spaces anywhere in the paths. Namely C:\Android\android-sdk. This entailed a reinstall of the SDK, formerly located at C:\Program files\Android\android-sdk
- My Android Project is installed in a directory without spaces anywhere in the the path.
- Deleting and recreating the avd (both from the Android AVD Manager and using Windows Explorer).
- Using different AVDs that target different platfroms (Android 2.2 and Android 4.0.3).
- Just after the Emulator opens but before it times out: unlocking the phone V waiting till it times out with the phone locked (in the emulator).
Verified I have in my AndroidManifest.xml:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
Environment related (PC and Phone):
- Rebooted My Phone.
- Rebooted my development PC.
- Turning off my software and hardware firewall.
- Turning of MS Security Essentials Real Time Protection.
- Disabled my hosts list.
- Reinstalled Java.
- Booting into Windows safe mode and running Eclipse.
- Manually killing most other application TCP/IP Processes (E.g GoogleDesk.exe, Apache Server PunkBuster, etc) by seeing what is available in Sysinternals TCPView.
- Disconnected the Ethernet cable from my PC.
Some adb commands work.
For example the following makes the emulator screen dance about (as is expected).
adb shell monkey -v 100
I can list the devices, and correctly retrieve their state with
So there is partial communication between an adb client and adb daemon (via an adb server).
I am relatively new to Android development. However, I have successfully installed .apks to the emulator and my device about 6 months ago (from the WinXP PC I’m now trying to make work). I have ignored Android since then. When I came back to it recently I had some problem building my .apks which was fixed by deleting my debug.key and allowing eclipse to generate a new one.
In the intervening 6 months my development machine has changed in all sorts of ways. Installing new servers and apps, changing firewall settings etc. So there could well be some change I’m overlooking.
I also have a Win7 Laptop from which I have successfully installed .apks to the emulator and USB connected physical device. That is, I have a copy of the Android SDK, Eclipse, JAVA, etc installed on the Win7 machine. So I know I have a general handle on the correct procedure for setting it all up correctly.
I can install the .apk manually by double clicking the file through ES File Explorer from my Phone (which connects to my development machine wirelessly).
It seems that there is some problem with the adb client, adb server, or adb daemon in talking to each other fully.
I have three hypothesis:
- It is my fault. That there is some kind of TCP/IP conflict which breaks some of the connections between the adb client, adb server, or adb daemon. This is due to some freakish setting on my PC (like any developer I change various settings on my system all the time). However, I have tried disabling security and other potentially conflicting TCP/IP processes (as far as I can tell).
- Some simple issue I keep overlooking.
- It is google’s/Android’s fault. That is, there is a bug in the Android adb which requires an update to the android SDK platform tools. I think this less likely since I’d expect it to have surfaced by now.
Updates to post
2012-06-22 18:55 (UTC):
Complete reinstall (again) of Java, Eclipse, and the Android SDK with some variations in the install (e.g. Installed Java to root; Android SDK to the default “Program Files\”; and turning off all security software during install).
I note an error “Stopping ADB server failed (code -1).” in the Android SDK Manager Log during and install of the various parts of the platform/tools (via the Manager).
2012-06-30 06:15 (UTC):
Readjusted “My Environment” specs to reflect latest tests.
If its timeout then may be ADB connection with the eclipse will need more timeout limit. So Try this:
Prefrences>android>DDMS and you will see ADB connection timeout extend it to 20000
When this happen’s to us on physical devices we usually attempt to fix it by unplugging, toggling “android debug mode” on the device and reconnecting.
Make sure your working on an ADMIN ACCOUNT. This problem also frustrated me, but when I switched over to an admin account (on Windows Vista), the adb seemed to correctly install the apk on the device.
I had the same issue; by copying the *.apk to the cell phone memory and installing it directly on the device (by Myfiles and selecting the *.apk), it worked OK. I suspect that there’s an issue with the USB connection (too many errors, Eclipse is too slow due to other processes using the USB, etc.).
My simple approach is to just restart the emulator (not eclipse). It just works without me having to send any adb commands. Rarely happens with physical device though.
I’ve solved the problem, many months later, by upgrading to a completely new environment. Specifically, a new machine with a fresh install of Windows 8. I’ve also avoided installing the Comodo suite (I don’t know that this was causing the problem).
So while this is not a direct solution to the problem (it’s still not clear what was causing it) perhaps it might serve as another example where a workaround or lateral resolution to a problem is sometimes a good last resort option.
Try changing the ADB connection timeout. I think it defaults that to 5000ms and I changed mine to 10000ms to get rid of that problem.
If you are in Eclipse, you can do this by going through
Window-> Preferences -> Android -> DDMS -> ADB Connection Timeout (ms)
- Shut Down your eclipse.
- Goto cmd and type:(I hope you have set the path of android tools folder in your path)
output will be:
daemon not running. starting it now on port 5037 daemon started successfully
Start you Eclipse.
Start your emulator, if you are on physical device, see that your cable is not loose, and properly connected
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.
Just unplugging and plugging in the phone (physical) works. This does happen to me (too many times) when the phone is connected too long and nothing is done.
This is what I do on my Win7 64 bit system when this happens:
- Close Eclipse
- Kill adb.exe and all copies of emulator-arm.exe from task manager
- Open Eclipse
- Change to DDMS view and make sure you can see Devices
- Open Window / ADV Manager
- Select required emulator and press Start
- Watch the Devices panel in DDMS, to see if the emulator shows.
If it doesn’t display before the Start window progress bar has finished then the emulator isn’t going to load this time so close the emulator.
- Then repeat from 6.
For me the emulator never starts first time but 9 times out of 10 will start successfully on the second attempt.
Wish they’d fix this!
if you are not in admin account, make sure parental controls are turned off.It worked for me.
you could try this:
- Open the “Android Virtual device Manager“
- Select from one the listed devices there and run it.
- Right your Android App -> Run As -> Android Application
It worked for me. I tried this on an emulator in eclipse.
It takes a while before the app is run. For me it took 33 seconds.
Wait until the message in the console says “Success!”
At first You have to Update all drivers of your system, then install android studio with basic way, then error will solved .
Try First Because I also face this problem multiple time….