コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。
構文:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="string"
          android:sharedUserId="string"
          android:sharedUserLabel="string resource" 
          android:sharedUserMaxSdkVersion="integer"
          android:versionCode="integer"
          android:versionName="string"
          android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
    . . .
</manifest>

上位の要素:
なし

含める必要がある要素:
<application>
格納可能な下位の要素:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<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
APK のマニフェスト ファイルに含まれている package 属性の値は、アプリの普遍的に一意のアプリケーション ID を表します。これは Android アプリの Java 言語形式の完全なパッケージ名にする必要があります。この名前には、大文字または小文字(「A」~「Z」)、数字、アンダースコア(「_」)を含めることができます。ただし、パッケージ名を構成する各部分は文字で始まる必要があります。

package の値は変更しないように注意してください。変更すると基本的に新しいアプリが作成されることになるためです。その場合、以前のバージョンのユーザーは更新版を受け取ることができず、新旧のバージョン間でデータを転送することもできなくなります。

Gradle ベースのビルドシステムでは、AGP 7.3 以降、ソース マニフェスト ファイル内で package 値を直接設定しないでください。詳しくは、アプリケーション ID の設定をご覧ください。

android:sharedUserId

この定数は API レベル 29 でサポートが終了しました。
この定数を使用すると、パッケージ マネージャー内での動作が非決定性を持ちます。そのため、この定数は使用しないことを強くおすすめします。Android の将来のバージョンで削除される可能性があります。代わりに、アプリで適切な通信メカニズム(サービスやコンテンツ プロバイダなど)を使用して、共有コンポーネント間の相互運用性を促進する必要があります。なお、共有ユーザー ID からの移行はサポートされていないため、既存のアプリでこの値を削除することはできません。これらのアプリでは、新規ユーザー インストールで共有ユーザー ID が使用されないように、android:sharedUserMaxSdkVersion="32" を追加する必要があります。

他のアプリと共有される 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 からの移行はサポートされていないため、既存のアプリでこの値を削除することはできません。

ユーザーが読むことができる、共有ユーザー ID 用のラベル。このラベルは、文字列リソースへの参照として設定する必要があります。未加工の文字列を設定することはできません。

この属性は API レベル 3 で導入されました。この属性は、sharedUserId 属性も設定されている場合にのみ有効になります。

android:sharedUserMaxSdkVersion

ユーザー ID を共有すると、パッケージ マネージャー内での動作が非決定性を持ちます。そのため、この定数は使用しないことを強くおすすめします。Android の将来のバージョンで削除される可能性があります。代わりに、アプリで適切な通信メカニズム(サービスやコンテンツ プロバイダなど)を使用して、共有コンポーネント間の相互運用性を促進する必要があります。

システムが引き続き android:sharedUserId を使用する最大の SDK バージョン。アプリが、指定した値以降の SDK バージョンを搭載したデバイスにインストールされる場合、アプリの動作は android:sharedUserId を定義していない場合と同様になります。

この属性は API レベル 33 で導入されました。この属性は、sharedUserId 属性も設定されている場合にのみ有効になります。

android:versionCode
内部バージョン番号。この番号は、バージョンを比較してどちらが新しいかを判定するためにのみ使用されます。番号が大きいほど、バージョンが新しいことを示します。このバージョン番号はユーザーには表示されません。ユーザーに表示されるのは、versionName 属性で設定した番号です。

値は 0 より大きい正の整数に設定する必要があります。バージョン番号は必要に応じて定義できますが、前のバージョンより番号を大きくする必要があります。たとえば、バージョン番号にビルド番号を設定できます。また、「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>