2013.01.07

『作りながら覚えるAndroidプログラミング 改訂版』-最新のAndroid SDKおよびADTへの対応について

作りながら覚えるAndroidプログラミング 改訂版
最新のAndroid SDKおよびADTへの対応について
現在、Android SDKはADT(Eclipseプラグイン)を組み込んだEclipseの同梱された「ADT Bundle」が配布されています。本書の手順に従って、単体のAndroid SDKとEclipseをインストールするよりも、こちらを使用するほうが簡単です。ADT Bundleは32ビット版と64ビット版が用意されているので、環境に合わせてダウンロードしましょう。
(2012年12月27日更新)
—————————————————————————————
○ADT Bundleのインストール
ADT Bundleを使用するには、ダウンロードしたZIPファイルを開いて「adt-bundle-<プラットフォーム名>」フォルダーを任意のインストールフォルダーにコピーします。Eclipseはコピーしたフォルダー内の「Eclipse」フォルダーに格納されています。Android SDKには必要最低限のパッケージが含まれているので、通常はパッケージを追加する必要はありません。
—————————————————————————————
○Eclipseを日本語化する
ADT Bundleに同梱されているEclipseは日本語化されていません。Eclipseを日本語化するには、「64ビット版JDKでの開発環境の作り方」を参考にして、Pleiadesプラグインを追加します。
—————————————————————————————
○AVDマネージャーを起動する
AVDマネージャーはEclipseの「ウィンドウ」メニューで「Android仮想デバイス・マネージャー」から起動できます。デフォルトの状態で作成できるAVDはAndroid 4.2(API 17)のみです。Android 1.5~3.2のAVDを作成するには、SDKマネージャーで対応バージョンの「SDK Platform」を、Android 4.0~4.1の場合は「SDK Platform」と「ARM EABI v7a System Image」をインストールする必要があります。なお、SDKマネージャーでパッケージを追加した場合、Eclipseを再起動しないとAVDマネージャーに反映しません。
原因は不明ですが、「Android SDKマネージャー」や「Android仮想デバイス・マネージャー」がEclipseの「ウィンドウ」メニューに表示されなくなってしまうことがあります。この場合、「ウィンドウ」メニューから「パースペクティブのカスタマイズ」を選び、「コマンド・グループ可用性」タブで「Android SDKおよびAVDマネージャー」にチェックを入れればメニュー項目を復元できます。
・AVDを作成する
基本的な操作は本書の内容と同様です。ただし、「Skin」で設定していた画面解像度の設定はなくなり、代わって「デバイス」で画面解像度などを設定するように変更されています。
—————————————————————————————
○プロジェクトを作成する
・ウィザードの起動
「ファイル」メニューから「Androidアプリケーション・プロジェクト」を選びます。
・新規Androidアプリケーション画面(アプリケーション名の入力)
この画面では本書でプロジェクト作成時に指定する項目の表に記載されている各項目を入力します。
「Application Name」が「アプリケーション名」、「Project Name」が「プロジェクト名」、「Package Name」が「パッケージ名」、「Minimum Required SDK」が「ビルド・ターゲット」に該当します。「アクティビティーの作成」に記載されている内容は以降のウィザード画面で指定します。
・「プロジェクトの構成」画面
この画面はデフォルトのままで問題ありません。「カスタム・ランチャー・アイコンを作成する」のチェックを外すと次の「ランチャー・アイコンの作成」画面をスキップできます。
・「ランチャー・アイコンの作成」画面
アプリアイコンをカスタマイズします。デフォルトでは「イメージ」が指定されており、「参照」ボタンをクリックして画像ファイルを選択することでアイコンのデザインを変更できます。
・「アクティビティーの作成」画面
「BlankActivity」を選択します。
・「新規ブランク・アクティビティー」画面
「Activity Name」には本書の表で「アクティビティーの作成」に記載されている内容を入力します。「Layout Name」を「main」に変更したら、「完了」ボタンをクリックすればプロジェクトが作成できます。
—————————————————————————————
○テーマの変更
本書に掲載されているアプリの画面は背景が黒ですが、最新SDKではデフォルトで白い背景のテーマが指定されています。AndroidManifest.xmlを開き、「アプリケーション」タブの「Theme」に設定されている値を削除すれば背景が黒に変わります。
—————————————————————————————
○レイアウトを作成する
・プロパティーの表示
最新環境では、レイアウト項目のプロパティーが「プロパティー」画面ではなく「アウトライン」画面内に表示されます。「ビューの表示」に「プロパティーの表示」という項目がありますが、この画面を追加する必要はありません。なお、本書で「Layout~」と表記されているプロパティーは、「Layout Parameters」にグループ化されており、プロパティー名は「Layout」を除いた表記になっています。また、本書で「Margin~」と表記されているプロパティーは、「Layout Parameters→Margins」にグループ化されており、こちらも「Layout Margin」を除いた表記になっています。
・レイアウトのルートを変更する
最新環境でプロジェクト作成時に生成されるレイアウトファイルでは、レイアウトのルートが「RelativeLayout」になっています。RelativeLayoutではドラッグ&ドロップでビューの配置を自由に変更できますが、本書で指定されているプロパティーの中にはRelativeLayout内で使用できないものもあります。そのため、ルートをLinearLayoutに変更しておきましょう。まず「main.xml」を開き、「アウトライン」画面で「RelativeLayout」を右クリックして「レイアウトの変更」を選びます。「Change Layout」画面が表示されるので、「LinearLayout (vertical)」を選択すれば完了です。
・レイアウトビューに設定されるIDについて
デフォルトでルートに設定される「RelativeLayout」にはIDが設定されていませんが、「LinearLayout (vertical)」に変更するとIDに「LinearLayout1」が設定されます。一方、本書作成時の環境ではレイアウトビューを追加すると自動で連番のIDが設定されていましたが、最新環境では設定されなくなっています。本書では追加したLinearLayoutにプログラム内でアクセスすることはないので、IDの設定は必須ではありません。ただし、レイアウトに追加する項目の表では、追加場所にLinearLayoutのIDを指定しているものもあります。わかりにくい場合はルートのIDを削除し、追加したレイアウトビューのIDを設定してから作業を進めるといいでしょう。
—————————————————————————————
○STEP 7 画像ダウンローダーアプリについて
Android 4.1/4.2では正常に動作しません。サーバーでの認証が失敗しているようですが、詳細は引き続き調査中です。なお、画像ダウンローダーアプリはBingのAPI変更に伴い、本書に記載されている内容から変更されています。詳細についてはサンプルプロジェクトファイルに同梱されているテキストファイルを参照してください。
—————————————————————————————
○STEP 11 世界時計ウィジェット(ListView対応版)について
「deleteTimezone」メソッド4行目で削除するIDの値を引用符で囲んでいますが、最新環境では引用符を入れると正常に動作しないので、下記のようにコードを変更してください。
(変更前)
——————————————————-
db.delete(“tzList”, “_id=’”+itemId+”’”,null);
——————————————————-
(変更後)
——————————————————-
db.delete(“tzList”, “_id=”+itemId,null);
——————————————————-
現在、Android SDKはADT(Eclipseプラグイン)を組み込んだEclipseの同梱された「ADT Bundle」が配布されています。本書の手順に従って、単体のAndroid SDKとEclipseをインストールするよりも、こちらを使用するほうが簡単です。ADT Bundleは32ビット版と64ビット版が用意されているので、環境に合わせてダウンロードしましょう。
(2012年12月27日更新)
—————————————————————————————
○ADT Bundleのインストール
ADT Bundleを使用するには、ダウンロードしたZIPファイルを開いて「adt-bundle-<プラットフォーム名>」フォルダーを任意のインストールフォルダーにコピーします。Eclipseはコピーしたフォルダー内の「Eclipse」フォルダーに格納されています。Android SDKには必要最低限のパッケージが含まれているので、通常はパッケージを追加する必要はありません。
—————————————————————————————
○Eclipseを日本語化する
ADT Bundleに同梱されているEclipseは日本語化されていません。Eclipseを日本語化するには、「64ビット版JDKでの開発環境の作り方」を参考にして、Pleiadesプラグインを追加します。
—————————————————————————————
○AVDマネージャーを起動する
AVDマネージャーはEclipseの「ウィンドウ」メニューで「Android仮想デバイス・マネージャー」から起動できます。デフォルトの状態で作成できるAVDはAndroid 4.2(API 17)のみです。Android 1.5~3.2のAVDを作成するには、SDKマネージャーで対応バージョンの「SDK Platform」を、Android 4.0~4.1の場合は「SDK Platform」と「ARM EABI v7a System Image」をインストールする必要があります。なお、SDKマネージャーでパッケージを追加した場合、Eclipseを再起動しないとAVDマネージャーに反映しません。
原因は不明ですが、「Android SDKマネージャー」や「Android仮想デバイス・マネージャー」がEclipseの「ウィンドウ」メニューに表示されなくなってしまうことがあります。この場合、「ウィンドウ」メニューから「パースペクティブのカスタマイズ」を選び、「コマンド・グループ可用性」タブで「Android SDKおよびAVDマネージャー」にチェックを入れればメニュー項目を復元できます。
・AVDを作成する
基本的な操作は本書の内容と同様です。ただし、「Skin」で設定していた画面解像度の設定はなくなり、代わって「デバイス」で画面解像度などを設定するように変更されています。
—————————————————————————————
○プロジェクトを作成する
・ウィザードの起動
「ファイル」メニューから「Androidアプリケーション・プロジェクト」を選びます。
・新規Androidアプリケーション画面(アプリケーション名の入力)
この画面では本書でプロジェクト作成時に指定する項目の表に記載されている各項目を入力します。
「Application Name」が「アプリケーション名」、「Project Name」が「プロジェクト名」、「Package Name」が「パッケージ名」、「Minimum Required SDK」が「ビルド・ターゲット」に該当します。「アクティビティーの作成」に記載されている内容は以降のウィザード画面で指定します。
・「プロジェクトの構成」画面
この画面はデフォルトのままで問題ありません。「カスタム・ランチャー・アイコンを作成する」のチェックを外すと次の「ランチャー・アイコンの作成」画面をスキップできます。
・「ランチャー・アイコンの作成」画面
アプリアイコンをカスタマイズします。デフォルトでは「イメージ」が指定されており、「参照」ボタンをクリックして画像ファイルを選択することでアイコンのデザインを変更できます。
・「アクティビティーの作成」画面
「BlankActivity」を選択します。
・「新規ブランク・アクティビティー」画面
「Activity Name」には本書の表で「アクティビティーの作成」に記載されている内容を入力します。「Layout Name」を「main」に変更したら、「完了」ボタンをクリックすればプロジェクトが作成できます。
—————————————————————————————
○テーマの変更
本書に掲載されているアプリの画面は背景が黒ですが、最新SDKではデフォルトで白い背景のテーマが指定されています。AndroidManifest.xmlを開き、「アプリケーション」タブの「Theme」に設定されている値を削除すれば背景が黒に変わります。
—————————————————————————————
○レイアウトを作成する
・プロパティーの表示
最新環境では、レイアウト項目のプロパティーが「プロパティー」画面ではなく「アウトライン」画面内に表示されます。「ビューの表示」に「プロパティーの表示」という項目がありますが、この画面を追加する必要はありません。なお、本書で「Layout~」と表記されているプロパティーは、「Layout Parameters」にグループ化されており、プロパティー名は「Layout」を除いた表記になっています。また、本書で「Margin~」と表記されているプロパティーは、「Layout Parameters→Margins」にグループ化されており、こちらも「Layout Margin」を除いた表記になっています。
・レイアウトのルートを変更する
最新環境でプロジェクト作成時に生成されるレイアウトファイルでは、レイアウトのルートが「RelativeLayout」になっています。RelativeLayoutではドラッグ&ドロップでビューの配置を自由に変更できますが、本書で指定されているプロパティーの中にはRelativeLayout内で使用できないものもあります。そのため、ルートをLinearLayoutに変更しておきましょう。まず「main.xml」を開き、「アウトライン」画面で「RelativeLayout」を右クリックして「レイアウトの変更」を選びます。「Change Layout」画面が表示されるので、「LinearLayout (vertical)」を選択すれば完了です。
・レイアウトビューに設定されるIDについて
デフォルトでルートに設定される「RelativeLayout」にはIDが設定されていませんが、「LinearLayout (vertical)」に変更するとIDに「LinearLayout1」が設定されます。一方、本書作成時の環境ではレイアウトビューを追加すると自動で連番のIDが設定されていましたが、最新環境では設定されなくなっています。本書では追加したLinearLayoutにプログラム内でアクセスすることはないので、IDの設定は必須ではありません。ただし、レイアウトに追加する項目の表では、追加場所にLinearLayoutのIDを指定しているものもあります。わかりにくい場合はルートのIDを削除し、追加したレイアウトビューのIDを設定してから作業を進めるといいでしょう。
—————————————————————————————
○STEP 7 画像ダウンローダーアプリについて
Android 4.1/4.2では正常に動作しません。サーバーでの認証が失敗しているようですが、詳細は引き続き調査中です。なお、画像ダウンローダーアプリはBingのAPI変更に伴い、本書に記載されている内容から変更されています。詳細についてはサンプルプロジェクトファイルに同梱されているテキストファイルを参照してください。
—————————————————————————————
○STEP 11 世界時計ウィジェット(ListView対応版)について
「deleteTimezone」メソッド4行目で削除するIDの値を引用符で囲んでいますが、最新環境では引用符を入れると正常に動作しないので、下記のようにコードを変更してください。
(変更前)
——————————————————-
db.delete(“tzList”, “_id=’”+itemId+”’”,null);
——————————————————-
(変更後)
——————————————————-
db.delete(“tzList”, “_id=”+itemId,null);
——————————————————-