まずは「AndroidManifest.xml」とは何かを説明しましょう。
AndroidManifest.xmlとは、全てのAndroidアプリケーションが必要とする“アプリケーションの定義ファイル”となります。このファイルで一元的にアプリケーションの情報を定義することにより、Androidのシステム側にアプリケーションの情報を伝達することができます。
AndroidManifest.xmlの内容ですが、私たちが最も利用するのはコンポーネントの定義でしょう。ActivityやServiceといった各コンポーネントを利用するときには、そのコンポーネント(Javaのクラス)をAndroidManifest.xmlに登録しておく必要があります。
他にもアプリケーション名、パッケージ名、バージョン情報(バージョンネームとバージョンコード)、H/W機能の利用など(例:カメラの利用)に必要なアプリケーションに与える許可情報などの定義を記載します。
なお、暗号化を行う設定はAndroidManifest.xmlにはありません。暗号化ではありませんが、コードの難読化を行うにはProGuardの設定ファイル「proguard.cfg」に記載することになります。よって、演習1は(4)が誤りとなります。
AndroidManifest.xmlの<uses-sdk>タグに関する問題です。このタグは、必須入力の項目ではありませんが、非常によく使うのと、出題もされやすいので、これを機会に覚えておきましょう。
このタグの“android:minSdkVersion”属性には、このアプリケーションを実行可能とするAndroidの最小バージョンを指定できます。これを指定することにより、アプリケーションをインストール可能な端末のAPIレベルを指定値以上に制限をかけることができます。よって、このタグが示しているのは「このアプリケーションはAPIレベルが7以上の端末にしかインストールできません」という制約になります。この属性の指定は必須ではありませんが、作成したアプリケーションを古いAndroid端末にインストールした際、正常に動作しない可能性がありますので、指定することが推奨されます。
さて、ここで1つ疑問がわいてきます。そもそも“APIレベル”とは何なのでしょうか? 「AndroidのAPIレベル7の端末が新発売!!」――なんて聞いたことがありませんよね。APIレベルというのは、Androidプラットフォームのバージョン(これが私たちが普段見聞きするバージョン2.2や2.3に当たるものです)で提供されているフレームワークAPIのリビジョンを識別する数値です。平易にいえば、フレームワークAPIのバージョン番号のようなものとなります。なお、このAPIレベルとプラットフォームのバージョンは、以下の表のように対応しています。
プラットフォームのバージョン | APIレベル |
---|---|
Android 3.2 | 13 |
Android 3.1 | 12 |
Android 3.0 | 11 |
Android 2.3.3/2.3.4 | 10 |
Android 2.3/2.3.1/2.3.2 | 9 |
Android 2.2 | 8 |
Android 2.1 | 7 |
Android 2.0.1 | 6 |
Android 2.0 | 5 |
Android 1.6 | 4 |
Android 1.5 | 3 |
Android 1.1 | 2 |
Android 1.0 | 1 |
表1 プラットフォームのバージョンとAPIレベルの対応関係 |
よって演習2の正解は、“APIレベル7”に対応する、(3)「Android 2.1以上の環境で実行可能」となります。
文字列リソースファイルの書式についての問題です。全ての選択肢が1行目は、
<?xml version="1.0" encoding="utf-8"?>
となっています。これはXML宣言で、XMLのバージョンと文字エンコードを指定しています。いわゆる“お約束”になりますので、これを機会に覚えましょう。
さて、次に文字列リソースの定義ですが、決まりとしては以下のようになります。
上記より、演習3は(1)が正解となります。
なお、ATSSのスキル項目「XMLファイル」については、この演習のようにAndroidのXMLファイルについて問われることもありますが、Androidに関係なくXML全般の知識について問われることもあります。XMLの基本的な規約は、技術者として知っておいてしかるべき知識ですので、これを機会に再度確認しておきましょう。
Androidでの多言語対応の実現方法を問う問題です。Androidには、多言語対応する仕組みが用意されています。その方法は、文字列リソースファイルが格納されているディレクトリ名(res/values)に「-」と“言語コード”を後ろに付けたディレクトリを用意します。さらに、地域コードを付与したい場合は、続けて「-r」と“地域コード”を後ろに続けたディレクトリを用意します。その後、その言語に対応する文字列リソースファイルを作成したディレクトリに配置します。具体的に見てみましょう。
図1のようにディレクトリを用意すると、端末の言語設定がオーストラリア英語の場合は、「res/values-en-rAU」ディレクトリ下の文字列リソースファイルが読み込まれます。それ以外の英語の場合は、「res/values-en」、日本語の場合は「res/values-ja」、その他の言語の場合は「res/values」ディレクトリ下が読み込まれます。よって演習4は(3)が正解となります。
なお、Androidの多言語対応における注意点ですが、“言語の決定は端末で指定された言語に基づきます”。よって、アプリケーション内で動的に表示言語を変える仕組みは用意されていません。それが可能なアプリケーションを作成する場合は、その機能を実装する必要があります。
ここまでの内容で、本連載におけるリソースファイルの学習は終了です。ACE合格対策を考えると、リソースファイルは理解が比較的容易な問題が多く、得点しやすい単元になります。70%以上という厳しい合格基準を達成するために、この単元は満点を狙いたいですね!
さて次回は、「アプリケーションコンポーネンツ」を取り上げます。この単元は、Androidのアプリケーション開発において最も重要な単元です。可能であれば、Androidの5個のコンポーネントがそれぞれどのような機能を持っているのかを予習しておきましょう。それでは次回にご期待ください! (次回に続く)
Copyright © ITmedia, Inc. All Rights Reserved.