構文:
<application android:allowTaskReparenting=["true" | "false"]
             android:allowBackup=["true" | "false"]
             android:allowClearUserData=["true" | "false"]
             android:allowNativeHeapPointerTagging=["true" | "false"]
             android:backupAgent="string"
             android:backupInForeground=["true" | "false"]
             android:banner="drawable resource"
             android:dataExtractionRules="string resource"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:enabled=["true" | "false"]
             android:extractNativeLibs=["true" | "false"]
             android:fullBackupContent="string"
             android:fullBackupOnly=["true" | "false"]
             android:gwpAsanMode=["always" | "never"]
             android:hasCode=["true" | "false"]
             android:hasFragileUserData=["true" | "false"]
             android:hardwareAccelerated=["true" | "false"]
             android:icon="drawable resource"
             android:isGame=["true" | "false"]
             android:killAfterRestore=["true" | "false"]
             android:largeHeap=["true" | "false"]
             android:label="string resource"
             android:logo="drawable resource"
             android:manageSpaceActivity="string"
             android:name="string"
             android:networkSecurityConfig="xml resource"
             android:permission="string"
             android:persistent=["true" | "false"]
             android:process="string"
             android:restoreAnyVersion=["true" | "false"]
             android:requestLegacyExternalStorage=["true" | "false"]
             android:requiredAccountType="string"
             android:resizeableActivity=["true" | "false"]
             android:restrictedAccountType="string"
             android:supportsRtl=["true" | "false"]
             android:taskAffinity="string"
             android:testOnly=["true" | "false"]
             android:theme="resource or theme"
             android:uiOptions=["none" | "splitActionBarWhenNarrow"]
             android:usesCleartextTraffic=["true" | "false"]
             android:vmSafeMode=["true" | "false"] >
    . . .
</application>
上位の要素:
<manifest>
含めることのできる要素:
<activity>
<activity-alias>
<meta-data>
<service>
<receiver>
<profileable>
<provider>
<uses-library>
<uses-native-library>
説明:
アプリの宣言。この要素には、各アプリ コンポーネントについて宣言するサブ要素が含まれます。また、すべてのコンポーネントに影響する可能性のある属性があります。このような属性は多くの場合、各コンポーネント要素の対応する属性のデフォルト値を設定します(iconlabelpermissionprocesstaskAffinityallowTaskReparenting など)。その他の属性は、アプリ全体の値を設定し、コンポーネントでオーバーライドできません(debuggableenableddescriptionallowClearUserData など)。
属性
android:allowTaskReparenting
アプリが定義しているアクティビティに関して、あるタスクによってアクティビティが起動した後、アフィニティのあるタスクが次に前面に移行してきたときに、アクティビティを起動したタスクからそのタスクに移動できるかどうかを指定します。移動できる場合は "true"、起動したタスクに残る必要がある場合は "false" に設定します。デフォルト値は "false" です。

<activity> 要素には、ここで設定した値をオーバーライドできる独自の allowTaskReparenting 属性があります。詳細については、該当する属性をご覧ください。

android:allowBackup

アプリがバックアップ / 復元用インフラストラクチャに参加できるようにするかどうかを指定します。この属性を false に設定した場合、すべてのアプリデータを保存するフルシステム バックアップを adb を使用して実行したとしても、このアプリのバックアップや復元は行われません。この属性のデフォルト値は true です。

注: Android 12 以降を搭載したデバイスでアプリが動作しており、Android 12(API レベル 31)以降をターゲットとしているアプリの場合、デバイス間でアプリのファイルが移行することを無効にはできません。システムにより自動的に許可されます。

ただし、アプリが Android 12(API レベル 31)以降をターゲットとしている場合でも、この属性を false に設定すれば、アプリのファイルのクラウドベースでのバックアップと復元を無効にできます。

詳細については、Android 12(API レベル 31)以降をターゲットとしているアプリの動作変更についての説明ページにあるバックアップと復元のセクションをご覧ください。

android:allowClearUserData

アプリがユーザーデータをリセットできるようにするかどうかを指定します。対象となるデータとしては、各種のフラグや(例: ユーザーが入門用ツールチップを見たかどうか)、ユーザーがカスタマイズ可能な設定や環境設定などがあります。この属性のデフォルト値は true です。

注: この属性を明示的に宣言できるのは、システム イメージを構成するアプリに限られます。サードパーティ アプリの場合、この属性をマニフェスト ファイル内に組み込むことはできません。

詳細については、新しいデバイスでユーザーデータを復元するをご覧ください。

android:allowNativeHeapPointerTagging

アプリでヒープポインタのタグ付け機能が有効になっているかどうかを指定します。この属性のデフォルト値は true です。

注: この機能を無効にしても、根本的なコードの健全性の問題は解決しません。今後のハードウェア デバイスでは、このマニフェスト タグはサポートされない可能性があります。

詳細については、タグ付きポインタをご覧ください。

android:backupAgent
BackupAgent のサブクラスであるアプリのバックアップ エージェントを実装するクラスの名前。属性値には完全修飾クラス名(例: "com.example.project.MyBackupAgent")を指定する必要があります。ただし、短縮形として名前の最初の文字をピリオドにした場合(例: ".MyBackupAgent")、<manifest> 要素で指定したパッケージ名に付加されます。

デフォルト値はありません。名前の指定は必須です。

android:backupInForeground
アプリがフォアグラウンド相当の状態であっても、アプリに対して自動バックアップ処理を実施できることを示します。自動バックアップ処理中、アプリはシステムによってシャットダウンされます。そのため、この属性は慎重に使用してください。このフラグを true に設定すると、アプリがアクティブなときに、アプリの動作が影響を受ける可能性があります。

デフォルト値は false です。この場合、フォアグラウンドで実行中のアプリ(たとえば、startForeground() 状態で、サービス経由でアクティブに音楽を再生している音楽アプリなど)に対して、OS はバックアップを実行しなくなります。

android:banner
関連アイテム用の拡張型グラフィカル バナーを実現するドローアブル リソース<application> タグと併用した場合、すべてのアプリ アクティビティに対してデフォルトのバナーを提供します。<activity> タグと併用した場合、特定のアクティビティに対してバナーを提供します。

システムはバナーを使用して Android TV のホーム画面にアプリを表示します。バナーが表示されるのはホーム画面に限られるため、バナーを指定する必要があるのは CATEGORY_LEANBACK_LAUNCHER インテントを処理するアクティビティを備えたアプリのみです。

この属性は、画像を含むドローアブル リソースへの参照として設定する必要があります(たとえば、"@drawable/banner")。デフォルト バナーはありません。

詳細については、「TV アプリの作成を開始する」のホーム画面にバナーを配置するセクションをご覧ください。

android:dataExtractionRules

アプリはこの属性を、バックアップまたは転送処理の一環としてデバイスからコピーできるファイルやディレクトリを決定するルールを指定した、XML リソースに設定できます。

XML ファイルの形式については、バックアップと復元の変更点に関するドキュメントをご覧ください。

android:debuggable
ユーザーモードのデバイス上で実行している場合でも、アプリをデバッグできるかどうかを指定します。デバッグ可能にする場合は "true"、そうでない場合は "false" に設定します。デフォルト値は "false" です。
android:description
ユーザーが読むことができる、アプリに関するテキスト。アプリラベルより長く、詳細な説明を記載できます。この値は、文字列リソースへの参照として設定する必要があります。ラベルとは異なり、raw 文字列は使用できません。デフォルト値はありません。
android:enabled
Android システムがアプリのコンポーネントをインスタンス化できるかどうかを指定します。インスタンス化できる場合は "true"、そうでない場合は "false" に設定します。値を "true" にした場合、各コンポーネントの enabled 属性によって、そのコンポーネントを有効にするかどうかを決定できます。値を "false" にした場合、コンポーネント固有の値はオーバーライドされ、すべてのコンポーネントが無効になります。

デフォルト値は "true" です。

android:extractNativeLibs

AGP 4.2.0 以降、extractNativeLibs マニフェスト属性は DSL オプション useLegacyPackaging に置き換えられました。ネイティブ ライブラリの圧縮動作を設定するには、マニフェスト ファイルの extractNativeLibs ではなく、アプリの build.gradle ファイルで useLegacyPackaging を使用する必要があります。詳細については、リリースノートの DSL を使用して圧縮ネイティブ ライブラリをパッケージ化するをご覧ください。

この属性は、パッケージ インストーラがネイティブ ライブラリを APK からファイル システムに抽出するかどうかを示します。"false" に設定した場合、ネイティブ ライブラリは圧縮されずに APK に保存されます。APK のサイズが大きくなる場合もありますが、ライブラリは実行時に APK から直接読み込まれるため、アプリの読み込み速度が向上します。

extractNativeLibs のデフォルト値は、minSdkVersion と、使用している AGP のバージョンによって異なります。ほとんどの場合、デフォルトの動作で十分だと思われます。この属性を明示的に設定する必要はありません。

android:fullBackupContent
この属性は、自動バックアップ用のフル バックアップ ルールが含まれる XML ファイルを指定します。このルールは、バックアップするファイルを決定します。詳細については、自動バックアップ用の構成ファイルの XML 構文をご覧ください。

この属性は省略可能です。指定しなかった場合、デフォルトでは、アプリのほとんどのファイルが自動バックアップの対象になります。詳しくは、バックアップ対象のファイルをご覧ください。

android:fullBackupOnly
この属性は、自動バックアップを利用可能なデバイスで、自動バックアップを使用するかどうかを示します。true に設定した場合、Android 6.0(API レベル 23)以降を搭載しているデバイスにアプリをインストールすると、自動バックアップが実行されます。それよりも前のバージョンのデバイスの場合、アプリはこの属性を無視して、Key-Value バックアップを実行します。

デフォルト値は "false" です。

android:gwpAsanMode
この属性は、use-after-free と heap-buffer-overflow のバグの発見に役立つネイティブ メモリ アロケータ機能である GWP-ASan を使用するかどうかを示します。

デフォルト値は "never" です。

android:hasCode
アプリ内にコードが含まれているかどうかを指定します。含まれている場合は "true"、そうでない場合は "false" に設定します。値が "false" の場合、コンポーネントの起動時に、システムはアプリコードを読み込もうとしません。デフォルト値は "true" です。

たとえば、アプリが Play Feature Delivery をサポートし、DEX ファイル(Android プラットフォーム向けに最適化されたバイトコード)を生成しない機能モジュールを備えている場合、モジュールのマニフェスト ファイルで、このプロパティを false に設定する必要があります。そうしないと、ランタイム エラーが発生する可能性があります。

android:hasFragileUserData
ユーザーがアプリをアンインストールする際に、アプリのデータを維持するようユーザーに促すかどうかを指定します。デフォルト値は "false" です。
android:hardwareAccelerated
このアプリのすべてのアクティビティとビューに対して、ハードウェア アクセラレーテッド レンダリングを有効にするかどうかを指定します。有効にする場合は "true"、そうでない場合は "false" に設定します。minSdkVersion または targetSdkVersion"14" 以上に設定している場合、デフォルト値は "true" です。そうでない場合、デフォルト値は "false" です。

Android 3.0(API レベル 11)以降、一般的な 2D グラフィック処理のパフォーマンスを高めるため、アプリ内でハードウェア アクセラレーテッド OpenGL レンダラを使用できるようになっています。ハードウェア アクセラレーテッド レンダラを有効にすると、Canvas、Paint、Xfermode、ColorFilter、Shader、Camera のほとんどの処理が高速化されます。これにより、フレームワークの OpenGL ライブラリを明示的に利用しないアプリでも、スムーズなアニメーション、スムーズなスクロール、全体的なレスポンスの向上が実現します。

必ずしもすべての OpenGL 2D 処理が高速化されるわけではありません。ハードウェア アクセラレーテッド レンダラを有効にする場合は、エラーなくレンダラを使用できるか、必ずアプリをテストしてください。

詳細については、ハードウェア アクセラレーションをご覧ください。

android:icon
アプリ全体のアイコンや、各アプリ コンポーネントのデフォルト アイコンを指定します。個々の要素の icon 属性については <activity> 要素、<activity-alias> 要素、<service> 要素、<receiver> 要素、<provider> 要素をご覧ください。

この属性は、画像を含むドローアブル リソースへの参照として設定する必要があります(たとえば、"@drawable/icon")。デフォルト アイコンはありません。

android:isGame
アプリがゲームかどうかを指定します。Android システムでは、ゲームとして分類されたアプリをグループ化したり、他のアプリとは区別して表示したりすることがあります。

デフォルト値は false です。

android:killAfterRestore
フルシステム復元処理の実行中に、対象アプリの設定が復元された後、そのアプリを終了するかどうかを指定します。単一パッケージ復元処理の場合、アプリはシャットダウンされません。フルシステム復元処理は通常、スマートフォンを初めてセットアップする際に 1 回だけ実行されます。サードパーティ アプリの場合は通常、この属性を使用する必要はありません。

デフォルト値は true です。この場合、フルシステム復元中にアプリがデータの処理を終了すると、そのアプリは終了します。

android:largeHeap
大量の Dalvik ヒープを使用してアプリのプロセスを作成するかどうかを指定します。これは、そのアプリ向けに作成されるすべてのプロセスに適用されます。また、プロセスに読み込まれた最初のアプリにしか適用されません。共有ユーザー ID を使用して複数のアプリが 1 つのプロセスを使用できるようにしている場合は、すべてのアプリで一貫してこの設定を使用する必要があります。そうしないと、予期しない結果が生じます。

ほとんどのアプリで、この機能は必要ありません。むしろ、全体的なメモリ使用量を抑えてパフォーマンスを改善する方が重要です。デバイスによっては、利用可能な総メモリ量の制約があるため、この機能を有効にしても、利用可能なメモリが確実に増加するとは限りません。

実行時に利用できるメモリサイズを照会するには、getMemoryClass() メソッドまたは getLargeMemoryClass() メソッドを使用します。

android:label
ユーザーが読むことができるアプリ全体のラベルや、各アプリ コンポーネントのデフォルト ラベルを指定します。個々の要素の label 属性については <activity> 要素、<activity-alias> 要素、<service> 要素、<receiver> 要素、<provider> 要素をご覧ください。

ラベルは文字列リソースへの参照として設定する必要があります。そうすることで、ユーザー インターフェースの他の文字列と同じようにローカライズできるようになります。ただし、アプリ開発の便宜上、未加工の文字列として設定することもできます。

android:logo
アプリ全体のロゴや、アクティビティのデフォルトロゴを指定します。

この属性は、画像を含むドローアブル リソースへの参照として設定する必要があります(たとえば、"@drawable/logo")。デフォルトロゴはありません。

android:manageSpaceActivity
デバイス上でアプリによって占有されるメモリをユーザーが管理できるように、システムが起動できる Activity サブクラスの完全修飾名。<activity> 要素を使用してアクティビティを宣言する必要もあります。
android:name
アプリに実装する Application サブクラスの完全修飾名。アプリプロセスが開始すると、どのアプリ コンポーネントよりも前にこのクラスがインスタンス化されます。

このサブクラスは省略可能です。ほとんどのアプリで必要ありません。サブクラスがない場合、Android は、ベースとなる Application クラスのインスタンスを使用します。

android:networkSecurityConfig

アプリのネットワーク セキュリティ構成が含まれている XML ファイルの名前を指定します。値は、構成が含まれている XML リソース ファイルへの参照にする必要があります。

この属性は API レベル 24 で追加されました。

android:permission
クライアントがアプリとやり取りするために必要となる権限の名前。この属性を使用すると、すべてのアプリ コンポーネントに適用される権限を簡単に設定できます。各コンポーネントで permission 属性を設定するとオーバーライドされます。

権限の詳細については、概要の権限セクションと、セキュリティと権限のドキュメントをご覧ください。

android:persistent
アプリを常に稼働状態にするかどうかを指定します。稼働状態にする場合は "true"、そうでない場合は "false" に設定します。デフォルト値は "false" です。通常、アプリはこのフラグを設定しません。この持続モードは、特定のシステムアプリだけを対象としています。
android:process
すべてのアプリ コンポーネントを実行するプロセスの名前。各コンポーネントで独自の process 属性を設定することにより、このデフォルト設定をオーバーライドできます。

デフォルトでは、アプリの最初のコンポーネントの実行が必要になったときに、そのアプリのプロセスが作成されます。その後は、すべてのコンポーネントがそのプロセス内で実行されます。デフォルト プロセスの名前は、<manifest> 要素によって設定されているパッケージ名と一致します。

この属性を、別のアプリと共有するプロセス名に設定することにより、両方のアプリのコンポーネントが同じプロセス内で実行されるように設定できます。ただし、2 つのアプリがユーザー ID を共有し、同じ証明書で署名されている必要があります。

この属性に割り当てられた名前がコロン(「:」)で始まる場合、必要に応じてアプリ専用の新しいプロセスが作成されます。プロセス名が小文字で始まる場合、その名前のグローバル プロセスが作成されます。グローバル プロセスは他のアプリと共有でき、リソース使用量を削減できます。

android:restoreAnyVersion
デバイスに現在インストールされているバージョンよりも新しいバージョンのアプリによってバックアップが保存された場合でも、アプリでバックアップ データセットの復元を試みる準備が整っていることを示します。この属性を true に設定すると、バージョンの不一致によってデータに互換性がない可能性がある場合でも、バックアップ マネージャーは復元を試みます。使用する際は十分注意してください。

この属性のデフォルト値は false です。

android:requestLegacyExternalStorage

アプリが対象範囲別ストレージをオプトアウトするかどうかを指定します。

注: ポリシーやアプリの互換性に関連する変更内容によっては、このオプトアウトのリクエストが無視されることもあります。

android:requiredAccountType
アプリを機能させるうえで必要となるアカウント タイプを指定します。Account を必要とするアプリの場合、この属性の値は、「com.google」など、アプリが使用するアカウント認証システムタイプ(AuthenticatorDescription によって定義)に対応している必要があります。

デフォルト値は null です。この場合、アカウントがなくてもアプリは機能します。

現在のところ、制限付きプロファイルの場合はアカウントを追加できないため、この属性を指定した場合、同じ値を使用して android:restrictedAccountType を宣言しない限り、制限付きプロファイルではこのアプリを使用できなくなります

注: アカウント データから個人情報が漏洩する可能性がある場合は、この属性を宣言したうえで、android:restrictedAccountType を null のままにしてください。このように設定することで、制限付きプロファイルがこのアプリを使用してオーナー ユーザーの個人情報にアクセスすることはできなくなります。

この属性は API レベル 18 で追加されました。

android:resizeableActivity

アプリがマルチ ウィンドウ モードをサポートするかどうかを指定します。この属性は、<activity> 要素でも <application> 要素でも設定できます。

この属性を true に設定すると、ユーザーは、分割画面モードや自由形式モードでアクティビティを起動できるようになります。この属性を false に設定すると、マルチウィンドウ環境について、アプリのテストや最適化ができなくなります。ただし、アクティビティを互換性モードを適用したマルチウィンドウ モードにすることはできます。また、この属性を true に設定しても、マルチウィンドウ モードの他のアプリが画面(ピクチャー イン ピクチャーなど)または他のディスプレイに表示されないとは限りません。したがって、このフラグを設定しても、アプリによる排他的なリソース アクセスは保証されません。

API レベル 24 以降をターゲットとしているアプリで、この属性に値を指定しなかった場合、属性の値はデフォルトで true になります。

API レベル 31 以降をターゲットとしているアプリの場合、この属性による動作は小画面と大画面で異なります。

  • 大画面(画面幅 600 dp 以上): すべてのアプリでマルチウィンドウ モードがサポートされます。この属性は、アプリをサイズ変更できるかどうかを示します(アプリがマルチウィンドウ モードをサポートしているかどうかではありません)。resizeableActivity="false" の場合、ディスプレイの寸法に合わせるために必要なとき、アプリは画面互換性モードになります。
  • 小画面(画面幅 600 dp 未満): resizeableActivity="true" であり、かつメイン アクティビティの最小幅と最小高さがマルチウィンドウ要件の範囲内である場合、アプリはマルチウィンドウ モードをサポートします。resizeableActivity="false" の場合、アクティビティの最小幅と高さに関係なく、アプリはマルチウィンドウ モードをサポートしません。

注: デバイス メーカーは、API レベル 31 の動作をオーバーライドできます。

この属性は API レベル 24 で追加されました。

注: タスクのルート アクティビティ値は、タスク内で起動されるすべての追加アクティビティに適用されます。つまり、タスクのルート アクティビティがサイズ変更可能である場合、システムはタスク内の他のすべてのアクティビティをサイズ変更可能なものとして扱います。ルート アクティビティがサイズ変更不可である場合、タスク内の他のアクティビティはサイズ変更不可です。

android:restrictedAccountType
このアプリに必要となるアカウント タイプを指定し、オーナー ユーザーに属するアカウントに対して制限付きプロファイルがアクセスできることを示します。アプリが Account を必要とし、制限付きプロファイルがプライマリ ユーザーのアカウントにアクセスできる場合、この属性の値は、「com.google」など、アプリが使用するアカウント認証システムタイプ(AuthenticatorDescription によって定義)に対応している必要があります。

デフォルト値は null です。この場合、アカウントがなくてもアプリは機能します。

注: この属性を指定すると、制限付きプロファイルでもオーナー ユーザーに属するアカウントでアプリを使用できるようになるため、個人情報が漏洩する可能性があります。アカウントから個人情報が漏洩する可能性がある場合は、この属性を使用せず、代わりに android:requiredAccountType 属性を宣言して、制限付きプロファイルではこのアプリを使用できないようにしてください。

この属性は API レベル 18 で追加されました。

android:supportsRtl
アプリが RTL(右から左)レイアウトをサポートするかどうかを宣言します。

この属性を true に設定し、targetSdkVersion を 17 以上に設定した場合、各種の RTL API がアクティブになってシステムで使用され、アプリが RTL レイアウトを表示できるようになります。false に設定した場合、または targetSdkVersion を 16 以下に設定した場合、RTL API は無視されるか効果を持たなくなり、ユーザーが選択した言語 / 地域に関連付けられたレイアウト方向に関係なく、アプリの動作は同じになります(レイアウトは常に左から右になります)。

この属性のデフォルト値は false です。

この属性は API レベル 17 で追加されました。

android:taskAffinity
アプリ内のすべてのアクティビティに適用されるアフィニティ名。ただし、独自の taskAffinity 属性を使用して異なるアフィニティを設定したアクティビティは除きます。詳細については、該当する属性をご覧ください。

デフォルトでは、アプリ内のすべてのアクティビティは同じアフィニティを共有します。そのアフィニティの名前は、<manifest> 要素で設定されているパッケージ名と同じです。

android:testOnly
このアプリがテスト専用かどうかを示します。たとえば、セキュリティ ホールの原因となる可能性のある機能やデータを外部に公開することがあっても、テスト目的であれば役立ちます。この種の APK は、adb 経由に限りインストールできます。Google Play に公開することはできません。

Android Studio で実行ボタン()をクリックすると、自動的にこの属性が追加されます。

android:theme
アプリ内のすべてのアクティビティのデフォルト テーマを定義するスタイル リソースへの参照を指定します。各アクティビティに対して独自の theme 属性を設定することにより、このデフォルト設定をオーバーライドできます。詳細については、スタイルとテーマのデベロッパー ガイドをご覧ください。
android:uiOptions
アクティビティの UI 用の追加オプションを指定します。

次のいずれかの値を指定する必要があります。

説明
"none"追加 UI オプションなし。これがデフォルトです。
"splitActionBarWhenNarrow"水平方向のスペースに制約がある場合(スマートフォンが縦向きモードの場合など)、画面下部にアプリバー(別名「アクションバー」)を追加して、そのバーにアクション アイテムを表示します。画面上部のアプリバーに少数のアクション アイテムを表示するのではなく、アプリバーを分割して、上部のバーにナビゲーション セクションを表示し、下部のバーにアクション アイテムを表示します。これにより、アクション アイテムだけでなく、上部のナビゲーション要素やタイトル要素にも、適切なスペースが確保されます。メニュー項目は 2 つのバーに分割されません。常に一緒に表示されます。

アプリバーの詳細については、アプリバーの追加をご覧ください。

この属性は API レベル 14 で追加されました。

android:usesCleartextTraffic
アプリがクリアテキスト ネットワーク トラフィック(クリアテキスト HTTP など)の使用を想定しているかどうかを示します。API レベル 27 以前をターゲットとしているアプリの場合、デフォルト値は "true" です。API レベル 28 以降をターゲットとしているアプリの場合、デフォルト値は "false" です。

この属性を "false" に設定した場合、プラットフォーム コンポーネント(HTTP スタック、FTP スタック、DownloadManagerMediaPlayer など)は、アプリがクリアテキスト トラフィックの使用をリクエストしても拒否します。サードパーティ ライブラリでも、この設定を遵守することを強くおすすめします。クリアテキスト トラフィックを避ける理由としては主に、機密性や信頼性に欠け、改ざんに対する保護機能がないことなどが挙げられます。ネットワーク攻撃者は送受信データを傍受でき、検出されることなくそのデータを変更できます。

Android アプリに付与されるアクセスレベルを考慮すると、Android アプリからクリアテキスト トラフィックが一切生じないようにすることは不可能であるため、このフラグはベスト エフォート ベースで遵守されます。たとえば、Socket API はトラフィックがクリアテキストであるかどうかを判断できないため、この API がこのフラグを遵守することは想定できません。ただし、アプリから生じるネットワーク トラフィックの大半は、ハイレベルのネットワーク スタック / コンポーネントによって処理されます。ハイレベルのネットワーク スタック / コンポーネントであれば、ApplicationInfo.flags または NetworkSecurityPolicy.isCleartextTrafficPermitted() からこのフラグを読み取ることによって、フラグの設定を遵守できます。

注: WebView は、API レベル 26 以降をターゲットとしているアプリについて、この属性を遵守します。

アプリの開発中に、StrictMode を使用することで、アプリから生じるクリアテキスト トラフィックを識別できます。詳細については StrictMode.VmPolicy.Builder.detectCleartextNetwork() をご覧ください。

この属性は API レベル 23 で追加されました。

Android 7.0(API レベル 24)以降では、Android ネットワーク セキュリティ構成が存在する場合、このフラグは無視されます。

android:vmSafeMode
アプリが仮想マシン(VM)をセーフモードで動作させるかどうかを示します。デフォルト値は "false" です。

この属性は API レベル 8 で追加されました。当時は、値を「true」にすると Dalvik 実行時(JIT)コンパイラが無効になっていました。

この属性は API レベル 22 で変更されました。以降、値を「true」にすると ART 事前(AOT)コンパイラが無効になります。

導入時の API レベル:
API レベル 1
関連項目:
<activity>
<service>
<receiver>
<provider>