ここから本文です

この知恵ノートを「知恵コレクション」に追加しました。

追加した知恵ノートはMy知恵袋の「知恵コレクション」ページで確認できます。

知恵コレクション」に登録済みです。

再登録しました。

追加に失敗しました。

ノートに戻り、もう一度やり直してください。

すでに1,000件のノートが登録されています。

新しく追加したい場合は、My知恵袋の「知恵コレクション」ページで登録されているノートを削除してください。

追加できませんでした。

ノートは削除されました。

Android開発をJava 7で行う

ライターさん(最終更新日時:2014/4/22)投稿日:

  • ナイス!:

    3

  • 閲覧数:34580

印刷用のページを表示する

もっとはじめに

2014年4月17日に「もっとはじめに」を追記しました。


API 19でようやくJava 1.7準拠をサポート

Android開発環境では、SDK Platformごとにコンパイラーが提供されています。これがJDKのコンパイラーと連携してAndroidアプリケーションをコンパイルする仕組みになっていますが、API 18(Android 4.3)までのSDK Platformでは、Javaコンパイラーの準拠レベルが1.6である必要がありました。本項の作業はそのために必要だったものです。しかし、API 19(Android 4.4)のSDK PlatformでJava 1.7準拠がサポートされました。


コンパイラーの選択

新規Androidアプリケーションを作成すると、最初に下図のような画面が表示されます。このうち「次でコンパイル」(日本語化していなければ「Compile With」)という項目は、このアプリケーションのコンパイルに用いるSDK Platformの指定です。SDK Platformの持つコンパイラーは、Androidの過去のバージョンに対して互換性を持っています。この項目がAPI 19であったとしても、Android 4.3以前に向けたアプリケーションの開発は可能です。この項目は、基本的には開発環境にインストールされている最新のAPIレベルを選択すれば良いのです。 

10.png


Java 1.7準拠の記述も可能に

「次でコンパイル」の設定がAPI 19以降であれば、Javaコンパイラーの準拠レベルは1.7のままで開発を行うことができます。Java 1.7で新たに導入された記述(例えばswitch文の条件式やcase文の値に文字列を使用するなど)を使うこともできます。さらに、「最小必須SDK」の設定の範囲内であれば、そのようにして開発したアプリケーションをAndroid 4.3以前の端末で動作させることも可能です。よって、以降で記述している「コンパイラー準拠レベルを1.6に設定する」という作業は、事実上必要無くなってしまったわけです。


少し古い書籍では、未だにJDK 6を開発要件としているものもあると思いますので、本項の内容はひとまず残しておきますが、このことを踏まえておくと良いでしょう。


はじめに

Java 6が開発終了に

OracleのJava 6が開発終了になりました。実はもっと早い段階で開発終了が予定されていたものの、深刻な問題が続発したため、予定を先延ばししてUpdate 45までリリースが続けられましたが、今後はセキュリティアップデートも提供されない方針です。


今後も、Java6はOracle Java Archivesのページで過去のバージョンとしてダウンロードすることはできますが、Oracleアカウントの作成が必要となります(下図画面)。登録は無償ではありますが、住所などの入力も必要のため、登録を躊躇する人もいることでしょう。 

1.png


Java 7でAndroid開発

これにより、2013年7月現在で登録なしにダウンロードできるのはJava 7の最新版のみとなりました。かつては、Java 7でAndroid開発を行うにはいくつかの問題がありましたが、現在ではほぼ解消しています。ここでは、Windows環境においてJava 7でAndroid開発を行うための操作を解説します。


JDKのダウンロード

JDKのダウンロード手順はこれまでと全く同じです。


http://www.oracle.com/technetwork/java/javase/downloads/index.html

上記のダウンロードサイトからJDK 7を選択し、Accept License Agreementにチェックを入れてから、OSの環境に合わせたファイルのリンクをクリックするだけです。 

2.png 

ダウンロードが完了したら、インストールを実行してください。ここでは、特にパラメーターを変更することなく、標準設定のままインストールしたものとします。


Ecliseの設定

インストール済みのJREの追加

JDK 7をインストールしたら、Eclipseの設定を修正します。まず、メニューの「ウィンドウ」から「設定」を選択し、下図の画面で「Java」→「インストール済みのJRE」を選択します。この段階では、たった今インストールしたJDK 7は加わっていないことでしょう。ここで、「検索」ボタンを押します。 

3.png 

するとJREの検索を開始するディレクトリー(フォルダー)の選択画面となるので、通常通りJDKをインストールしたなら、C:\Program Files\Javaを選択します。ここを起点とすれば、これ以下に導入されているJREは全て検出されます。

4.png 

検出された中から、jdk1.7.0_xx(xxはUpdate番号)となっているものにチェックを入れてOKをすれば完了です。 

5.png


コンパイラー準拠レベルの変更

次に、AndroidのソースファイルがJava 6準拠でコンパイルされるように設定をする必要があります。これには、2つ方法があります。一つは、ワークスペース全体の標準コンパイラー準拠レベルを変更すること。もう一つは、ワークスペース内のAndroidプロジェクトのみ、コンパイラー準拠レベルを変更することです。


ワークスペース全体の標準コンパイラー準拠レベル変更


ワークスペース全体の標準コンパイラー準拠レベルを変更するには、再びメニューの「ウィンドウ」から「設定」を選択し、「Java」→「コンパイラー」を選択して、「コンパイラー準拠レベル」を「1.6」に変更します。

7.png


プロジェクトごとにコンパイラー準拠レベル変更


プロジェクト単位でコンパイラー準拠レベルを変更するには、パッケージ・エクスプローラー上の当該プロジェクトの上でマウス右クリックし、「プロパティー」を選択します。左側のリストから「Javaコンパイラー」を選択すると下図のような画面になるので、「プロジェクト固有の設定を可能にする」にチェックを入れ、「コンパイラー準拠レベル」を「1.6」に変更します。

8.png


何が異なるのか?


上記2つの操作方法で何が異なるのか。前者のワークスペース全体の設定変更を行った場合、このワークスペース内で新規に作成したJavaプロジェクトは、全てコンパイラー準拠レベルが「1.6」の状態が標準となります。もしこのワークスペース内で、Androidアプリケーションではない一般のJavaアプリケーション開発も行っていて、そちらはコンパイラー準拠レベル「1.7」で開発したい場合、上記のプロジェクトごとに準拠レベルを設定するときと同じ要領で、プロジェクト単位でコンパイラー準拠レベルを「1.7」に上げる必要があります。


逆に、ワークスペース内のほとんどがコンパイラー準拠レベル「1.7」である必要があるプロジェクトで、その中にAndroidアプリケーションのプロジェクトを混在させる場合は、上記の後者の方法でそのプロジェクトだけコンパイラー準拠レベルを「1.6」に下げる必要があります。


どちらも面倒です。それを避けるためにも、Androidアプリケーション開発には専用のワークスペースを作成するのがお勧めです。


NDK開発にも影響が

Java言語のみで開発している人は以上の作業でこれまでと変わらず作業を行うことができます。しかし、C/C++言語を用いたNDKを使った開発をしている人にはもう一つ弊害があります。


ネイティブメソッドに対応したヘッダーファイルを作成するjavahコマンドを使用するときに、classpathの指定としてAndroid SDKのjarファイルを加える必要があります。これはJava 6では不要だったのですが、Java 7では現状ではユーザーが指定する必要があるようです。


下図は、私が執筆したAndroid NDKを使った開発環境の構築での外部ツール構成の設定画面ですが、ここで「引数」の-classpathオプションのパラメーターを修正する必要があります。

9.png


上の図では見づらいですが、


-d jni -classpath bin/classes;C:\ADT\sdk\platforms\android-17\android.jar ${java_type_name}


のように設定しています。-classpathのパラメーターとして、これまでのbin/classesの後をセミコロンで区切って、インストールされている最新SDK Platformのフォルダー下にあるandroid.jarファイルをフルパスで指定しています。上の例は私の環境での例なので、SDKのパスはお使いの環境に合わせてください。空白文字を含む場合は、ダブルクォーテーションで囲む必要があります。


SDK Platformは過去のAPIレベルとの互換性があるので、これより古いAPIレベルをターゲットとして開発しているアプリケーションでも、最新版のandroid.jarを指定すれば問題はないはずです。


改版履歴

(2013/07/07)初版作成

(2014/04/17)API 19でJava 1.7準拠がサポートされたことを追記

(2014/04/22)画像差し替え

このノートに関するQ&A

このノートに関するQ&Aは、まだありません。

このノートについて質問する

このノートについてライターの方に質問できます。

※ライターの方から必ず回答をいただけるとは限りません

※別ウィンドウで開きます

この知恵ノートのライター

アップロード写真

グレード知恵ノートのグレード:3-3

カテゴリマスター

keicha_hrsさん

ピックアップ

お尻や足の贅肉にさよなら、「...
本にできない「正しい」下半身ダイエットなぜ「本にできない...
スマートフォンを海外に持って...
はじめに最近はこの知恵ノートを御覧頂き良く質問も受け付け...
iPod入門: 新しいパソコンに i...
iTunesの移転方法はいろいろありますが、簡単に出来る方法を...
本文はここまでです このページの先頭へ