Eclipse から .apk を Android エミュレーターまたは物理デバイス (USB 経由) にインストールしようとすると、「デバイス '*' に *.apk をインストールできませんでした: タイムアウト」というエラーが表示されます。.apk は、エミュレーターにも物理デバイスにも見つかりません (Samsung Galaxy S2、ルート化)。
Eclipse を避けてコマンド ラインだけを使用すると、.apk をインストールすることもできません。
なぜこれについて新しい投稿をするのですか?
「インストールに失敗しました...」エラーを参照するスタックオーバーフローの投稿が他にもいくつかあります。いくつかの理由により、新しい投稿を作成しました。
- 他の投稿のほとんどは詳細ではありません。
- 著名な関連投稿Android エラー: デバイスに *.apk をインストールできませんでした *: タイムアウト、元のポスターの場合、物理デバイス接続にのみ適用されます。似たような症状ではありますが、これは別のケースです。
- その投稿のすべての候補ソリューションと、他のいくつかのソリューションを試しました。これらは、「私が試したソリューションの候補」の下にリストされています。
バグによって保証されたように、私が行った手順は長いため、この投稿は長くなります。読みたくない、または少なくともスキャンしたくない場合は、この投稿にコメントしないでください。
私の環境
ホスト OS: 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 も含む)。
- プロジェクトが対象とするプラットフォームと、エミュレーターで実行されているプラットフォームのバージョン。それぞれ試してみました:
- アンドロイド 4.0.3 (API 15)
- Android 2.2 (API 8)
- アンドリッド 2.1 (API 7)
モバイル: Android Ice Cream Sandwhich (ICS) 4.0.3 を実行する Samsung Galaxy S2
アリ: 1.8.2
エラーを生成するための手順。
Eclipse を使用して、.apk をエミュレーターにインストールしようとします。
- Eclipse を開きます (ワークスペースに単一の Android アプリケーションをロードします)。
- 以前に構成した実行構成を使用して Android アプリケーションを実行します。
- 「Android Device Chooser」が起動します (これを手動で起動するように実行構成を設定しました)。
- Android Device Chooser で avd (Android 2.2 をターゲット) を選択し、[OK] をクリックします。
- エミュレーターは「5554:jlbavd2_2」で開きます。私の AVD 名は「jlbavd2_2」です。
- エミュレータを開いたままにします。Eclipse で DDMS ビューを開きます。[デバイス] ペインで白い三角形をクリックし、[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!
「bind: Unknown error」に注意してください。このエラーが発生する場合と発生しない場合があります。
イーサネット ケーブルをハードウェア ルーターから外すと、次のようになります。
[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 を物理デバイス (ルート化された Samsung Galaxy S2. 4.0.3、USB デバッグが有効) にインストールしようとし、上記と同様の手順を実行した後、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
「プロジェクトディレクトリを作成しました...」、「ファイルを追加しました...」という一連の健全な出力が得られます
- Windows では、「AVD Manager.exe」をダブルクリックします。
- avd を起動します (これは Android 2.2 を対象としています)
コマンド ウィンドウに戻る
cd MyAppCmd
蟻のデバッグ
出力のリストの後、「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
コマンド ウィンドウにそれ以上の出力はありません。エラー メッセージはありません。カーソルが点滅するだけで、エラー メッセージや成功メッセージは表示されず、コマンド プロンプト ">" にも戻りません。
コマンド ラインをシャットダウンし、新しいコマンド ラインを開きます。
プッシュ コマンドを実行すると、同じ結果 (点滅するカーソルなど) が得られます (temp.txt は以前に Windows システムで作成されています) ...
adb プッシュ temp.txt /sdcard/temp.txt
私が試した候補ソリューション
日食関連:
- Eclipse がエミュレーターと通信していないの手順に従いました
- ADB 接続のタイムアウトを増やしました。Eclipse > Window > Preferences > Android > DDMS > "ADB connection time out(ms):" = 10000 (60000 も試しました)。
- アプリケーションを 2 回実行します (そして、現在実行中のエミュレーターまたは携帯電話を再度選択します)。
- 私のプロジェクトをきれいにしました: Eclipse > Project > Clean ...
- エクリプスを再起動しました。
- Eclipse を Indigo (2.7.x) から Helios (2.6.x) にダウングレードしました。
アンドロイド関連:
- いくつかの方法で adb をリセットします。Eclipse DDMS パースペクティブ ([デバイス] ウィンドウの三角形) からの「Reset ADB」コマンド。「adb kill-server」および「adb start-server」を使用したコマンドライン。Windows タスク マネージャーを使用して adb.exe を強制終了します。
- Samsung OEM USB ドライバーを再インストールします (KIES > Tools > Troubleshoot connection error を使用)。
- パスのどこにもスペースを入れずに Android SDK をディレクトリにインストールします。つまり、C:\Android\android-sdk です。これには、以前は C:\Program files\Android\android-sdk にあった SDK の再インストールが必要でした。
- 私の Android プロジェクトは、パスのどこにもスペースがないディレクトリにインストールされます。
- avd の削除と再作成 (Android AVD Manager と Windows Explorer の両方から)。
- さまざまなプラットフォーム (Android 2.2 および Android 4.0.3) をターゲットとするさまざまな AVD を使用する。
- エミュレーターが開いた直後でタイムアウトになる前: 電話のロックを解除し、(エミュレーターで) 電話がロックされた状態でタイムアウトになるまで待ちます。
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 シェルモンキー -v 100
デバイスを一覧表示し、それらの状態を正しく取得できます
adb デバイス。
そのため、adb クライアントと adb デーモンの間で (adb サーバーを介して) 部分的な通信が行われます。
私はAndroid開発に比較的慣れていません。ただし、約6か月前にエミュレータとデバイスに.apksを正常にインストールしました(現在動作させようとしているWinXP PCから)。それ以来、私はAndroidを無視しています。最近戻ってきたとき、.apks のビルドに問題がありました。これは、debug.key を削除し、Eclipse が新しいものを生成できるようにすることで修正されました。
その間の 6 か月で、私の開発マシンはさまざまな方法で変更されました。新しいサーバーとアプリのインストール、ファイアウォール設定の変更など。見落としている変更がある可能性があります。
また、.apk をエミュレーターと USB 接続の物理デバイスに正常にインストールした Win7 ラップトップもあります。つまり、Win7 マシンに Android SDK、Eclipse、JAVA などのコピーがインストールされています。したがって、すべてを正しく設定するための正しい手順について、一般的なハンドルを持っていることを知っています。
.apk を手動でインストールするには、携帯電話 (開発マシンにワイヤレスで接続) から ES ファイル エクスプローラーを介してファイルをダブルクリックします。
最終的な考え
adb クライアント、adb サーバー、または adb デーモンが互いに完全に対話する際に何らかの問題があるようです。
私には 3 つの仮説があります。
- それは私のせいです。adb クライアント、adb サーバー、または adb デーモン間の接続の一部を切断する、ある種の TCP/IP 競合があること。これは、PC の奇妙な設定によるものです (他の開発者と同様に、システムのさまざまな設定を常に変更しています)。ただし、セキュリティやその他の競合する可能性のある TCP/IP プロセスを無効にしようとしました (私が知る限り)。
- 私が見落としているいくつかの単純な問題。
- Google/Android のせいです。つまり、Android SDK プラットフォーム ツールの更新が必要な Android adb にバグがあります。私はそれが今までに表面化したと予想していたので、これは可能性が低いと思います.
投稿の更新
2012-06-22 18:55 (UTC):
Java、Eclipse、および Android SDK を (再び) 完全に再インストールし、いくつかのバリエーションをインストールします (たとえば、Java をルートにインストールし、Android SDK をデフォルトの「Program Files\」にインストールし、インストール中にすべてのセキュリティ ソフトウェアをオフにします)。
「ADB サーバーの停止に失敗しました (コード -1)」というエラーに注意してください。プラットフォーム/ツールのさまざまな部分のインストール中およびインストール中の Android SDK Manager ログ (Manager 経由)。
2012-06-30 06:15 (UTC):
最新のテストを反映するように「My Environment」の仕様を再調整しました。