32

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.

My Environment

HOST OS: Windows XP SP3

JAVA: Java SDK version 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 (installed classic) Indigo. Version 3.7.2

ANDROID SDK

  • 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

ANT: 1.8.2

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

    cd MyAppCmd

    ant debug

  • 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

  • Output:

    * 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

  • 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

Eclipse related:

  • 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).

Android related:

  • 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.

Other information

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

adb devices.

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

Final thoughts

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.

Community
  • 1
  • 1
John Bentley
  • 1,676
  • 1
  • 16
  • 18
  • Thanks hawaii.five-O. Forgot to list that I have reinstalled the Android SDK. Will update post. – John Bentley Jun 20 '12 at 08:55
  • 1
    check this question: http://stackoverflow.com/questions/10795914/android-timeout-error – idiottiger Jun 20 '12 at 08:56
  • Idiottiger. There is no candidate solution listed there that I have not listed above. – John Bentley Jun 20 '12 at 08:58
  • well, suggestion re-download a new android sdk, and update to the latest sdk. – idiottiger Jun 20 '12 at 09:09
  • Idiottiger. In my orginal post I've mentioned that I have reinstalled the android SDK (although that has been edited to make it more explicit). I've also listed the SDK version numbers under "My Environment" (which are the latest at the time of this comment). – John Bentley Jun 20 '12 at 09:17
  • 1
    This is a first for me but please shrink your Question that is far to much to read – HotHeadMartin Jun 20 '12 at 09:17
  • HotHeadMartin. The question is detailed as all the steps I've been through to track the bug are detailed. If I don't include a comprehensive list of the logs and steps I've tried, others will ask for the logs, and make suggestions that I've already tried. – John Bentley Jun 20 '12 at 09:21
  • you have given such detail that we only need to take your place now. Such detailed question may be discussed on face-to-face. Cos its really serious problem as you tried all solution, i got tired reading, thats why I told you simple thing to do. but its seems you have gone through each and every way. but watever takes to resolve please post solution too, if you find. – mayank_droid Jun 20 '12 at 09:28
  • I will indeed post a solution if I find it. – John Bentley Jun 20 '12 at 09:33
  • [Profanity is not welcome here](http://meta.stackexchange.com/a/22233/142838). – user229044 Jul 16 '12 at 18:57
  • That is a disappointing and unjust restriction on the freedom to speak. It also contradicts our moral obligation to swear, an obligation that exists to ensure we have a freedom to speak as we think. – John Bentley Jul 17 '12 at 21:06
  • What sort of output do you get when executing "adb wait-for-device"? Does it return immediately or does it sit and wait? – Michael Celey Jul 27 '12 at 20:16
  • Also, I had a problem similar to this but it was intermittent. I booted into ubuntu, reinstalled all the android tools, and tried again and everything worked. Never figured out what was wrong with my windows setup that caused the intermittent timeouts but I haven't had the problem in ubuntu. – Michael Celey Jul 27 '12 at 20:28
  • +1 for being ridiculously thorough and detailed. Unfortunately, everything I thought of, you've tried. :-/ – Jon O Aug 20 '12 at 18:41
  • @JonO thanks for taking the time to have a crack at it. Fortunately I've now solved it with a workaround: Updgraded to a new machine running Windows 8. – John Bentley Feb 10 '13 at 02:33

13 Answers13

3

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

mayank_droid
  • 1,015
  • 10
  • 19
  • You missed that I wrote above "Increased the ADB connection time out. Eclipse > Window > Preferences > Android > DDMS > " ADB connection time out(ms):" = 10000 (I've also tried 60000)." – John Bentley Jun 20 '12 at 08:59
  • try adb kill-server then adb start-server then adb install package name ... if this not work in emulator then you said you have rooted device try the same thing in it ... – Vipin Sahu Jun 20 '12 at 09:17
  • Vipin Sahu. Yes, I've tried both of these things. That is, Resetting the adb, via any of the three techniques I've listed. Checking that the emulator or device is recognized (In eclipse DDMS view > Devices panel: observe emulator or device listed. Or from command line "adb devices"). Then installing an .apk via eclipse or the command line; to an emulator or physical device. – John Bentley Jun 20 '12 at 09:27
2

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.

Zachary Moshansky
  • 1,673
  • 18
  • 32
2

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.

  • Thanks for the adding a possible solution I haven't mentioned. I had tried this (unthinkingly). Fortunately I've worked around the problem by upgrading to a new machine running Windows 8. – John Bentley Feb 10 '13 at 02:36
2

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

Chris Forrence
  • 10,042
  • 11
  • 48
  • 64
ronensima
  • 21
  • 1
1

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.

Stark
  • 2,581
  • 2
  • 17
  • 20
1

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.

John Bentley
  • 1,676
  • 1
  • 16
  • 18
1

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)

Anchal Radhwani
  • 156
  • 1
  • 15
  • "Increased the ADB connection time out. Eclipse > Window > Preferences > Android > DDMS > " ADB connection time out(ms):" = 10000 (I've also tried 60000)." – John Bentley Oct 02 '14 at 23:32
0

Try these...

  • Shut Down your eclipse.
  • Goto cmd and type:(I hope you have set the path of android tools folder in your path)

adb kill-server
adb start-server

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

Jainendra
  • 24,713
  • 30
  • 122
  • 169
Kumar Vivek Mitra
  • 33,294
  • 6
  • 48
  • 75
  • Kumar. Thanks for your response. However, re: "i hope you have set the path of android tools folder in your path" I listed my path settings under "My Environment". Under "Candidate solutions i've tried" I mention going through resetting the adb using your method and others. A faulty cable connection does not account for the same problem in the emulator. That I can send monkey commands to the device over that physical connection, as mentioned in my post, suggests that there is no problem with the physical connection. – John Bentley Jul 02 '12 at 05:18
0

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.

biegleux
  • 13,179
  • 11
  • 45
  • 52
  • Thanks. That something to look out for when having these kinds of symptoms. However, it doesn't apply in my case (the issue occurs in the emulator to). – John Bentley Sep 01 '12 at 10:15
0

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.

Marcelo
  • 2,075
  • 5
  • 21
  • 38
  • Thanks mthama. The USB situation shouldn't be relevant given the problem lies with the emulator as well as a device. But, on your prompting. I tried connecting directly to my on board USB port (I do normally connect via a USB hub(. As with the hub situation the device is recognized but I get the same "Failed to install" error. Did you have problems connecting to the emulator that where resolved by changing USB ports? – John Bentley Sep 23 '12 at 08:47
0

you could try this:

  1. Open the "Android Virtual device Manager"
  2. Select from one the listed devices there and run it.
  3. 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!"

ppreetikaa
  • 1,149
  • 2
  • 15
  • 22
cristy
  • 317
  • 3
  • 9
0

This is what I do on my Win7 64 bit system when this happens:

  1. Close Eclipse
  2. Kill adb.exe and all copies of emulator-arm.exe from task manager
  3. Open Eclipse
  4. Change to DDMS view and make sure you can see Devices
  5. Open Window / ADV Manager
  6. Select required emulator and press Start
  7. 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.
  8. 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! Mark

Mark
  • 1,360
  • 3
  • 20
  • 37
0

if you are not in admin account, make sure parental controls are turned off.It worked for me.