コードハイライト用

せっかく無職になったから、働いてる時に忙しくて出来なかった色々な事をやってみようと場当たり的に始めたブログ。 だったけど就職決まっちゃいました。

2010年10月26日火曜日

[Android]謎エラー

たまにはプログラムの話もしよう。

Androidの開発をしていて、エミュレータでさぁ実行!と思ったらよく下記のエラーが発生します。

Failed to upload XXXX.apk on device 'emulator-5554'
java.io.IOException 発生: Unable to upload file: Local file doesn't exist.
Launch canceled!

emulator-5554に実行ファイル(apkファイル)をアップしたいけど
apkファイルがねーよ、と。そういう旨のエラーです。

------------------------------------

一瞬、え?となりますが、これは実際正しいことを言っていて
確かに該当プロジェクトフォルダのbinフォルダを見てみると、apkファイルがありません。

恐らくデフォルトの設定では、
プロジェクト(P)->自動的にビルド にチェックが入っており、
ファイルを保存する度にビルドが行われ、常にapkがある状態になるはずです。

じゃなんでapkファイル無いのさ?と言う話なんですが・・・。
調べてみたところ、私の環境で発生する条件は見つかりました。
ややこしいのですが、別のエラーと絡んでいます。

エラーに至る経緯、細かく書くと長いのでざっくりと
---------------------------------------------------------------------------
1.main.xmlを編集
2.確認するために実行
3.実行対象が main.xml のまま実行しようとしてしまう
4.main.out.xml というファイルが出来てしまってエラー
 ※ res\layout\main.xml:0: ERROR Resource entry main is already defined.とか出ます
5.一度発生してしまうと、main.out.xmlを削除しない限り同様のエラーで実行できない
---------------------------------------------------------------------------
と言う感じです。
(strings.xml でも同様に発生します。メッセージは違いますが)

エラーを出してしまうとapkが消えてしまいます。

エラーを解消する為に main.out.xml を削除しても
「ファイルを保存」していない為、自動的にビルドのオプションが働かず、結果的に
実行ファイルが無いという状態になってしまっていました。

一応の解決法は、
ソースでもちょっと改変(Enter⇒BSとか)して上書き保存すれば改めてビルドされるので
それでapkファイルは生成され、通常通り動くようになります。
もしくはビルドを常に手動で・・・っていう感じでしょうか?

------------------------------------

エラーで検索したけど意外と引っかからなかったので、メモがてら。
もしかして超当たり前な話なのかも。

2 件のコメント:

  1. 僕も悩んでたので、助かりました(感謝)

    返信削除
  2. コメントありがとうございます!
    お役に立てたようで、嬉しい限りです。

    返信削除