- 構文:
<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>