要素を含める必要があり、package 属性を指定…"/>
構文:
<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.examplecom.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>