android - programacion - Error al instalar debido a Timeout en Emulator
manual de programacion android pdf (14)
Al intentar instalar un .apk desde Eclipse, ya sea a un emulador de Android o a un dispositivo físico (a través de USB), aparece el error "Error al instalar * .apk en el dispositivo" * ": tiempo de espera". El .apk no se encuentra en el emulador ni en el dispositivo físico (Samsung Galaxy S2, rooteado).
Si evito eclipse, y solo uso la línea de comando, tampoco puedo instalar un .apk.
¿Por qué una nueva publicación sobre esto?
Hay varias otras publicaciones de stackoverflow que hacen referencia al error "Falló la instalación ...". Creé una nueva publicación por varias razones:
- La mayoría de las otras publicaciones no son detalladas.
- La publicación relevante destacada, error de Android: no se pudo instalar * .apk en el dispositivo *: el tiempo de espera , para el póster original, se aplica solo a las conexiones de dispositivos físicos. Entonces es un caso diferente, aunque con síntomas similares.
- Todas las soluciones candidatas en esa publicación, y varias otras, lo he intentado. Estos se enumeran a continuación en "Soluciones candidatas que he probado".
Esta publicación es larga ya que los pasos que he tomado son largos, como lo justifica el error. Si no quiere leer, o al menos escanear, esta publicación, por favor no haga ningún comentario.
Mi entorno
HOST OS: Windows XP SP3
JAVA: Java SDK versión 1.6.0_32
VARIABLES DEL ENTORNO DE 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 (clásico instalado) Indigo. Versión 3.7.2
SDK ANDROID
- Revisión de herramientas SDK de Android: 20. (Principalmente probado con la revisión 19).
- Herramientas de Android SDK Platform: 11.
- Complemento ADT ("Android Development Toolkit", complemento de Eclipse) versión: 20.0.0.v201206010423-369331 (también con la versión anterior 18.0.0.v201203301501-306762).
- Plataforma dirigida por su proyecto y Versión de la plataforma que se ejecuta en el emulador. Intenté cada uno:
- Android 4.0.3 (API 15)
- Android 2.2 (API 8)
- Andorid 2.1 (API 7)
MÓVIL: Samsung Galaxy S2 con Android Ice Cream Sandwhich (ICS) 4.0.3
ANT: 1.8.2
Pasos que paso para producir los errores.
Usando Eclipse para intentar instalar un archivo .apk en el emulador:
- Abrir eclipse (que carga mi espacio de trabajo con una sola aplicación de Android).
- Ejecutar mi aplicación de Android usando una configuración de Ejecución configurada previamente.
- Se inicia el "Selector de dispositivos Android" (configuré la configuración de ejecución para iniciarla manualmente).
- En el Selector de dispositivos Android, selecciono mi avd (con Android 2.2) y hago clic en Aceptar.
- El emulador se abre con "5554: jlbavd2_2". Mi nombre AVD es "jlbavd2_2".
- Dejo el emulador abierto. En Eclipse, abro la vista DDMS. En el panel "Dispositivos", hago clic en el triángulo blanco y elijo "Restablecer adb".
En la consola de Eclipse, vista de Android, obtengo
[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!
En la consola Eclipse, salida DDMS, obtengo:
...
[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
A veces (quizás hago pasos ligeramente diferentes) obtengo:
[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!
Tenga en cuenta el "enlace: error desconocido". Algunas veces este error ocurre, otras veces no.
Si desenchufo mi cable de ethernet a mi enrutador de hardware obtengo lo siguiente:
[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!
Tenga en cuenta la "Advertencia: no se encontraron servidores DNS"
Usando Eclipse para intentar instalar un .apk en un dispositivo físico (rooteado Samsung Galaxy S2. 4.0.3 con la depuración de USB habilitada), y después de seguir los pasos similares a los anteriores, me meto en la consola de Eclipse, Salida de 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!
El mismo tipo de error que cuando se intenta instalar en el emulador.
Cuando uso solo la línea de comando y, por lo tanto, evito Eclipse, realizo los siguientes pasos:
Abra un símbolo del sistema de Windows en mi directorio de trabajo (estoy usando C: / Data / Sda / Code / Mobile / Android / Examples> ").
objetivos de la lista de Android.
Obtengo mi ID de destino (elijo Android 2.2).
android create project --target 3 --name MyAppCmd --path ./MyAppCmd --activity MyAppCmdActivity --package au.com.myorg.myappcmd
Obtengo una serie de salida de aspecto saludable "Directorio de proyectos creado ...", "Archivo agregado ..."
- En Windows hago doble clic en "AVD Manager.exe".
- Lanzo mi avd (que apunta a Android 2.2)
Volver a mi ventana de comando
cd MyAppCmd
depuración de hormigas
Después de una lista de resultados obtengo "BUILD SUCCESSFUL ..." (En una ocasión anterior tuve que editar C: / android / android-sdk / platform-tools / dx.bat para cambiar "set defaultXmx = -Xmx1024M" a " establezca defaultMx = -Xmx512M "para que la compilación tenga éxito). Observé que bin / MyAppCmd-debug.apk existe.
Intento una instalación con
bin de instalación adb / MyAppCmd-debug.apk
Salida:
* daemon not running. starting it now on port 5037 * * daemon started successfully * error: device offline
dispositivos adb
List of devices attached emulator-5554 device
bin de instalación adb / MyAppCmd-debug.apk
No hay más salida en la ventana de comandos. Sin mensaje de error Solo un cursor parpadeante, ningún mensaje de error o éxito, y no regresa al símbolo del sistema ">".
Cerré la línea de comando y abrí una nueva.
Obtengo el mismo resultado (un cursor parpadeante, etc.) si intento un comando de inserción (temp.txt se ha creado previamente en mi sistema de Windows) ...
adb push temp.txt /sdcard/temp.txt
Soluciones candidatas que he intentado
Relacionado con Eclipse:
- Seguido los pasos de Eclipse no está hablando con el emulador
- Aumentó el tiempo de conexión de ADB. Eclipse> Ventana> Preferencias> Android> DDMS> "Tiempo de espera de conexión ADB (ms):" = 10000 (también probé 60000).
- Ejecutar la aplicación dos veces (y elegir el emulador en ejecución o el teléfono móvil de nuevo).
- Limpié mi proyecto: Eclipse> Proyecto> Limpiar ...
- Eclipse reiniciado.
- Eclipse degradado de Indigo (2.7.x) a Helios (2.6.x).
Relacionado con Android:
- Restablezca el adb de varias maneras: comando "Restablecer ADB" desde la perspectiva Eclipse DDMS (desde el triángulo de la ventana Dispositivos); línea de comando con "adb kill-server" y "adb start-server"; y utilizando el administrador de tareas de Windows para matar adb.exe.
- Reinstalación de los controladores USB de Samsung OEM (Utilizando KIES> Herramientas> Solucionar problemas de error de conexión).
- Instalar mi SDK de Android en un directorio sin espacios en ninguna parte de las rutas. A saber, C: / Android / android-sdk. Esto implicó una reinstalación del SDK, anteriormente ubicado en C: / Archivos de programa / Android / android-sdk
- Mi proyecto Android está instalado en un directorio sin espacios en ninguna parte de la ruta.
- Eliminar y volver a crear el avd (ambos desde el Administrador de AVD de Android y usando el Explorador de Windows).
- Utilizando diferentes AVD que se dirigen a diferentes plataformas (Android 2.2 y Android 4.0.3).
- Justo después de que se abra el emulador pero antes de que se agote el tiempo de espera: desbloqueo del teléfono V esperando a que se agote el tiempo de espera con el teléfono bloqueado (en el emulador).
Verificado Tengo en mi AndroidManifest.xml:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
Medio ambiente relacionado (PC y teléfono):
- Reinicié mi teléfono.
- Reinicié mi PC de desarrollo.
- Apagando mi firewall de software y hardware.
- Cambio de MS Security Essentials Protección en tiempo real.
- Desactivado mi lista de hosts.
- Reinstalado Java.
- Arranque en el modo seguro de Windows y ejecute Eclipse.
- Eliminación manual de la mayoría de los demás procesos TCP / IP de aplicaciones (por ejemplo, GoogleDesk.exe, Apache Server PunkBuster, etc.) al ver lo que está disponible en Sysinternals TCPView .
- Desconecté el cable Ethernet de mi PC.
Otra información
Algunos comandos adb funcionan.
Por ejemplo, lo siguiente hace que la pantalla del emulador baile (como es de esperar).
adb shell monkey -v 100
Puedo enumerar los dispositivos y recuperar correctamente su estado con
dispositivos adb.
Entonces, hay una comunicación parcial entre un cliente adb y un daemon adb (a través de un servidor adb).
Soy relativamente nuevo en el desarrollo de Android. Sin embargo, he instalado .apks con éxito en el emulador y mi dispositivo hace aproximadamente 6 meses (desde WinXP PC ahora estoy tratando de hacer el trabajo). He ignorado Android desde entonces. Cuando volví recientemente, tuve algunos problemas para compilar mis archivos .apks, que se solucionó al eliminar mi debug.key y permitir que eclipse generara uno nuevo.
En los 6 meses transcurridos, mi máquina de desarrollo ha cambiado en todo tipo de formas. Instalar nuevos servidores y aplicaciones, cambiar la configuración del firewall, etc. Así que podría haber algún cambio que esté pasando por alto.
También tengo un ordenador portátil Win7 desde el que he instalado satisfactoriamente .apks en el emulador y el dispositivo físico conectado por USB. Es decir, tengo una copia de Android SDK, Eclipse, JAVA, etc. instalada en la máquina Win7. Así que sé que tengo un conocimiento general sobre el procedimiento correcto para configurarlo todo correctamente.
Puedo instalar el .apk manualmente haciendo doble clic en el archivo a través de ES File Explorer desde mi teléfono (que se conecta a mi máquina de desarrollo de forma inalámbrica).
Pensamientos finales
Parece que hay algún problema con el cliente adb, el servidor adb o el daemon adb al hablar entre ellos por completo.
Tengo tres hipótesis:
- Es mi culpa. Que existe algún tipo de conflicto TCP / IP que rompe algunas de las conexiones entre el cliente adb, el servidor adb o el daemon adb. Esto se debe a una configuración anormal en mi PC (como cualquier desarrollador, modifico varias configuraciones en mi sistema todo el tiempo). Sin embargo, he intentado deshabilitar la seguridad y otros procesos de TCP / IP potencialmente conflictivos (por lo que puedo ver).
- Algún problema simple que sigo pasando por alto.
- Es culpa de Google / Android. Es decir, hay un error en el adb de Android que requiere una actualización de las herramientas de la plataforma Android SDK. Creo que esto es menos probable, ya que esperaba que hubiera salido a la superficie por ahora.
Actualizaciones para publicar
2012-06-22 18:55 (UTC):
Complete la reinstalación (nuevamente) de Java, Eclipse y el SDK de Android con algunas variaciones en la instalación (por ejemplo, Java instalado para rootear, SDK de Android en los "Archivos de programa" predeterminados y desactivando todo el software de seguridad durante la instalación).
Noto un error "Error al detener el servidor ADB (código -1)". en el Administrador de SDK de Android Inicie sesión e instale las diversas partes de la plataforma / herramientas (a través del Administrador).
06-06-20 06:15 (UTC):
Reajustado las especificaciones de "Mi entorno" para reflejar las últimas pruebas.
Al principio tienes que actualizar todos los controladores de tu sistema, luego instalar el android studio de manera básica, luego se resolverá el error. Pruebe primero porque también me enfrento a este problema varias veces ...
Asegúrate de trabajar en una CUENTA DE ADMINISTRADOR. Este problema también me frustró, pero cuando cambié a una cuenta de administrador (en Windows Vista), el adb parecía instalar correctamente el apk en el dispositivo.
Cuando esto sucede en dispositivos físicos, generalmente intentamos solucionarlo desenchufando, alternar el "modo de depuración de Android" en el dispositivo y reconectando.
Esto es lo que hago en mi sistema Win7 de 64 bits cuando esto sucede:
- Cerrar Eclipse
- Mata adb.exe y todas las copias de emulator-arm.exe del administrador de tareas
- Abrir Eclipse
- Cambie a la vista de DDMS y asegúrese de que pueda ver los dispositivos
- Ventana Abierta / ADV Manager
- Seleccione el emulador requerido y presione Inicio
- Mire el panel Dispositivos en DDMS, para ver si se muestra el emulador. Si no se muestra antes de que la barra de progreso de la ventana de Inicio haya terminado, entonces el emulador no se cargará esta vez, así que cierre el emulador.
- Luego repite desde 6.
Para mí, el emulador nunca comienza la primera vez, pero 9 de cada 10 veces se iniciará con éxito en el segundo intento.
¡Ojalá arreglen esto! marca
He resuelto el problema, muchos meses después, al actualizar a un entorno completamente nuevo. Específicamente, una máquina nueva con una nueva instalación de Windows 8. También evité instalar el conjunto de aplicaciones de Comodo (no sé si esto estaba causando el problema).
Entonces, aunque esta no es una solución directa al problema (aún no está claro qué fue lo que la causó) tal vez podría servir como otro ejemplo en el que una solución alternativa o lateral a un problema a veces es una buena opción de último recurso.
Intente cambiar el tiempo de espera de la conexión ADB. Creo que por defecto es que a 5000ms y cambié el mío a 10000ms para deshacerme de ese problema.
Si está en Eclipse, puede hacerlo pasando por
Ventana-> Preferencias -> Android -> DDMS -> Tiempo de espera de conexión ADB (ms)
Mi enfoque simple es simplemente reiniciar el emulador (no eclipse). Simplemente funciona sin que tenga que enviar ningún comando adb. Sin embargo, rara vez sucede con el dispositivo físico.
Prueba estos ...
- Apaga tu eclipse.
- Ir a cmd y escriba: (Espero que haya establecido la ruta de la carpeta de herramientas de Android en su camino)
adb kill-server
adb start-server
salida será:
daemon not running. starting it now on port 5037
daemon started successfully
Empieza Eclipse.
Enciende tu emulador, si estás en un dispositivo físico, asegúrate de que el cable no esté suelto y bien conectado
Si su tiempo de espera puede ser una conexión ADB con el eclipse, necesitará más tiempo límite de tiempo de espera. Así que prueba esto:
Prefrences>android>DDMS and you will see ADB connection timeout extend it to 20000
Simplemente desenchufar y enchufar el teléfono (físico) funciona. Esto me sucede (demasiadas veces) cuando el teléfono está conectado demasiado tiempo y no se hace nada.
Tuve el mismo problema; al copiar * .apk en la memoria del teléfono celular e instalarlo directamente en el dispositivo (por Myfiles y seleccionando * .apk), funcionó bien. Sospecho que hay un problema con la conexión USB (demasiados errores, Eclipse es demasiado lento debido a otros procesos que usan el USB, etc.).
puedes intentar esto:
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
Funcionó para mí Intenté esto con un emulador en eclipse. Toma un tiempo antes de que se ejecute la aplicación. Para mí, tomó 33 segundos. Espere hasta que el mensaje en la consola diga "¡éxito!"
si no está en la cuenta de administrador, asegúrese de que los controles parentales estén desactivados. Funcionó para mí.
Tengo el mismo comportamiento mencionado en su pregunta y probé todas las soluciones que usted indicó. Intenta esto: cambia el puerto USB. Para mí, tengo un total de 4 puertos USB (dos en frente de mi escritorio y los otros dos en la parte posterior). Los dos que están en el frente me dan [timeout install] haga lo que haga. El primero en la parte trasera que he intentado ha funcionado. Me pregunto si podría tratarse de algún problema relacionado con la versión del puerto USB o el USB integrado Motherboard.