Falha ao instalar devido ao tempo limite no emulador

Ao tentar instalar um .apk do Eclipse, seja em um emulador do Android ou em um dispositivo físico (via USB), recebo um erro "Falha ao instalar * .apk no dispositivo '*: timeout". O .apk não é encontrado no emulador nem no dispositivo físico (Samsung Galaxy S2, enraizado).

Se eu evitar o eclipse e apenas usar a linha de comando, também não consigo instalar um .apk.

Por que um novo post sobre isso?

Há várias outras postagens do stackoverflow que fazem referência ao erro "Falha ao instalar ...". Eu criei uma nova postagem por alguns motivos:

A maioria dos outros posts não é detalhada.O post relevante proeminente,Erro do Android: falha ao instalar o * .apk no dispositivo *: tempo limite, para o pôster original, aplica-se somente a conexões de dispositivos físicos. Portanto, é um caso diferente, embora com sintomas semelhantes.Todas as soluções candidatas nesse post, e várias outras, eu tentei. Estes estão listados abaixo em "Soluções candidatas que eu tentei".

Este post é longo, pois os passos que tomei são longos, como foi garantido pelo bug. Se você não quer ler, ou pelo menos escanear, este post, por favor, não comente.

Meu ambiente

SO HOST: Windows XP SP3

Java: Java SDK versão 1.6.0_32

VARIÁVEIS DE AMBIENTE DO 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ássico instalado) Indigo. Versão 3.7.2

ANDROID SDK

Revisão do Android SDK Tools: 20. (Testado principalmente com a revisão 19).Ferramentas da Plataforma Android SDK: 11.Plug-in ADT ("Android Development Toolkit", plug-in do Eclipse) versão: 20.0.0.v201206010423-369331 (também com a versão anterior 18.0.0.v201203301501-306762).Plataforma segmentada por seu projeto e versão da plataforma em execução no emulador. Tentei cada um fora:Android 4.0.3 (API 15)Android 2.2 (API 8)Andorid 2.1 (API 7)

CELULAR: Samsung Galaxy S2 executando Android Ice Cream Sandwhich (ICS) 4.0.3

ANT: 1.8.2

Etapas que passo para produzir os erros.

Usando o Eclipse para tentar instalar um .apk no emulador:

Eclipse aberto (que carrega meu espaço de trabalho com um único aplicativo android nele).Execute meu aplicativo android usando uma configuração de execução configurada anteriormente.O "Seletor de dispositivos Android" é iniciado (configurei minha configuração de execução para ativá-la manualmente).No Seletor de dispositivos Android, selecionei meu avd (segmentação para Android 2.2) e clique em OK.O emulador é aberto com "5554: jlbavd2_2". Meu nome de AVD é "jlbavd2_2".Deixo o emulador aberto. No Eclipse, abro a visualização do DDMS. No painel "Dispositivos", clico no triângulo branco e escolho "Redefinir adb".

No console do Eclipse, vista do Android, recebo

[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!

No console do Eclipse, na saída do DDMS, recebo:

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

Às vezes (talvez eu faça etapas ligeiramente diferentes) eu recebo:

[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!

Observe o "bind: erro desconhecido". Às vezes esse erro acontece, às vezes isso não acontece.

Se eu desconectar meu cabo ethernet no roteador de hardware, recebo o seguinte:

[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!

Observe o "Aviso: Nenhum servidor DNS encontrado"

Usando o Eclipse para tentar instalar um .apk em um dispositivo físico (rooteado no Samsung Galaxy S2. 4.0.3 com a depuração USB ativada) e depois de passar por etapas semelhantes como acima, eu entro no console do Eclipse, Saída 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!

O mesmo tipo de erro que ao tentar instalar no emulador.

Ao usar apenas a linha de comando e, assim, evitar o Eclipse, eu sigo as seguintes etapas:

Abra um prompt de comando do Windows no meu diretório de trabalho (estou usando C: \ Data \ Sda \ Código \ Mobile \ Android \ Examples> ").

alvos da lista do android.

Eu obtenho o meu id de destino (eu escolho Android 2.2).

android criar projeto --target 3 --name MyAppCmd ​​--path ./MyAppCmd ​​--activity MyAppCmdActivity --package au.com.myorg.myappcmd

Eu recebo uma série de saída com aparência saudável "Diretório do projeto criado ...", "Arquivo adicionado ..."

No Windows, clico duas vezes em "AVD Manager.exe".Eu lanço meu avd (que tem como alvo o Android 2.2)

Voltar para minha janela de comando

cd MyAppCmd

depuração de formigas

Depois de uma lista de saída eu recebo "BUILD SUCCESSFUL ..." (Em uma ocasião anterior eu tive que editar C: \ android \ android-sdk \ platform-tools \ dx.bat para alterar "set defaultXmx = -Xmx1024M" para " defina defaultMx = -Xmx512M "para tornar a compilação bem-sucedida). Eu observo que bin / MyAppCmd-debug.apk existe.

Eu tento uma instalação com

adb install bin / MyAppCmd-debug.apk

Saída:

* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: device offline

dispositivos adb

List of devices attached
emulator-5554   device

adb install bin / MyAppCmd-debug.apk

Não há mais saída na janela de comando. Nenhuma mensagem de erro. Apenas um cursor piscando, sem mensagem de erro ou sucesso e sem retorno para o prompt de comando ">".

Eu fecho a linha de comando e abro um novo.

Eu obtenho o mesmo resultado (um cursor piscando, etc.) se eu tentar um comando push (temp.txt foi criado anteriormente no meu sistema windows) ...

adb push temp.txt /sdcard/temp.txt

Soluções candidatas que eu tentei

Eclipse relacionado:

Seguiu os passos deO Eclipse não está falando com o emuladorAumentou o tempo limite de conexão do ADB. Eclipse> Janela> Preferências> Android> DDMS> "Tempo limite de conexão do ADB (ms):" = 10000 (também tentei 60000).Executando o aplicativo duas vezes (e escolhendo o emulador atualmente em execução ou o telefone móvel novamente).Limpei meu projeto: Eclipse> Project> Clean ...Eclipse Reinicializado.Eclipse rebaixado de Indigo (2.7.x) para Helios (2.6.x).

Android relacionados:

Redefina o ADB de várias maneiras: Comando "Reconfigurar ADB" na perspectiva do Eclipse DDMS (no triângulo da janela Dispositivos); linha de comando com "adb kill-server" e "adb start-server"; e usando o Gerenciador de Tarefas do Windows para matar o adb.exe.Reinstalando os drivers USB Samsung OEM (usando KIES> Ferramentas> Solucione o erro de conexão).Instalando meu SDK do Android em um diretório sem espaços em qualquer lugar nos caminhos. Ou seja, C: \ Android \ android-sdk. Isso implicou uma reinstalação do SDK, anteriormente localizado em C: \ Arquivos de programas \ Android \ android-sdkMeu projeto Android é instalado em um diretório sem espaços em qualquer lugar no caminho.Excluindo e recriando o avd (tanto do Android AVD Manager quanto do Windows Explorer).Usando diferentes AVDs que visam platfroms diferentes (Android 2.2 e Android 4.0.3).Logo após o Emulador ser aberto, mas antes que ele atinja o tempo limite: desbloqueando o telefone V esperando até que o tempo limite com o telefone bloqueado (no emulador).

Verificado que tenho no meu AndroidManifest.xml:

  <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" /> 

Ambiente relacionado (PC e telefone):

Reinicie meu telefone.Reiniciei meu PC de desenvolvimento.Desligando meu firewall de software e hardware.Torneamento da Proteção em Tempo Real do MS Security Essentials.Desativado minha lista de hosts.Java Reinstalado.Inicializando no modo de segurança do Windows e executando o Eclipse.Matar manualmente a maioria dos outros processos de aplicação TCP / IP (por exemplo, GoogleDesk.exe, Apache Server PunkBuster, etc), ver o que está disponível emSysinternals TCPView.Desconectado o cabo Ethernet do meu PC.Outra informação

Alguns comandos adb funcionam.

Por exemplo, o seguinte faz a tela do emulador dançar (como é esperado).

macaco de concha adb -v 100

Eu posso listar os dispositivos e recuperar corretamente seu estado com

dispositivos adb.

Portanto, há comunicação parcial entre um cliente adb e um daemon adb (por meio de um servidor adb).

Eu sou relativamente novo no desenvolvimento do Android. No entanto, instalei o .apks com sucesso no emulador e no meu dispositivo há cerca de 6 meses (do WinXP PC, estou agora tentando fazer funcionar). Eu ignorei o Android desde então. Quando voltei para ele recentemente, tive algum problema ao construir meus .apks que foram corrigidos, excluindo meu debug.key e permitindo que o eclipse gerasse um novo.

Nos 6 meses que se passaram, minha máquina de desenvolvimento mudou de todas as maneiras. Instalando novos servidores e aplicativos, alterando configurações de firewall, etc. Assim, pode haver alguma mudança que estou negligenciando.

Eu também tenho um laptop Win7 do qual eu tenho instalado com sucesso .apks para o emulador e dispositivo físico conectado USB. Ou seja, eu tenho uma cópia do Android SDK, Eclipse, JAVA, etc instalado na máquina Win7. Então, eu sei que tenho um controle geral sobre o procedimento correto para configurar tudo corretamente.

Eu posso instalar o .apk manualmente clicando duas vezes no arquivo através do ES File Explorer do meu telefone (que se conecta à minha máquina de desenvolvimento sem fio).

Pensamentos finais

Parece que há algum problema com o cliente adb, adb server ou adb daemon conversando entre si totalmente.

Eu tenho três hipóteses:

É minha culpa. Existe algum tipo de conflito TCP / IP que rompe algumas das conexões entre o cliente adb, adb server ou adb daemon. Isto é devido a alguma configuração bizarra no meu PC (como qualquer desenvolvedor eu mudo várias configurações no meu sistema o tempo todo). No entanto, tentei desativar a segurança e outros processos TCP / IP potencialmente conflitantes (até onde eu sei).Alguma questão simples eu continuo com vista.É culpa do google / Android. Ou seja, há um bug no adb do Android que requer uma atualização das ferramentas da plataforma do Android SDK. Eu acho que isso é menos provável, já que eu esperaria que tivesse surgido até agora.Atualizações para postar

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

Conclua a reinstalação (novamente) de Java, Eclipse e Android SDK com algumas variações na instalação (por exemplo, Java instalado na raiz, SDK do Android nos "Arquivos de Programas" padrão e desativando todos os softwares de segurança durante a instalação).

Eu notei um erro "Parando servidor ADB falhou (código -1)." no Gerenciador do Android SDK Registre e instale as várias partes da plataforma / ferramentas (por meio do gerenciador).

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

Especificações "My Environment" reajustadas para refletir os testes mais recentes.

questionAnswers(14)

yourAnswerToTheQuestion