スポンサーリンク

今から1時間で,Androidアプリの開発環境を構築し,Windows上でサンプルを動作させる手順

※改訂版として,新しいバージョンの記事が執筆されました。

今から1時間で,64ビットWindows 7上にAndroid開発環境を構築し,サンプルを動作させる手順 (※4.x系のSDKを使用)
http://language-and-engineering.hatenablog.jp/entry/20121017/AdnroidDevelopme...


Android本体を買わなくても,Androidアプリの開発と動作確認だけなら,無料で可能。

  • アプリの開発環境:EclipseやAndroid SDKを無償で利用できる。
  • アプリの実行環境:エミュレータを無償で利用できる。


以下では,Windows上でAndroidアプリの開発環境をゼロからセットアップし,

サンプルアプリケーション(Hello Worldプログラム)を動かすための手順。


そして最後に,入門用のリンク集を掲載する。

開発環境 構築手順

  • (1)Android SDKの導入
  • (2)JDKの導入
  • (3)Eclipseの導入
  • (4)Eclipse上でAndroid SDKをセットアップ
  • (5)Eclipse上でAndroid Platform APIをセットアップ


サンプルアプリケーション 動作手順

  • (6)サンプルプロジェクトの作成
  • (7)サンプルアプリの実装
  • (8)サンプルアプリの起動
  • (9)サンプルアプリの終了
  • (10)おまけ:実機上でのテスト方法


入門用リンク集

  • 初級用
  • 中級用
  • 案件情報

途中,30分ほど通信が発生する。それを含めて,急げば全体で1時間ぐらい
(JDKが導入済みの場合)


※OSはWindows Vistaを想定。


※なお,もしWindowsのユーザ名が日本語だと,Androidの仮想マシンが起動しない。
もし最初にユーザ名を日本語で設定してしまうと,後から変えても最初のユーザ名がフォルダ名として残り,利用され続けてしまう。下記URL(1)にあるような「ユーザプロファイルの移行」を実施しても無駄。
→観念して今までのアカウントを捨て,全角文字を使わずに新規アカウントを作り直すこと。URL(2)などを参照。

URL(1):Windows Vista でユーザープロファイルをコピーしたい
http://pasofaq.jp/controlpanel/nusrmg...

  • プロファイル移行時は,マイコンピュータのプロパティ→詳細設定→ユーザプロファイルの設定 でコピーを実行する。
  • しかしこの操作は,Androidエミュレータ起動時の「PANIC: Could not open AVD config file」エラーに対しては効果なし。


URL(2):Windows Vistaで,ユーザアカウントの「乗り換え」を行う際に実行した作業手順
http://language-and-engineering.hatenablog.jp/entry/20110720/p1

開発環境 構築手順

(1)Android SDKの導入

下記ページにアクセス。

右上の言語で「日本語」を選択。


中央の「Android SDK をダウンロード」リンクをクリック。

下記のページに遷移する。

PlatformがWindowsである行のリンクから

  • android-sdk_r12-windows.zip

をダウンロード。


適当な場所に展開。


(2)JDKの導入

割愛

PATHも通すこと。


参考:

JDKのインストール〜androidプログラミングの開発環境構築
http://www.techmaru.net/start/jdkinst...

(3)Eclipseの導入

入手と起動

ここでは,安定版の Galileo (3.5)なおかつ日本語パックであるPleiadesを使う。


※3.6や3.4を選ばない理由について,参考:

2010年の時点で:Eclipse3.6でAndroidのxmlファイルを編集できない
http://magpad.jugem.jp/?eid=157

  • Androidの中の人も現時点では3.6をオススメしてない


2010年の時点で:Android Platformの追加でハマった原因はEclipseだった
http://misapon.blogspot.com/2010/03/a...

  • eclipse3.4(Ganymede)でAndroid SDKをインストールしようとしてうまくいかないので3.5〜にしたらうまくいった

※日本語パックを使う理由について:

  • 日本語化されたプラットフォーム上で作業を進めることにすれば,日本語の解説ページからリソースを得やすくなるから。
  • こういった新規技術の評価導入段階では,「情報の得やすさ」が重要になる。ただし,日本語による文字化け問題には十分注意する必要があるが。

以下のページにアクセス。

  • 日本語 Eclipse / Pleiades All in One 日本語ディストリビューション (zip ファイル)

の「3.5 Galileo」をクリック。

Javaの列の

  • Standard All in One (JRE なし)

のDownloadを選択。

ダウンロード。

適当な場所に解凍。
(※解凍時はWindows付属の解凍マネージャを使うこと。Lhaplus等で解凍すると問題が発生しやすい)


ここまでの解凍内容を特定のフォルダ(D:\dev\java)配下にコピー。

以下の3フォルダが並ぶ。

  • .metadata.default
  • eclipse
  • android-sdk-windows

※なお常識的な点だが,半角スペースを含むようなフォルダを利用してはいけない。C:\Program Filesとか。


ここで,後々の事を考えて,下記のフォルダにPATHを通しておくとよい。
コマンドラインで「adb.exe」などのツールを呼び出す事が多いからだ。

  • D:\dev\java\android-sdk-windows\platform-tools

eclipse.exeを起動。初回起動は時間がかかる。

ワークスペースを聞かれるので,eclipseフォルダと並ぶ位置を指定。

  • D:\dev\java\workspace

「この選択をデフォルトとして使用し,今後この質問を表示しない」にチェック。
OKを押下。

eclipse本体が開く。

JREの設定

Eclipse上で
ウィンドウ→設定→Java→「インストール済みのJRE」で,
もしjdkではなくjreが標準VMになっている場合,
jdkを標準VMに設定しなおす。

追加ボタンを押下。

JREの型として「標準VM」を選択し「次へ」を押下。

「JREの追加」ダイアログで,JREホームとしてJDKのホームディレクトリを入力。

  • C:\Program Files\Java\jdk1.6.0_16

すると,「JRE名」「JREシステムライブラリー」の欄が自動的に埋まる。

「完了」を押下。

「インストール済みのJRE」ダイアログ上で,
いま追加したJDKにチェックを入れて「OK」を押下。


参考:

Eclipse−1.インストール
http://www.javaroad.jp/opensource/js_...

  • EclipseのJavaVMの設定がJREではなく、JDKになっていることを確認します。JDKを指定することにより、より詳細なコーディング情報を得ることができます。
  • 標準VMの項目がJREへのパスになっている場合はJDKのパスに変更します。「編集」ボタンをクリックし、「JRE名」項目と「JREのホーム・ディレクトリー」項目の値を変更します。

(4)Eclipse上でAndroid SDKをセットアップ

プラグインのインストール

Eclipse上で,ヘルプ→新規ソフトウェアのインストール を選択。
インストールダイアログ上で,「作成対象」の右の「追加」ボタンを押下。


サイトの追加ダイアログ上で,名前に「Android」,
ロケーションに「https://dl-ssl.google.com/android/eclipse/」を入力。

OKを押下。


「フィルター入力」欄の下に「保留中」と表示され,
Eclipse本体の右下にプログレスバーと共に「Androidの子を取り出し中」と表示される。


しばらく(数秒〜1分)待つと,そこに「Developer Tools」というチェックボックスが現れる。
(※もし1分ぐらいして「リポジトリーを読み取ることができません:socket closed」みたいなエラーになったら,
ロケーションを「http://dl-ssl.google.com/android/eclipse/」に変えて再試行する。
それでもだめだったら,再度ロケーションをhttpsのほうのURLに変えて交互に試してみる。)


「Developer Tools」をチェックして,「次へ」を押下。
(ここで,「要件および依存関係を計算」のプログレスバーが表示されて数秒〜数分ほど時間がかかる場合がある。)


インストール詳細ダイアログが開く。
「次へ」を押下。
ライセンスが表示されるので、「使用条件の条項に同意します」を選択した上で,
「完了」を押下。


しばらく(1分くらい)待つ。
Eclipse本体の下部に,インストールの進捗状況が表示される。


突然,セキュリティダイアログとして

署名なしコンテンツを含むソフトウェアをインストールしています。
このソフトウェアの真正性または妥当性を実証できません。
インストールを続行しますか?

と表示される。

OKを押下。

変更を反映させるために,Eclipseの再始動を強くお勧めします。
すぐに再始動しますか?

のダイアログが表示される。

(Pleiadesなので)「いいえ」を押下。

Eclipse本体を閉じ,終了させる。


プラグインの追加を反映したうえで最適化してEclipseを起動するために,

  • 「D:\dev\java\eclipse\eclipse.exe -clean.cmd」

というcmdファイルをダブルクリックして実行。


Eclipse本体が起動する。


※参考:

Android開発環境の構築 Eclipse編
http://sky.geocities.jp/izeefss/devel...
Pleiadesのドキュメントでは、新規Pluginインストール後は、[eclipse.exe -clean]を実行して起動を最適化するようにとの記載がある。

プラグインの設定

Eclipse本体で,ウィンドウ→設定→Android を選択。

「Thanks for using the Android SDK!」のダイアログが表示される。

「Send usage statistics to Google」のチェックを確認して「続行」を押下。
(※本当は,重いEclipseがこれ以上重くなったら困るので無視したいのだが,このダイアログは繰り返し表示されて邪魔なので,やむなく許諾する。)
(※このダイアログは,押そうとすると後ろに隠れてしまう場合がある。その場合は,のちほど操作する。)


Android設定の「SDKロケーション」右の「参照」ボタンを押下。

SDKの場所を入力。

  • D:\dev\java\android-sdk-windows

(※ただし,パスを手入力すると「OK」ボタンが有効にならない。「参照」ボタンを使ってパスを選択する必要がある。)

OKを押下。
※ここでもしエラーメッセージが表示されても無視する。具体的には,下記のようなエラーメッセージが出る。

SDK Platform Tools component is missing!
Please use the SDK Manager to install it.

(5)Eclipse上でAndroid Platform APIをセットアップ

Platform APIの導入

※SDKとPlatform APIのバージョン体系の違いについては,下記を参照:

Android 開発ガイド > 付録 > 1. Android API レベル
https://sites.google.com/a/techdoctra...

  • Platform VersionとAPI Levelの対応表がある
  • 各 Android プラットフォームバージョンは、厳密にひとつの API レベルをサポート(1つのSDKバージョンが,1つ以上のOSバージョンに対応)
  • 互換性のため,ビルド時は最下位として可能なプラットフォームバージョンを決定すること


Eclipse本体で,ウィンドウ→Android SDK and AVD Manager を選択。
(※ここでまれに「SDK Manager:エラー null」とかエラーメッセージが出る場合があるが無視する。)

「Installed Packages」を選択。

「Update All」ボタンを押下。


しばらく通信が発生し,パッケージの更新情報が取得される。

「Refresh Sources」のダイアログのプログレスバーが満ちたら「閉じる」を押下。
(この時点で,「キャンセル」ボタンが「閉じる」ボタンに変化しているので。)

「Choose Packages to Install」のダイアログに切り替わる。


「Accept All」をチェックし,「インストール」を押下。
(※もし急ぎの場合は,必要最低限のパッケージのみチェックして通信時間を削減する。
自分の場合,なにも触らずに進めると30分ほどかかった)


参考:

Android SDK のインストール
http://d.hatena.ne.jp/ymuto109/201103...

  • Android SDK Platform-toolsなどのインストールが始まり,これにはかなり時間を要する(1時間以上,かかかっているようだ.インストール対象のバージョンを限定すれば早く終わる).


「Installing Archives」のダイアログ上で,インストールの進捗状況が表示される。

一番最後のほうで,

A package that depends on ADB has been updated.
Doyou want to restart ADB now?

のダイアログが出る。
「はい」を押下。


ほどなくして,「Installing Archives」のダイアログ上に
「終了しました。34 packages installed.」
のように表示されプログレスバーが満ちるので,「閉じる」を押下。

「Android SDK and AVD Manager」のダイアログも右上の×ボタンで閉じる。


参考:

androidアプリの開発環境を整える(エミュレータ動作まで)
http://namakemono.6.ql.bz/web/index.p...
パッケージのインストール中,
A package that depends on ADB has been updated. It is recommended to restart ADB. is it OK to do it now? If not, you can restart it manually later.
と表示されました。
どうやらADB(Android Debug Bridge)を再起動しろとの事なので「OK」を押下すると全てのパッケージのインストールが完了しますので「Close」ボタンを押下します。


Android Debug Bridge (adb) とは?
http://android.keicode.com/devenv/wha...

※なお,もしこの時点でEclipseのコンソールに「SDK Manager エラー: null」のように表示されていても無視する。

Eclipseのメニューショートカットを設定

ウィンドウ→パースペクティブのカスタマイズ から,
「ショートカット」タブを選択。

サブメニューを「新規」にして,
ショートカット・カテゴリーの「Android」にチェック。

「OK」を押下。


参考:

Android 開発環境
http://server-free.com/android/devenv...

  • メニューのカスタマイズ:「ファイル」→「新規」でAndroidプロジェクトが表示されるように設定します。


Android SDK & Eclipse 覚書
http://jumbuck.cocolog-nifty.com/blog...

  • 「新規」のところに「Android Project」を出しておく方法です。デフォルトだと「Javaプロジェクト」と「プロジェクト」だけでAndroid系のプロジェクトを作るのがちょっと面倒

Androidアプリの開発環境の構築が完了した。

次に,この環境を使ってサンプルを動かす。


※サンプルコードは,Androidドキュメントに掲載されているものを改変している。

Technical Resources / チュートリアル / Hello, World
http://developer.android.com/intl/ja/...

  • デベロッパーにとって、開発フレームワークの第一印象は、どれだけ簡単に「Hello, World」を記述できるかで決まります。Android では、非常に簡単に記述できます。総合開発環境として Eclipse を使用している場合には、開発は特に簡単です。

サンプルアプリケーション 動作手順

(6)サンプルプロジェクトの作成

もしWindows Vistaの場合は,ここでいったんEclipseを閉じて
eclipse.exe を「管理者として実行」し,起動し直すこと。
(そうしないと,プロジェクトのビルド時にフォルダアクセスの権限不足でエラーになる恐れがある。)


Eclipse本体のメニューバーから,
ファイル→新規→Androidプロジェクト を選択。

「新規Androidプロジェクト」ダイアログ上で,
プロジェクト名として「AndroidHelloWorld」と入力。

ビルド・ターゲットとして,
現時点で「完全に無難である」と言い切れるバージョンとして
「Android 2.1-update1」にチェック。

アプリケーション名に「AndroidHelloWorld」と入力されている。

パッケージ名として,Javaの他のパッケージと重複しないような
好きな名前を入力。
ここでは
com.android.example
とする。

Create Activityに,「AndroidHelloWorldActivity」と入力されている。

Min SDK Versionとして,「7」が入力されている。
(これはビルド・ターゲットとして選択したAPIのAPI Levelと同じ値である。)

最初のプロジェクトなので,ワーキング・セットについては何もしない。
(また,テスト工程専用のテストプロジェクトも作らない。)

「完了」を押下。


参考:

世界中で使われているAndroidのバージョン別シェアとその時間的遷移(2011年6月)
http://getnews.jp/archives/127998

  • 過半数のOSバージョンは2.2
  • 残りを2.1と2.3が二分
  • その他のバージョンは誤差の範囲内

※なお,プロジェクト作成直後の数秒間に,
Eclipse下部の「問題」タブ内に「Rを解決できません」みたいなエラーが表示されることがあるが,
これはしばらくすれば勝手に解決されて消える。


(7)サンプルアプリの実装

Eclipse本体の左ペインの「パッケージ・エクスプローラ」から,
AndroidHelloWorld→src→com.android.example→AndroidHelloWorldActivity.java
を選択してダブルクリック。


エディタ上に,下記のようなコードが表示される。

package com.android.example;

import android.app.Activity;
import android.os.Bundle;

public class AndroidHelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

ひな形として自動生成されたこのコードを読むにあたって,以下の点を認識しておく。

  • Activity(アクティビティ)とは,1つの画面のことである。
  • androidのライブラリをimportすることによって,面倒な裏側の処理は全部フレームワークがやってくれる。
  • 開発者は,あらかじめ用意されたActivityクラスをextendすることによって,自分の作りたい画面部品のコーディングだけに専念できる。


このコードを,下記のように変更する。

package com.android.example;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class AndroidHelloWorldActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello, World!");
        setContentView(tv);
    }
}

変更箇所について,以下の点を認識しておく。

  • View(ビュー)とは,1つの画面部品のことである。
  • TextViewとは,テキストラベルを表す画面部品である。
  • View系のクラスのインスタンスを得る際には,「その画面部品がどの画面で表示されるのかを通知する」ため,コンストラクタにthis(つまり特定のアクティビティ)が渡される。
  • View系のクラスのインスタンスは,「画面上に実際に表示される」ため,setContentViewメソッドに渡される。


エディタにフォーカスが当たった状態で,
Ctrl + S で変更を保存。

参考:

Androidアプリ作成の基本“Activity”とは何か?
http://www.atmarkit.co.jp/fsmart/arti...

  • Activityとは、“Androidアプリの画面”に相当


※なおVistaの場合,もしEclipseを「管理者として実行」しなかったら,
この段階でプロジェクトのビルドが失敗し
"Error generating final archive: Unable to get debug signature key"
のようなエラーになる場合がある。

Eclipse ADT plugin won't build APK file, if Windows system locale is not English, United States
http://code.google.com/p/android/issu...
In order to fix the "Error generating final archive: Unable to get debug signature key"
error I had to chmod 777 ~./android
after this the project builds properly

(8)サンプルアプリの起動

パッケージエクスプローラで,
AndroidHelloWorldActivity.javaにカーソルをあてる。

※「実行」する時には,必ずこのようにjavaファイルにカーソルを当てること。
もしxmlとかにフォーカスした状態で「実行」しようとすると,コンパイルエラーになるので。

main.out.xmlでエラー
http://oshiete1.watch.impress.co.jp/q...
EclipseのProject Explorerで、main.xmlファイルを選択した状態でRunしてしまうと、main.out.xmlが勝手に作られてしまいます。
(main.xmlがRunされてしまう。)
このout付きxmlファイルが作られてしまうと、以降コンパイルできません。


Androidプロジェクト、XMLでエラー・・。
http://suzumata.blogspot.com/2010/10/...
Error in an XML file: aborting build.
res\layout\main.xml:0: エラー: Resource entry main is already defined.
res\layout\main.out.xml:0: Originally defined here.

  • XMLを実行してしまったのが原因
  • プロジェクト・エクスプローラーやエディター部分で、eclipseのプロジェクト(root)やjavaファイルを選択し、実行する必要がある


Eclipse本体のメニューバーの「実行」→「実行」を選択。

※なお,メニューバーから「実行」メニューを開いても,「サーバで実行」しか表示されない場合がある。
その場合は,1分ぐらい待つと,普通の「実行」ができるようになる。


「次を実行」ダイアログ上で,「Androidアプリケーション」を選択。

「OK」を押下。


Android仮想マシンの設定がまだなので,
「No compatible targets were found. Do you wish to add a new Android Virtual Device?」
というダイアログが出る。

「はい」を押下。

※Android Virtual Device(AVD)とは,Androidアプリが動作するための仮想マシンのこと。


「Android SDK and AVD Manager」のダイアログ上で,
左ペインで「Virtual devices」を選択。

右ペインで「新規」を押下。


「Create new Android Virtual Device (AVD)」のダイアログ上で,
名前に「my_avd」と入力。

ターゲットとして「Android 2.1-update1 - API Level 7」を選択。
(これは,このAndroidアプリのプロジェクトを作る際に指定したビルド・ターゲットのAPI Levelと同じである。)

「Create AVD」ボタンを押下。


※非常に迷惑な事に,AVDのバイナリファイルはCドライブのユーザフォルダ内に作成される。
もしCドライブがいっぱいだと,Create AVDの時点でEclipseがフリーズし,コンソールに下記のようなエラーメッセージが出る。
ディスクの空き容量を増やしてから再挑戦しよう。

[SDK Manager] Failed to write 262144 bytes: No space left on device
[SDK Manager] File 'C:\Users\(ユーザ名)\.android\avd\(AVDの名前).avd\sdcard.img' was not created.
[SDK Manager] Failed to create the SD card.
[SDK Manager] Failed to create sdcard in the AVD folder.

「Android SDK and AVD Manager」のダイアログ上で
「my_avd」が追加されたことを確認。

「my_avd」を選択し,「開始」ボタンを押下。

「Launch Options」ダイアログ上で,「起動」ボタンを押下。


※ここで,もしWindowsのユーザ名に日本語を利用していると
「PANIC: Could not open AVD config file: C:\Users\(文字化けしたユーザ名)\.android\avd\my_avd.avd/config.ini」
と表示され,仮想マシンの起動に失敗する。

この罠には,非英語圏の大勢の人々が引っ掛かっている。

PANIC: Could not open AVD config file: C:\Documents and Settings\繧翫g縺 .android\avd\test.avd/config.ini(by 日本人)
http://detail.chiebukuro.yahoo.co.jp/...

  • ユーザ名が日本語になっているのでしょうか?その場合エミューレーターが正常に動かない
  • eclipseのツールバーからwindow→preferences→android→SDKLocationのパスに半角スペースが入っていても起動できません


Google翻訳:単純なプロジェクトを実行することはできません。(by キリル文字を使っているロシア人)
http://translate.google.co.jp/transla...

  • 私はまだ確信しているという事実のためにその車のキリル文字への道。 私はラテン語でjuzverejとダブルチェックの実行を確認してみます
  • はい、あなたは正しかった。 今では、おかげで働いた。


Google翻訳:HelloWorldの作成時にAVDの作成の問題(by ハングル文字を使っている韓国人)
http://translate.google.co.jp/transla...

  • アカウントがハングルイン場合には問題がちょっと発生します。このため、アカウントを英語に変更して解決することができます。
  • またはWebでお探しいただく場合は、別の解決策もありますが、かなり面倒です。
  • 私もこのために数日をシャベルですくい出している途中放棄するところでした... 私はいけないのかよりもして...


※もしもこの事態に陥ったら,

  • D:\dev\java 内を全削除し,
  • 冒頭で述べた通り,ユーザアカウントを作り直し,
  • 環境構築から手順をやり直す。


※また,もしEclipseを「管理者として実行」しなかった場合,AVD起動時に
「このプログラムの機能のいくつかがWindowsにより制限されています」
の警告ダイアログが出る場合がある。
その際は「ブロックしない」を押下すること。



正常にAVDを起動できた場合,数秒すると「5554:my_avd」というウィンドウが現れ,
エミュレータが表示される。

左側に端末画面,右側に端末キーボードが表示される。

このエミュレータは,Eclipseとは別プロセスである。


※「5554」とは,AVDが利用するポート番号。下記URLを参考。

Androidエミュレータについて
http://tech.cm55.com/wiki/Android/Emu...

  • AVDは単にJavaコードを実行するのではなく,QEMUを使って実機のCPUをエミュレートする。根本的にCPUの命令セットが異なるので,エミュレータ動作時のCPUの負荷は大きい
  • エミュレータの使用するポートは5554から2刻み。telnet経由で接続できる
  • AVDはハードウェア的な仮想化であるが,その内部ではadb(Android Debug Bridge:ソフトウェアデバッガ)が動作可能で,デバイス中のlinuxシェルを操作できる


Eclipseの「Android SDK and AVD Manager」のダイアログを,×ボタンで閉じる。

「Android Device Chooser」というダイアログに切り替わる。

「Choose a running Android device」にチェックされていることを確認し,
その下の「emulator - 5554」のような特定のAVDの行を選択。

「OK」ボタンが有効化されるので,押下。


もしエミュレータ上で,「Sorry! ○○ is not responding. Force close / Wait」のような
警告メッセージが表示されている場合,
それはただ単にエミュレータの起動に時間がかかったという意味なので,
あわてずに何回か「Wait」をクリックし続ける。


すると,エミュレータの画面上に
「AndroidHelloWorld」というタイトルのもと,
黒い背景に白字で,
念願の「Hello, World!」が表示される!



参考:

「Android」「emulator.exe」起動までの道のり
http://crocro.com/news/20081208125205...

  • 「Sorry! Process system is not responding. [Force close / Wait]」
  • 「Sorry! Application Messaging(in process com.android.mms)is not responding. [Force close / Wait]」
  • 何回か「Wait」を選択している間に、「Android」の基本画面が出る
  • ダイアログは、動作に時間が掛かり過ぎている時に出るもの。メモリーとCPUが足りないので、タイムアウトが発生している


もし,エミュレータのウィンドウが縦長で,
ウィンドウの下部がPCのディスプレイに収まりきらない場合,
CTRL+F11キーを押下して,端末のタテ・ヨコを切り替えるとよい。

ヨコ表示モードにすれば,エミュレータもディスプレイ内に収まりやすくなる。

エミュレータのコントロール
https://sites.google.com/a/techdoctra...

  • エミュレートされたデバイスのキー → キーボードのキー
  • 前のレイアウト方向切替 ( 例、ポートレート、ランドスケープ ) → KEYPAD_7、Ctrl-F11


参考のため,起動に至るまでの,Eclipseのコンソールログを掲載する。

[AndroidHelloWorld] ------------------------------
[AndroidHelloWorld] Android Launch!
[AndroidHelloWorld] adb is running normally.
[AndroidHelloWorld] Performing com.android.example.AndroidHelloWorldActivity activity launch
[AndroidHelloWorld] Failed to find an AVD compatible with target 'Android 2.1-update1'.
[SDK Manager] Created AVD 'my_avd' based on Google APIs (Google Inc.), ARM (armeabi) processor,
[SDK Manager] with the following hardware config:
[SDK Manager] hw.lcd.density=240
[SDK Manager] vm.heapSize=24
[AndroidHelloWorld] Still no compatible AVDs with target 'Android 2.1-update1': Aborting launch.
[AndroidHelloWorld] Performing com.android.example.AndroidHelloWorldActivity activity launch
[AndroidHelloWorld] Uploading AndroidHelloWorld.apk onto device 'emulator-5554'
[AndroidHelloWorld] Installing AndroidHelloWorld.apk...
[AndroidHelloWorld] 成功!
[AndroidHelloWorld] Starting activity com.android.example.AndroidHelloWorldActivity on device emulator-5554
[AndroidHelloWorld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.example/.AndroidHelloWorldActivity }

※なお,「エミュレータは起動するが,エミュレータ上のボタンをクリックしようとすると,エミュレータがハングする」という場合がある。
「問題が発生したため,emulator-arm.exeを終了します。」
というエラーメッセージで強制終了してしまうのだ。
この原因は単なるメモリ不足なので,いったんWindowsを再起動してからEclipseだけを立ち上げ,慎重にエミュレータを起動すればOK。

X10のエミュレータを起動できない
https://groups.google.com/group/andro...

  • いざ起動しようとしても、Windowsから「問題が発生した為、emulator.exeを終了します。…」と出てしまい、起動できません。
  • OSのメモリを出来るだけ開放した状態で起動したら、ついに起動する事ができました。単純にメモリ不足だった


Androidプログラミング質問スレ Part8:576
http://5ch.viewerd.com/tech/1304819960/

  • eclipseからAVDを起動して、MenuボタンやBackボタンにマウスをポイントすると、「問題が発生したためemulator.exe を終了します。ご不便を…でemulator.exeが終了してしまう
  • セキュリティソフトの設定やメモリをいじっているうちに解決

※また,もし自分の作ったHelloWorldアプリが見当たらない場合,
Eclipseのコンソールに下記のようなエラーメッセージが表示されているかもしれない。

[AndroidHelloWorld] Failed to install AndroidHelloWorld.apk on device 'emulator-5554': タイムアウト
[AndroidHelloWorld] Launch canceled!

その場合,AVD上にアプリをインストールする段階でタイムアウトが発生している。
(メモリやCPUなど,マシンのスペックが低いとこの問題が発生しやすいだろう。)
下記の手順によってタイムアウト時間を長くすれば,エラーにならず,アプリが正常にインストール・実行される。

  • Eclipse本体で,ウィンドウ→設定→Android→DDMS→「ADB Connection Time out(ミリ秒)」に「10000」と入力し,OKを押下

Failed to install *.apk on device *: timeout / Launch canceled!
http://stackoverflow.com/questions/47...

  • Try changing the ADB connection timeout. I think it defaults that to 5000ms and I changed mine to 10000ms to get rid of that problem.

ここで,いま実行されているサンプルアプリの実体を確認してみる。

Windowsのエクスプローラから,Eclipseの該当ワークスペースのbinフォルダを開くと,下記のようなファイルがある。

D:\dev\java\workspace\AndroidHelloWorld\bin

  • AndroidHelloWorld.apk (アプリケーション本体。配布用のファイル)
  • classes.dex (JavaのclassファイルをAndroid用に変換したもの)
  • resources.ap_ (ソースコード以外のリソースをまとめたもの)

※なお,.apkとresources.ap_はいずれもzipフォーマットのファイルであり,拡張子を変えれば中身を閲覧できる。


参考:

.apkファイルとは:Android Developers / 開発の基礎
http://developer.android.com/intl/ja/...

  • Android パッケージは、拡張子が .apk のアーカイブ ファイル。ユーザーは、このファイルをデバイスにダウンロードして利用する。
  • 1 つの .apk ファイルに含まれているすべてのコードが、1 つのアプリケーション


.dexファイルとは:Androidの仕組みを知る(2) Android Runtimeとアプリケーション・フレームワーク
http://itpro.nikkeibp.co.jp/article/C...

  • Dalvik VMが実行するのは,「Dalvik Executable(DEX)」と呼ばれる独自形式のバイナリ・プログラム
  • 開発者はDEXの作成を意識しないでよい。「dx変換ツール」がJavaのクラス・ファイルからDEXに自動で変換する


resources.ap_ファイルとは:What is resources.ap_
http://stackoverflow.com/questions/49...

  • The resource.ap_ is all the resources for you file zipped up. Everything from the res, assets folders and the Manifest file.
  • Both of these files are in .zip format. They can easily be view by changing the extension to .zip and opening them.


HelloWorldアプリケーションのファイル構造
http://codezine.jp/article/detail/5995

  • フォルダ構成

また,

  • D:\dev\java\workspace\AndroidHelloWorld\bin\com\android\example

というフォルダの中には,javaのクラスファイルが格納されている。


(9)サンプルアプリの終了

このサンプルアプリは「Hello, World」が見えたらそれでおしまいのアプリなので,
これで無事,アプリを「起動」するのみならず
アプリを「利用」もできたことになる。


では,アプリを終了する。

エミュレータの右側の,赤い電話を切るマークのボタンをクリック。

サンプルアプリが終了し,Androidの待ち受け画面が表示される。



もう一度,エミュレータ上の操作でサンプルアプリを起動してみよう。

エミュレータ右側の「MENU」ボタンをクリック。

エミュレータ画面にメニューが表示される。

上部にGoogle検索ボックスがあり,下部には
Messaging, Phone, Contacts, Browser, Mapsなどのアイコンがある。


一番下に,上向きの三角(▲)のボタンがあるのでそれをクリック。

アプリケーションがABC順に一覧表示される。

上のほうに「AndroidHelloWorld」があるのでクリック。

サンプルアプリが再度起動される。


一通りAndroid(のエミュレータ)を楽しんだら,

エミュレータを閉じて終了する。


もしEclipse上で「Hello, World」を「Hello, Hoge」に書き換えて
再度「実行」→「実行」すれば,

エミュレータ上でも再度アプリが実行され,

「Hello, Hoge」に変更されたアプリの挙動を確認することができる。



※もしEclipseを「管理者権限で起動」しなかった場合,新しくAndroidプロジェクトを作ってAVD上で動作させようとしても,なぜかインストールされず更新が反映されない場合がある。
これは,Eclipseを「管理者権限で起動」すれば解決する。


※AVDでアプリを実行しようとするときに,下記のようなエラーがコンソールに出て,アプリが起動しない場合がある。
内容は「アプリの最初の(MAINの)アクティビティが見つからない」というもの。

Starting activity com.example.MainActivity on device emulator-5554
ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example/.MainActivity }
New package not yet registered with the system. Waiting 3 seconds before next attempt.
Starting activity com.example.MainActivity on device emulator-5554
ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example/.MainActivity }
ActivityManager: Error type 3
ActivityManager: Error: Activity class {com.example/com.example.MainActivity} does not exist.

この場合,下記の手順でプロジェクトをクリーンすれば,エラーが出なくなる。

  • Eclipse本体→プロジェクト→クリーン

参考:

New package not yet registered with the system. Waiting 3 seconds before next attempt. / ActivityManager: Error type 3
http://www.qhp-sys.fr/2011/04/09/new-...

  • (フランス語)en faisant un ≪ clean ≫ du projet Eclipse, le probleme a disparu.


別の対処法:androidのエラー ActivityManager: Error type 3
http://hisakazut.blogspot.com/2010/05...

  • パッケージの名前をかえるとか、マニフェストのなかのandroid:versionNameを変更するとか
  • ソフトウェアの更新から、androidSDK toolの更新があったので、それをインストールしてEclipseを立ち上げ直すとか


エミュレータもEclipseも閉じて,本作業はおひらき。


(10)おまけ:実機上でのテスト方法

念のため,エミュレータを使わないデバッグ方法も述べる。

もし端末とUSBケーブルを持っている場合,すぐに実機上でも動作確認できる。


端末上で
設定→アプリケーション→提供元不明のアプリ にチェック。

設定→アプリケーション→開発→USBデバッグ にチェック。

設定→アプリケーション→開発→スリープモードにしない にチェック。



次に,PC上に(もし必要なら)USBドライバをインストール。

PCと実機をUSBケーブルでつなぐ。

USBドライバが自動認識されれば,それでよし。
自動認識されなかった場合は,個々のメーカのUSBドライバ認識手順に従って手動で設定。



Eclipse上で,メニューバーの実行→実行構成 で「実行構成」ダイアログが出る。

「ターゲット」タブ上で,「手操作」を選択し「適用」を押下。

「実行」を押下。



「Android Device Chooser」ダイアログが出る。

上の欄が実機。下の欄がエミュレータ。

対象となる実機を選択し,OKを押下。



すぐに,PCから実機へアプリが転送される。

そして,自動的に実機上で該当アプリが起動される。

(エミュレータと比べると非常に速いので,感動するだろう。)


コンソール上には,下記のようなログが出る。

Android Launch!
adb is running normally.
Performing com.example.HelloAndroidActivity activity launch
Uploading HelloAndroid.apk onto device '(端末ID)'
Installing HelloAndroid.apk...
成功!
tarting activity com.example.HelloAndroidActivity on device (端末ID)
ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example/.HelloAndroidActivity }


実機でのデバッグの速さを一度経験すると,エミュレータを手放したくなるだろう。



最後に,このEclipseプロジェクトをSVNのバージョン管理下に置きたい,と思うはず。

その方法:

Windows Vista上に Apache+Subversion+Tortoise SVN をインストールして,ネットワーク越しにリポジトリを利用できるようにする手順
http://language-and-engineering.hatenablog.jp/entry/20110723/p1

入門用リンク集

Windows上での開発環境構築作業を,画面キャプチャ付きでステップバイステップで紹介しているサイトはいくつかある。

(しかし,遭遇するトラブルを網羅的に解説しているページはまだ無かったようだ。本稿が一助になれば幸い。)



Hello, Worldを動かすまでの経過で,参考にしたページ:

Techfirm / Android開発環境設定
http://www.techfirm.co.jp/lab/android...


Android開発環境の構築 Eclipse編
http://sky.geocities.jp/izeefss/devel...


HelloWorldアプリケーション作成 Eclipse編
http://sky.geocities.jp/izeefss/devel...


Hello, Worldが動いた後で,初級情報の網羅のために読むとよさそうなページ:

Google androidプログラミング入門
http://sites.google.com/site/tuyano/j...


世界を目指せ!Androidアプリ開発入門
http://gihyo.jp/dev/serial/01/androidapp

  • 2010年はAndroid元年
  • SQLiteでDB接続,HTTP通信,デバッグ,マーケットへの公開手順などの方法
  • 注:環境構築部分はMacを使っているので,その部分の情報は役に立たない場合が多い


Techfirm / Android 入門
http://www.techfirm.co.jp/lab/android...

  • 画面遷移,Google Mapの利用,GUIデザイナ,HomeScreenにウィジェット表示などの方法


IBMの「Android 開発入門 / オープンソースのアプリケーション・プラットフォーム」
http://www.ibm.com/developerworks/jp/...

  • HelloWorldを別の角度からトライ(xmlコーディングとか)


Android開発者が知るべき10のこと
http://techbooster.jpn.org/andriod/ap...

  • モバイルだから,通話の発生やバッテリー切れなどでアプリが強制終了させられるので注意する


Androidアプリ開発初心者がつまずきやすい7のポイント
http://www.dm-android.com/column/begg...

  • リソースIDを管理しているのがR.javaというファイル
  • 新しい画面を作成した時,マニフェストファイルの記述漏れに注意
  • SQLiteの接続閉じ忘れに注意
  • 実機の共有手順に注意


ブックマークして常に参照し続けるような,ずっと重宝するページ:

逆引きAndroid入門
http://www.adakoda.com/android/

  • 各種Viewの利用方法など


Androidメモ
http://www.saturn.dti.ne.jp/~npaka/an...

  • リンク集,Android端末のバージョンごとの追加機能の一覧表,2009〜2011年の各キャリア端末情報一覧
  • サンプルプログラム一覧


ソフトウェア技術ドキュメントを勝手に翻訳 / Android 開発ガイド
https://sites.google.com/a/techdoctra...


Android Developers / API リファレンス(英語)
http://developer.android.com/intl/ja/...


Android Developers' Inn (ITPro)
http://itpro.nikkeibp.co.jp/android/d...

  • 最新のニュースや話題を紹介


Codezine:Android新着一覧
http://codezine.jp/article/tag/742

  • 実装上の即戦力となる最新情報が,月イチぐらいで連載中


Androidアプリ マーケット
https://market.android.com/


中級者へ成長してゆくために目を通しておくとよさそうなページ:

はてなのAndroid入門記事
http://kuwalab.net/lab/index.php?%B5%...

  • id:kuwalab氏による各機能の網羅的なサンプルコード


mucchinのAndroid戦記
http://android.roof-balcony.com/index/

  • 機能別の実装方法


Android で再開する Java プログラミング
http://www.hakkaku.net/series/android...

  • Android をきっかけに、かつてやったことのある Java プログラミングを再開しようという連載記事。モグラ叩きとか


Android Developers / 開発の基礎
http://developer.android.com/intl/ja/...

  • 右上で「日本語」を選択
  • プロセスやスレッドについて
    • プロセスごとに専用の Java 仮想マシン(VM)が割り当てられる
    • アプリケーションごとに固有の Linux ユーザー ID が割り当てられる


development@sakurayama / Android
http://sky.geocities.jp/izeefss/devel...

  • eclipse無しで,antだけを使ってビルドする方法


Windows上でadbを使ってデバッグする手順
http://handalab.com/android/dev-2/deb...


Android徹底解説---内部構造,移植,開発(2009年の情報)
http://itpro.nikkeibp.co.jp/article/C...


Dalvik、Androidのバーチャルマシーンが激しい論議を巻き起こす
http://www.infoq.com/jp/news/2007/11/...

  • Dalvik VMはレジスタベースのJava仮想マシン。スタックベースの場合よりも実行ファイルは大きくなるかもしれないが,実のところJava VMよりも実行ファイルは小さく,速度は速くなるしメモリ利用効率も良い
  • VMの複数インスタンスを並列で走らせる理由は,クラッシュ時に全てのアプリケーションが閉じてしまうのを防ぐため


Android Marketアプリ内課金サービス徹底解説
http://www.atmarkit.co.jp/fsmart/inde...

  • ビジネスとして成立させるために一読が必要


私が参考にしたAndroidアプリ開発情報をまとめてみました(2011年初頭の情報)
http://d.hatena.ne.jp/moto_maka/20110...

  • その他総合的なリンク集。付加的なツールなど紹介されていて,目を通す価値はある


Androidで食っていきたい場合:

スマートフォンの開発案件でiOS系は横ばい、Androidは増加傾向に(2011年初頭の情報)
http://if.journal.mycom.co.jp/news/20...

  • これまで増加傾向にあったiPhone/iPad案件は横ばいであるのに対し、Android案件は増加傾向
  • 急速にAndroid端末の普及が進んだため、その対応への引き合いが急増


Androidの求人・案件情報詳細 / お仕事市場エンジニア
http://it.oshigoto-ichiba.com/archive...

  • iPhone/iOSでの開発年数も経験としてカウントされるケースがある
  • Javaのみの経験者で,Android未経験者だと,スキル要件的に難しそう


Androidに関するIT案件情報 / ハッピーエンジニア
http://happy.value-ark.com/tag/Android/

  • ソーシャルゲームや電子書籍等,ネイティブアプリ単体の仕事もあるが,WebアプリのAndroid対応というタスクもそれなりに(2011年半ば時点)


実力を試したい場合:

Android技術者認定試験制度 試験申し込みページ
http://it.prometric-jp.com/testlist/a...