1
マニフェストファイル
マニフェストファイル
マニフェストファイルとは、AndroidManifest.xmlのことで、アプリケーション全体の設計図に相当するXMLファイルです。マニフェストファイルはこれまで何回も触ってきました。このCHAPTERではマニフェストファイルの各項目について説明します。
マニフェストファイルの概要
Androidアプリケーションには、ルートディレクトリに必ずAndroidManifest.xmlファイルが必要です。
このファイルはアプリケーション全体の設計図に相当するXMLファイルで、アプリケーションの機能をAndroidシステムに伝える役割を持っています。
このファイルはアプリケーション全体の設計図に相当するXMLファイルで、アプリケーションの機能をAndroidシステムに伝える役割を持っています。
主に以下のような情報が記述されています。
- アプリケーションのJavaパッケージ名
- アプリケーションに含まれるコンポーネント
- 保護されているAndroidシステムの機能にアクセスするためのパーミッション(アクセス権限)
- アプリケーションが必要とするAPIレベル
- アプリケーションが必要とする外部ライブラリ
(コンポーネント:Activity、Service、BroadcastReceiver、ContentProvider)
<manifest>タグ
AndroidManifest.xmlファイルのルート要素です。
ここにはxmlns:android属性とpackage属性を必ず指定する必要があります。
ここにはxmlns:android属性とpackage属性を必ず指定する必要があります。
- 必須の子要素
- 主な属性
- 使用例
1 | <application> |
属性 | 内容 |
---|---|
xmlns:android | Android ネームスペースを定義する。 この属性は常に「http://schemas.android.com/apk/res/android」 と設定されている必要がある。 |
package | Java のフルパッケージ名を指定する。 この名前は一意でなければならない。 |
android:versionCode | 内部のバージョン番号を指定する。 アプリケーションの現在のバージョンを数字を使って表し、 最新のものかどうかを決定する目的のみに使用される。 |
android:versionName | ユーザに示すバージョン番号を指定する。 この属性は文字列リソースの参照を設定することもできる。 この文字列は、ユーザへ示すために用いるバージョン番号である。 |
1 2 3 4 5 6 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.helloworld" android:versionCode="1" android:versionName="1.0" > </manifest> |
<uses-permission>タグ
アプリケーションが動作するために必要なパーミッションを設定します。
重要なデータや機能へ誤ってアクセスすることによる、デバイスへの致命的な障害を引き起こすことを防ぐことができます。
重要なデータや機能へ誤ってアクセスすることによる、デバイスへの致命的な障害を引き起こすことを防ぐことができます。
- 必須の子要素
- 主な属性
- 使用例
なし
属性 | 内容 |
---|---|
android:name | パーミッションの名前。 「android.permission.CAMERA」 や 「android.permission.READ_CONTACTS」 等のシステム標準のものから独自定義したパーミッションまで様々なものを使用できるが、パーミッションの名前は一般的にパッケージ名が接頭辞として使われる。 |
1 | <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> |
<uses-sdk>タグ
APIレベルを指定し、アプリケーションの互換性を設定します。
1.6や2.3といったSDKのバージョンではなく、4や9といったAPIレベルを指定します。
1.6や2.3といったSDKのバージョンではなく、4や9といったAPIレベルを指定します。
- 必須の子要素
- 主な属性
- 使用例
なし
属性 | 内容 |
---|---|
android:minSdkVersion | アプリケーションを実行するために必要な最小のAPIレベルを指定する。AndroidデバイスのAPIレベルがこの属性で設定された値より低い場合はインストールすることができなくなる。 |
android:maxSdkVersion | アプリケーションを実行するために必要な最大のAPIレベルを指定する。AndroidデバイスのAPIレベルがこの属性で設定された値より高い場合はインストールすることができなくなる。 |
android:targetSdkVersion | アプリケーションがターゲットとするAPIレベルを設定する。ここで指定されたバージョンでの動作はテスト済みであることを示すことができる。 |
1 2 | <uses-sdk android:minSdkVersion="7" android:maxSdkVersion="10" android:targetSdkVersion="7"/> |
<uses-feature>タグ
アプリケーションが使用するデバイスの機能を設定します。
設定した機能をAndroidデバイスが搭載していない場合は、アプリケーションのインストールができなくなります。
設定した機能をAndroidデバイスが搭載していない場合は、アプリケーションのインストールができなくなります。
- 必須の子要素
- 主な属性
- 使用例
なし
属性 | 内容 |
---|---|
android:name | アプリケーションが必要とする機能の名前。 たとえば、「android.hardware.camera」を設定すると、アプリケーションがカメラを必要とすること、「android.hardware.camera.autofocus」を設定すると、アプリケーションがオートフォーカス機能付きのカメラを必要とすることになり、その機能を搭載していないデバイスへはインストールすることができなくなる。 |
1 | <uses-feature android:name="android.hardware.camera" /> |
<application>タグ
アプリケーションを宣言します。
このタグには子要素として各コンポーネントを宣言するタグを持ち、このタグ自身には全てのコンポーネントに影響を及ぼすような属性を設定します。
このタグには子要素として各コンポーネントを宣言するタグを持ち、このタグ自身には全てのコンポーネントに影響を及ぼすような属性を設定します。
- 必須の子要素
- 主な属性
- 使用例
なし
属性 | 内容 |
---|---|
android:icon | アプリケーション全体のアイコンで、アプリケーションに含まれるコンポーネントのデフォルトのアイコンでもある。 drawableリソースへの参照を設定する必要がある。 |
android:label | アプリケーション全体のラベルで、アプリケーションに含まれるコンポーネントのデフォルトのラベルでもある。 このラベルには文字列リソースへの参照を設定し、他の文字列と同じようにローカライズすることが推奨される。 |
1 2 3 4 5 | <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > </application> |
<activity>タグ
アプリケーションのActivityを宣言します。
全てのActivityはマニフェストファイルにこのタグで宣言されている必要があり、宣言がないActivityは実行することができません。
全てのActivityはマニフェストファイルにこのタグで宣言されている必要があり、宣言がないActivityは実行することができません。
- 必須の子要素
- 主な属性
- 使用例
なし
属性 | 内容 |
---|---|
android:icon | Activityのアイコンで、Activityをユーザに表示する必要があるときにスクリーン上部に表示される。設定されていない場合は、アプリケーションのアイコンが使われる。 値を設定するときは、drawableリソースへの参照を設定する必要がある。 |
android:label | Activityのラベルで、Activityをユーザに表示する必要があるときにアイコンとともにスクリーン上部に表示される。設定されていない場合は、アプリケーションのラベルが使われる。このラベルには文字列リソースへの参照を設定し、他の文字列と同じようにローカライズすることが推奨される。 |
android:name | Activityのクラスを完全修飾クラス名で指定する。「Activity」クラスが<manifest> で指定しているパッケージに属している場合は、パッケージ名を省略し最初の1文字目を「.」ピリオドから始めることができる。 |
android:screenOrientation | Activityがデバイスに表示されるときの向きを指定する。 「landscape」を指定すると横長の向きで、「portrait」を指定すると縦長の向きでActivityを表示する。 |
1 2 3 4 5 | <activity android:name=".HelloWorldActivity" android:label="@string/app_name" android:screenOrientation="landscape"> </activity> |
<service>タグ
アプリケーションのコンポーネントの1つであるServiceを宣言します。
全てのServiceはマニフェストファイルにこのタグで宣言されている必要があり、宣言がないServiceは実行することができません。
全てのServiceはマニフェストファイルにこのタグで宣言されている必要があり、宣言がないServiceは実行することができません。
- 必須の子要素
- 主な属性
- 使用例
なし
属性 | 内容 |
---|---|
android:name | Serviceのクラスを完全修飾クラス名で指定する。「Service」クラスが<manifest>で指定しているパッケージに属している場合は、パッケージ名を省略し最初の1文字目を「.」ピリオドから始めることができる。 |
android:process | Serviceが実行されるプロセスの名前を指定する。 通常はアプリケーションが実行されるプロセスと同一のプロセス上で実行されるが、このタグを設定することでマルチプロセスのServiceを作成することができる。 |
1 | <service android:name=".SampleService"></service> |