2012.08.14

『作りながら覚えるAndroidプログラミング 改訂版』-Android SDK 4.1(Jelly Bean)への対応と修正点について

作りながら覚えるAndroidプログラミング 改訂版

最新のAndroid SDKおよびADTへの対応について

Android SDKおよびADT(Eclipseプラグイン)がAndroid 4.1(Jelly Bean)対応になり、動作が大きく変わっています。本書の手順通りではアプリが作成できないため、修正点をお知らせします。動作の確認にはEclipse 4.2(Juno)を使用しています。現在公開されているサンプルプロジェクトは一部を除き、そのままで動作することを確認しています。

(2012年8月14日更新)

—————————————————————————————

○Android SDKのインストール

・インストールフォルダーの指定

インストーラーの「Choose Users」画面で「Install just for me」を選択すれば、インストールフォルダーを変更する必要はありません。この場合、デフォルトのインストールフォルダーは「C:Users<ユーザー名>AppDataLocalAndroidandroid-sdk」です。

・SDK Managerでインストールする項目

本書に記載されている項目に加え、「Extras」の下にある「Android Support Library」が必要です。

—————————————————————————————

○ADTのインストール

インストール完了後、Eclipseを再起動しても「Welcome to Android Development」画面は表示されず、SDKの場所は自動設定されるようです。Eclipseの「ウィンドウ」メニューから「設定」を選んで設定画面を開き、「Android」の「SDKロケーション」で設定を変更することも可能です。

・Javaコンパイラーのバージョン指定

Eclipse 4.2にはJRE 7が同梱されており、デフォルトでJavaコンパイラーのバージョンは1.7になっています。ADTでは1.5または1.6が必要なので、そのままではエラーメッセージが表示されてビルドを実行できません。これを回避するには、Eclipseの「ウィンドウ」メニューから→「設定」を選んで設定画面を開き、「Java」→「コンパイラー」で「コンパイラー準拠レベル」に「1.6」を設定します。

—————————————————————————————

○プロジェクトを作成する

・「新規プロジェクト」画面

「Androidアプリケーション・プロジェクト」を選択します。

・「新規Androidアプリケーション」画面

この画面では本書でプロジェクト作成時に指定する項目の表に記載されている各項目を入力します。
「Application Name」が「アプリケーション名」、「Project Name」が「プロジェクト名」、「Package Name」が「パッケージ名」、「Minimum Required SDK」が「ビルド・ターゲット」に該当します。「アクティビティーの作成」に記載されている内容は以降のウィザード画面で指定します。
そのほかの項目はデフォルトのままで問題ありません。「カスタム・ランチャー・アイコンを作成する」のチェックを外すと次の「ランチャー・アイコンの作成」画面をスキップできます。なお、「Build SDK」の設定に関する注意点については後述する「レイアウトの作成」の項を参照してください。

・「ランチャー・アイコンの作成」画面

アプリアイコンをカスタマイズします。デフォルトでは「クリップアート」が指定されており、「選択」ボタンをクリックしてクリップアートを選択することでアイコンのデザインを変更できます。

・「アクティビティーの作成」画面

「BlankActivity」を選択します。

・「新規ブランク・アクティビティー」画面

「Activity Name」には本書の表で「アクティビティーの作成」に記載されている内容を入力します。「Layout Name」を「main」に変更し、「Title」に「アプリケーション名」を入力したら、「完了」ボタンをクリックすればプロジェクトが作成できます。

—————————————————————————————

○テーマの変更

本書に掲載されているアプリの画面は背景が黒ですが、最新SDKではデフォルトで白い背景のテーマが指定されています。AndroidManifest.xmlを開き、「アプリケーション」タブの「Theme」に設定されている値を削除すれば背景が黒に変わります。

—————————————————————————————

○レイアウトを作成する

・レイアウトのルートを変更する

最新環境でプロジェクト作成時に生成されるレイアウトファイルでは、レイアウトのルートが「RelativeLayout」になっています。RelativeLayoutではドラッグ&ドロップでビューの配置を自由に変更できますが、本書で指定されているプロパティーの中にはRelativeLayout内で使用できないものもあります。そのため、ルートをLinearLayoutに変更しておきましょう。まず「main.xml」を開き、「アウトライン」画面で「RelativeLayout」を右クリックして「レイアウトの変更」を選びます。「Change Layout」画面が表示されるので、「LinearLayout (vertical)」を選択すれば完了です。

・EditTextを追加する場合の注意点

プロジェクト作成時、「Build SDK」に「Android 4.1 (API 16)」を指定した状態では、「Plain Text」や「Multiline Text」をレイアウトに追加するとエラーが発生します。エラーを回避するには、「Person Name」を追加してから「Input Type」プロパティーの右端にある「…」ボタンをクリックします。「Select Flag Values」画面が表示されるので、「textPersonName」のチェックを外し、「textNoSuggestions」にチェックを入れます。「Multiline Text」にする場合は「textMultiLine」にもチェックを入れましょう。
なお、「Build SDK」にAPI 16よりも下のAPIバージョンを指定すれば、上記の処理は不要です。以前のバージョンのSDKを使用した場合、AndroidManifest.xmlの「Manifest」タブでSDKバージョンを変更することでプロジェクトのターゲットSDKバージョンも変更されていましたが、最新環境では連動しないようです。あとでSDKバージョンを変更する場合、プロジェクトのプロパティーも変更する必要があるので注意してください。プロジェクトのプロパティーはプロジェクト・エクスプローラーでプロジェクトを選択し、「プロジェクト」メニューから「プロパティー」を選択すれば開くことができます。

・LinearLayoutを追加する場合の注意点

本書作成時の環境では、レイアウトにLinearLayoutを追加すると自動でIDが設定されていましたが、最新環境ではIDが設定されないようです。本書では追加したLinearLayoutにプログラム内でアクセスすることはないので、IDの設定は必須ではありません。ただし、レイアウトに追加する項目の表では、追加場所にLinearLayoutのIDを指定しているものもあります。わかりにくい場合はIDを設定してから作業を進めるといいでしょう。

—————————————————————————————

○STEP 11 世界時計ウィジェット(ListView対応版)について

「deleteTimezone」メソッド4行目で削除するIDの値を引用符で囲んでいますが、最新環境では引用符が不要になったようです。そのため、下記のようにコードを変更してください。

(変更前)
——————————————————-

db.delete(“tzList”, “_id=’”+itemId+”’”,null);

——————————————————-

(変更後)
——————————————————-

db.delete(“tzList”, “_id=”+itemId,null);

——————————————————-

—————————————————————————————

○STEP 7 画像ダウンローダーアプリについて

Android 4.1では正常に動作しませんでした。原因は調査中です。なお、画像ダウンローダーアプリはBingのAPI変更に伴い、本書に記載されている内容から変更されています。詳細についてはサンプルプロジェクトファイルに同梱されているテキストファイルを参照してください。