情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

Androidアプリ開発環境構築する手順とエラー対策メモ

Android (716) Eclipse (60)

EclipseにAndroidアプリの開発環境を構築したときの手順をメモしておきます。作業中にエラーがやたら出たので、エラーメッセージで検索する人に向けになっています

JDK・Eclipse・Android SDKはインストール済み

研究で使うので「JDK7」と「Eclipse(JUNO, 4.2.0)」はインストール済みで、Androidの画面をキャプチャするためにAndroid SDKはインストール済みでした。

でもAndroid SDKのアーカイブ版をもう一度インストール

Android SDKのインストールはこちらから。Windows用インストーラを使えばすいすいインストールできます。しかし今回は、あえて「.zip」をダウンロードし、それを展開したものを使うことにしました。これで、開発環境を複数マシンで利用しやすくなります→「Dropbox専用ドライブを作ってどのPCからでも同じフルパスを使えるようにする方法メモ

Android Development Toolkit (ADT)をインストール

EclipseプラグインADTをインストールします。「Help>Marketplace...」を開いて、「Search」タブの「Find」に「ADT」と入力して検索します。すると、「Android ADT extentions」と「Android Development Tools for Eclipse」という紛らわしい2つが出てくるのですが、ここでインストールするのは後者です。「by Google, Inc.」のほう。

「Install」ボタンから「Android DDMS」「Android Development Tools」「Android Hierarchy Viewer」「Android Traceview」がインストールできます。

EclipseでAndroid SDKのインストールフォルダを指定する

「Window>Preference>Android」で、「SDK Location」を「X:...\android-sdk-windows」と指定し、「Apply」をクリックしました。しかし、

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

と表示されてしまいました。そこで、そのまま「Open Manager」をクリックすると「Android SDK Manager」が起動したので、「Tools>Android SDK Platform Tools」と、デフォルトの「Android 4.1(API 16)」「Google USB Driver」にチェックを入れた状態で「Install 8 packages」をクリックしてインストールしました。

再びEclipseに戻って「Apply」をクリックすると、特に問題なし。

エミュレータの設定

続いて、Eclipseの「Window>ADV Manager」から「Android Virtual Device Manager」を開きます。「New...」ボタンから「Create new Android Virtual Device (AVD)」を開き、次の内容を入力して、「Create AVD」をクリックしました。

  • Name: AVD-4.1
  • Target: Android 4.1 - API Level 16
  • CPU/ABI: ARM (armeabi-v7a)←変更不可
  • SD Card: Size 64 MiB
  • Snapshot: Enabled - On
  • Skin Built-in: Default (WVGA800)
  • hardware:

    • Abstracted LCD density: 240
    • Max VM application heap size: 48
    • Device ram size: 512

ちなみに、ここの「Target」で選べるのは、対応するAndroidのバージョンですが、ここに表示されるのは、「Android SDK Manager」でインストールしたもののみなので、選択したい「Target」が一覧に表示されない場合は、「Window>Android SDK Manager」から、対応するバージョンをインストールしてください。

プロジェクトを作成する

「File>New>Project...」から「Android>Android Application Project」を選択して「Next」をクリックします。そして、次のような情報を入力しました。

  • Application Name: Application Name
  • Project Name: ApplicationName
  • Package name: net.did2memo.applicationname
  • Build SDK: Android 4.1 (API 16)
  • Minimum Required SDK: API 8: Android 2.2 (Froyo)←デフォルト
  • ON: Create custom launcher icon
  • OFF: Mark this project as alibrary
  • Create Project in Workspace

しかし、入力中に一度でも「A package name cannnot start or end with a dot」などを表示されてしまうと、正しい入力に修正したとしても、「Next」や「Finish」が押せなくなるという問題に遭遇し、かなり困ってしまいました。これでは、Android Projectを新規作成できないわけです。また、「Build SDK」のところも空欄になってしまい、設定できませんでした。

そこで少し調べてみると、「Cannot create a new Android Project using Eclipse - Stack Overflow」が見つかりました。ダメ元で、Android SDK Managerから「Extras>Android Support Library」をインストールしてみたところ、なぜかエラー表示がちゃんと更新されるようになりました。また、コピーが二重になる問題も解消されました。まったくなんとわかりにくい・・・とりあえずこれによって、うまく新規作成できました。

次に「Configure Launcher Icon」というところでアイコン画像を設定できましたが、そんなもの最後に作りたいので、デフォルトのまま「Next」をクリックしました。

次は「Create Activity」というダイアログでしたが、「Create Activity」でOFFを選択し、「Finish」をクリックしました。

参考にしていた複数のサイトでは、このようにしてプロジェクトを作ると、srcの中に「Hello World, Start!」と表示するためのコードも作られるらしいのですが、そのようなコードは存在せず、さっぱりどうすればいいか分かりませんでした。そこで、「Android Sample Project」というものを作ってみることにしました。

Android Sample Projectを作る

「File>New>Project...」から「Android>Android Sample Project」を選択して「Next」。「Select Build Target」で「Android 4.1」がチェックされていたので、そのまま「Next」。「Select Sample」でサンプルが選べるので、なんとなく「NotePad」を選択して「Finish」。すると、Package Explorerに「NotePad」が追加されます。

Sample Projectを実行してみる

「Run>Run Configurations...」から「Run Configurations」を開いて、左のペインで「Android Application」を選択した状態で新規作成(New)ボタンをクリックする。「Name:」に「NotePad」と入力し、「Project:」でも「NotePad」を選択する。

Targetタブで「Automatically pick compatible device: Always uses preferred AVD if set below, launches on compatible device/AVD otherwise.」を選択して、「Select a preferred Android Virtual Device for deployment:」で先ほど作ったエミュレータ「AVD-4.1」を選択。そして、「Apply」→「Run」と実行したところ、次のエラーが表示されました。

Your project contains error(s), please fix them before running your application.

Sampleなのになぜ…と思ったわけですが、たしかに「Problems」Viewで確認してみると、

Erros>AndroidManifest.xml file missing!

が表示されていました。しかし、特に問題がないはずなので、もう一度実行してみると、なぜかこのエラーは回避され、次のエラーが表示されました。

The connection to adb is down, and a severe error has occured.
You must restart adb and Eclipse.
Please ensure that adb is correctly located at 'X:.../android-sdk-windows\platform-tools\adb.exe' and can be executed.

というわけで、Eclipseを再起動してから「Window>ADV Manager」で「AVD-4.1」を選択して「Start...」からエミュレータを起動してみると、エラーが回避できました。

しかし今度は「Waiting for HOME ('android.process.acore') to be launched...」で止まって先に進まない状態になってしまったので、もう一度実行してみると、次のように表示され、「NotePad」がエミュレータ上で起動しました。

Android Launch! adb is running normally. Performing com.example.android.notepad.NotesList activity launch Automatic Target Mode: Preferred AVD 'AVD-4.1' is available on emulator 'emulator-5554' Uploading NotePad.apk onto device 'emulator-5554' Installing NotePad.apk... HOME is up on device 'emulator-5554' Uploading NotePad.apk onto device 'emulator-5554' Installing NotePad.apk... Success! Starting activity com.example.android.notepad.NotesList on device emulator-5554 ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.android.notepad/.NotesList } New package not yet registered with the system. Waiting 3 seconds before next attempt. Success! Starting activity com.example.android.notepad.NotesList on device emulator-5554 Starting activity com.example.android.notepad.NotesList on device emulator-5554 ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.android.notepad/.NotesList } ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.android.notepad/.NotesList } ActivityManager: Warning: Activity not started, its current task has been brought to the front

もう一度Android Projectを新規作成してみる

先ほど、「Hello World!」と表示するためのコードも作られるらしいが作られなかった、と言いましたが、実は、「Create Activity」にて「BlankActivity」を選択すると、「Hello World!」と表示されるアプリケーションが自動構築されるということが分かりました。そこで、再び作り直してみました。

すると、srcディレクトリの中に唯一作られたHelloActivity.java(自分で設定した名前)でエラーが発生していました。それによると、「R」というクラスが見つからないというエラーだったので、Quick Fixで「import android.R」を挿入したのですが、今度は「R.layout.activity_hello」が見つからないエラーになってしまいました。

そこでまた調べてみると、ここで指定している「R」は、本来「gen」ディレクトリに作られる「R.java」であって、「android.R」ではないようなのです。そして、R.javaは、基本的に.xmlファイルの変更に応じて自動的に更新されるものの、初回はビルドしてあげる必要があるとのことでした。そこで、「Project>Build Project」でビルドしてあげると、R.javaが生成され、エラーは消えました。

この状態で先ほどのSample Android Projectと同様に実行して上げると、ちゃんと「Hello, World」を表示するアプリケーションが実行されました。

ひとまず、完成済みのアプリケーションを起動できるようにまでなりました。それにしても、いろいろと躓きポイントと、謎のエラーが多かったです。

コメント(0)

新しいコメントを投稿