32

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」の仕様を再調整しました。

4

14 に答える 14

3

そのタイムアウトの場合、Eclipse との ADB 接続である可能性があり、より多くのタイムアウト制限が必要になります。だからこれを試してください:

Prefrences>android>DDMS and you will see ADB connection timeout extend it to 20000

于 2012-06-20T08:53:30.193 に答える
2

ADMIN ACCOUNTで作業していることを確認してください。この問題も私を苛立たせましたが、(Windows Vista で) 管理者アカウントに切り替えると、adb はデバイスに apk を正しくインストールしたように見えました。

于 2013-01-07T02:27:02.347 に答える
2

同じ問題がありました。*.apk を携帯電話のメモリにコピーし、(Myfiles で *.apk を選択して) デバイスに直接インストールすると、問題なく動作しました。USB 接続に問題があると思われます (エラーが多すぎる、USB を使用する他のプロセスが原因で Eclipse が遅すぎるなど)。

于 2013-03-27T23:11:08.300 に答える
2

これが物理デバイスで発生した場合、通常、デバイスのプラグを抜き、「Android デバッグ モード」に切り替えてから再接続することで修正を試みます。

于 2012-08-04T01:23:34.120 に答える
1

私の簡単なアプローチは、エミュレーターを再起動することです(Eclipseではありません)。adb コマンドを送信しなくても機能します。ただし、物理デバイスで発生することはめったにありません。

于 2012-07-24T11:04:29.067 に答える
1

数か月後、まったく新しい環境にアップグレードすることで、この問題を解決しました。具体的には、Windows 8 を新規インストールした新しいマシンです。また、Comodo スイートのインストールも避けました (これが問題の原因であるかどうかはわかりません)。

したがって、これは問題の直接的な解決策ではありませんが (何が原因であるかはまだ明らかではありません)、おそらく、問題の回避策または横方向の解決策が最後の手段として適切な場合がある別の例として役立つ可能性があります。

于 2013-02-09T06:16:37.470 に答える
0

電話を抜いて差し込むだけで(物理的に)機能します。これは、電話が長時間接続されていて何も行われていないときに(何度も)発生します。

于 2012-08-20T18:30:39.613 に答える
0

あなたはこれを試すことができます:

  1. Android Virtual Device Manager」を開きます
  2. そこにリストされているデバイスから1つを選択して実行します。
  3. Android アプリを右クリック -> Run As -> Android アプリケーション

それは私のために働いた。私はEclipseのエミュレーターでこれを試しました。アプリが実行されるまでに時間がかかります。私の場合は33秒かかりました。コンソールに「Success!」というメッセージが表示されるまで待ちます。

于 2012-09-26T06:10:23.510 に答える
0

これらを試してみてください...

  • 日食をシャットダウンします。
  • cmdに移動して次のように入力します:(パスにAndroidツールフォルダーのパスを設定したことを願っています)

adb kill-server
adb start-server

出力は次のようになります。

daemon not running. starting it now on port 5037 
daemon started successfully 
  • Eclipse を起動します。

  • エミュレーターを起動します。物理デバイスを使用している場合は、ケーブルが緩んでいないこと、および正しく接続されていることを確認してください。

于 2012-06-30T06:40:38.983 に答える
0

これは、これが発生したときに Win7 64 ビット システムで行うことです。

  1. エクリプスを閉じる
  2. タスク マネージャーから adb.exe と emulator-arm.exe のすべてのコピーを強制終了します。
  3. エクリプスを開く
  4. DDMS ビューに変更し、デバイスが表示されることを確認します
  5. ウィンドウを開く / ADV マネージャー
  6. 必要なエミュレーターを選択し、[開始] を押します
  7. DDMS の [デバイス] パネルを見て、エミュレーターが表示されるかどうかを確認します。スタート ウィンドウのプログレス バーが終了する前に表示されない場合は、エミュレーターは今回は読み込まれないため、エミュレーターを閉じます。
  8. その後、6から繰り返します。

私の場合、エミュレーターは初めて起動することはありませんが、2 回目の試行で 10 回中 9 回は正常に起動します。

彼らがこれを修正してくれることを願っています!マーク

于 2012-12-26T16:51:19.370 に答える
0

私はあなたの質問に記載されているのと同じ動作をしており、あなたがリストしたすべての解決策を試しました。これを試してください:USBポートを変更してください。私の場合、合計 4 つの USB ポートがあります (デスクトップの前面に 2 つ、背面に 2 つ)。前面の 2 つは、何をしても [timeout install] になります。私が試した最初のものはうまくいきました。USB ポートのバージョン、またはマザーボードに組み込まれた USB に関連する問題ではないかと思います。

于 2012-09-21T14:59:25.750 に答える