- 構文:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string" android:sharedUserId="string" android:sharedUserLabel="string resource" android:versionCode="integer" android:versionName="string" android:installLocation=["auto" | "internalOnly" | "preferExternal"] > . . . </manifest>
- 上位の要素:
- なし
- 含める必要がある要素:
<application>
- 含めることのできる要素:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>
- 説明:
- AndroidManifest.xml ファイルのルート要素。
<application>
要素を含める必要があり、xmlns:android
属性とpackage
属性を指定する必要があります。 - 属性:
-
xmlns:android
- Android 名前空間を定義します。この属性は "
http://schemas.android.com/apk/res/android
" に設定する必要があります。 package
- Android アプリの Java 言語形式の完全なパッケージ名。この名前には、大文字または小文字(「A」~「Z」)、数字、アンダースコア(「_」)を含めることができます。ただし、パッケージ名を構成する各部分は文字で始まる必要があります。
アプリをアプリ パッケージ(APK)にビルドするとき、ビルドシステムは
package
属性を使用して次の 2 つのことを行います。- パッケージ名をアプリが生成した
R.java
クラスの名前空間として適用します(アプリリソースへのアクセスに使用)。たとえば、
package
が"com.example.myapp"
に設定されている場合、R
クラスはcom.example.myapp.R
に作成されます。 - この名前を使用して、マニフェスト ファイルで宣言されたすべての相対クラス名を解決します。
たとえば、
package
が"com.example.myapp"
に設定されている場合、<activity android:name=".MainActivity">
として宣言されたアクティビティはcom.example.myapp.MainActivity
に解決されます。
この名前はアプリプロセスのデフォルト名にもなります(
<application>
要素のprocess
属性を参照)。また、アクティビティのデフォルトのタスク アフィニティにもなります。(<activity>
要素のtaskAffinity
属性を参照)。さらに、この名前はアプリ ID も表します。アプリ ID は、Google Play でアプリを公開するうえでユニバーサルに一意である必要があります。ただし、APK のビルドプロセスの終わりに近づくと、ビルドツールが(Android Studio プロジェクトで使用されている)
build.gradle
ファイルのapplicationId
プロパティを使用してpackage
名をオーバーライドします。マニフェストのpackage
名がビルドファイルのapplicationId
と同じである限り、これが問題になることはありません。ただし、この 2 つの値が異なる場合は、アプリ ID の設定方法を確認して、「パッケージ名」と「アプリ ID」の違いを理解してください。他のデベロッパーとの競合を回避するには、パッケージ名のベースとしてインターネット ドメインの所有権を(逆の順序で)使用する必要があります。たとえば、Google が公開するアプリは
com.google
で始まります。注:
com.example
とcom.android
の名前空間は、Google Play では禁止されています。アプリの公開後にパッケージ名を変更することは可能ですが、その場合に
applicationId
を変更してはいけません。applicationId
は Google Play におけるアプリの一意の ID を定義するため、この ID を変更するとその APK は別のアプリとみなされ、以前のバージョンのユーザーがアップデートを受信できなくなります。詳しくは、アプリ ID の設定方法をご覧ください。 - パッケージ名をアプリが生成した
android:sharedUserId
-
この定数は API レベル 29 でサポートを終了しました。
この定数を使用すると、パッケージ マネージャー内での動作が非決定性を持ちます。そのため、この定数は使用しないことを強くおすすめします。Android の将来のバージョンで削除される可能性があります。代わりに、アプリで適切な通信メカニズム(サービスやコンテンツ プロバイダなど)を使用して、共有コンポーネント間の相互運用性を促進する必要があります。他のアプリと共有される Linux ユーザー ID の名前。デフォルトでは、Android が各アプリに一意のユーザー ID を割り当てます。ただし、この属性が複数のアプリで同じ値に設定されている場合、それらのアプリの証明書セットが同じであれば、アプリはすべて同じ ID を共有します。同じユーザー ID を持つアプリは互いのデータにアクセスでき、必要な場合は同じプロセス内で実行することもできます。
android:targetSandboxVersion
- アプリで使用するターゲット サンドボックス。サンドボックスのバージョン番号が大きいほど、セキュリティのレベルが上がります。デフォルト値は
1
ですが、2
に設定することも可能です。この属性を2
に設定すると、アプリが別の SELinux サンドボックスに切り替わります。レベル 2 のサンドボックスには次の制限が適用されます。
- ネットワーク セキュリティ構成の
usesCleartextTraffic
のデフォルト値は false です。 - UID は共有できません。
Android 8.0(API レベル 26)以降を対象とする Android Instant Apps では、この属性を 2 に設定する必要があります。インストール版のアプリのサンドボックス レベルは制限が緩和されたレベル 1 に設定できますが、そのように設定したアプリは Instant App からインストール版アプリにアプリデータが送られず、永続化されません。Instant App からインストール版のアプリにデータを永続化するには、インストール版のアプリのサンドボックスの値を 2 に設定する必要があります。
アプリのインストール後は、ターゲット サンドボックスの値をより大きな値に更新することはできますが、小さくすることはできません。ターゲット サンドボックスの値を小さくするには、アプリをアンインストールして、マニフェストのこの属性値がより小さいバージョンに置き換える必要があります。
- ネットワーク セキュリティ構成の
android:sharedUserLabel
-
この定数は API レベル 29 でサポートを終了しました。
この定数を使用すると、パッケージ マネージャー内での動作が非決定性を持ちます。そのため、この定数は使用しないことを強くおすすめします。Android の将来のバージョンで削除される可能性があります。代わりに、アプリで適切な通信メカニズム(サービスやコンテンツ プロバイダなど)を使用して、共有コンポーネント間の相互運用性を促進する必要があります。ユーザーが読むことができる、共有ユーザー ID 用のラベル。このラベルは、文字列リソースへの参照として設定する必要があります。未加工の文字列を設定することはできません。
この属性は API レベル 3 で導入されました。この属性は、
sharedUserId
属性も設定されている場合にのみ有効になります。 android:versionCode
- 内部バージョン番号。この番号は、バージョンを比較してどちらが新しいかを判定するためだけに使用されます。番号が大きいほど、バージョンが新しいことを示します。このバージョン番号はユーザーには表示されません。ユーザーに表示されるのは、
versionName
属性で設定した番号です。値には "100" などの整数を設定する必要があります。バージョン番号は必要に応じて定義できますが、前のバージョンより番号を大きくする必要があります。たとえば、バージョン番号にビルド番号を設定することができます。また、「x.y」形式のバージョン番号を、「x」と「y」を下位と上位の 16 ビットで別々にエンコードすることにより、整数に変換することもできます。あるいは、単に新しいバージョンがリリースされるたびに番号を 1 ずつ増やすこともできます。
android:versionName
- ユーザーに表示されるバージョン番号。この属性は、未加工の文字列または文字列リソースへの参照として設定できます。この文字列はユーザーへの表示のみを目的としています。
versionCode
属性は、内部で使用される重要なバージョン番号を保持します。 android:installLocation
- アプリのデフォルトのインストール場所。
次のキーワード文字列を指定できます。
値 説明 " internalOnly
"アプリは内部デバイス ストレージにのみインストールする必要があります。この文字列が設定されている場合、アプリは外部ストレージにインストールされなくなります。内部ストレージに空き領域がない場合、アプリはインストールされません。これは、 android:installLocation
を定義していない場合のデフォルトの動作です。" auto
"アプリは外部ストレージにインストールされることもありますが、デフォルトでは内部ストレージにインストールされます。内部ストレージに空き領域がない場合は外部ストレージにインストールされます。アプリのインストール後にユーザーがシステム設定を通じて内部または外部ストレージに移動することができます。 " preferExternal
"アプリは外部ストレージ(SD カード)を優先インストール先にします。ただし、システムがこの要求を遵守する保証はありません。外部メディアを利用できない場合、または外部メディアに空き領域がない場合は、アプリが内部ストレージにインストールされる可能性があります。アプリのインストール後にユーザーがシステム設定を通じて内部または外部ストレージに移動することができます。 注: デフォルトでは、この属性を "
auto
" または "preferExternal
" に設定した場合を除き、アプリは内部ストレージにインストールされ、外部ストレージにインストールすることはできません。アプリが外部ストレージにインストールされた場合は次のようになります。
.apk
ファイルは外部ストレージに保存されますが、アプリデータ(データベースなど)はすべて、内部のデバイスメモリに保存されます。.apk
ファイルが保存されるコンテナは鍵を使って暗号化されます。このため、アプリはインストールしたデバイスでしか動作できません(ユーザーが SD カードを別のデバイスに移動して、そのカードにインストールされているアプリを使用することはできません)。ただし、複数の SD カードを同じデバイスで使用することは可能です。- ユーザーからのリクエストで、アプリを内部ストレージに移動することができます。
ユーザーは、アプリを内部ストレージから外部ストレージに移動するようリクエストすることもできます。ただし、この属性が
internalOnly
に設定されている場合(デフォルトの設定)、ユーザーはアプリを外部ストレージに移動できません。この属性の使用方法(下位互換性を維持する方法を含む)について詳しくは、アプリのインストール場所をご覧ください。
導入時の API レベル: API レベル 8
- 導入時の API レベル:
- API レベル 1(属性の説明で記載されている場合を除く)
- 関連項目:
-
<application>