AndroidManifest.xmlとは
Androidアプリを作る際に必須のアプリに関する情報がまとめてあるファイルのこと。
AndroidManifest.xmlの構成要素
具体的に
<manifest>
<application>
</application>
</manifest>
この<manifest>と<application>の要素はAndroidManifest.xmlに必須。
そのほかの構成要素は随時アップデートされていくため、その時その時で見るようにしましょう。
自分のプロジェクトに必ず入っているので確認してみてください。
AndroidManifest.xmlの決まり
・このファイルには、規定された要素しか書けない。自分で考えたオリジナルの要素は入れられない。
・<manifest>と<application>の要素は必須。
・<manifest>と<application>の要素は1回しか書けない。
・<manifest>の要素のなかに<application>を含むこと。
最小要素だけでまとめるとこのようになります。
<?xml version="1.0" encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"package="string"
<application>
</application>
</manifest>
上記のコードは、こちらの記事を参考に載せさせていただきました。
自分のファイルではこのようになっています。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"><application> </application> </manifest>
各要素を分解してみていきます。
xmlns:android=”http://schemas.android.com/apk/res/android”
この意味は、「このファイルはAndroid用のxmlファイルです」と宣言しています。
ただそれだけですね。
xmlns:tools=”http://schemas.android.com/tools”
Android Studio では
tools
名前空間でさまざまな XML 属性がサポートされており、これを使用して設計時の機能(フラグメントに表示するレイアウトの選択など)やコンパイル時の動作(XML リソースに適用する圧縮モードの選択など)を有効にできます。これらの XML 属性はアプリのビルド時にビルドツールによって削除されるため、APK のサイズと実行時の動作には影響しません。参考–https://developer.android.com/studio/write/tool-attributes.html
要は、
xmlns:tools="http://schemas.android.com/tools"
このコードをルートタグ(xmlファイルの中で最上位の要素)に入れ込めば、設計時の機能やコンパイル時の動作を決めることができるということです。
指定方法は
tools: 何々
です。
簡単にどのようなことが指定できるか見ていきます。
自分のAndroidManifest.xmlに書かれているものは
tools:targetApi="31"
APIレベルとは?

新規でプロジェクトを作る際に、APIをどの範囲で指定しますか?と聞いてきます。Help me chooseと青文字で書かれているところをクリックすると、以下の画像が出てきます。

一番左の4.1から始まり、12.まで表示されているのが、Android端末のOSのバージョンです。
その右側にはそのOSの名前が書かれており、お菓子の名前で全て付けられています。
その右側にAPI LEVELが書かれています。さらにその右側にはどれくらいのシェア率かが書かれているので、31を選択したのであれば、13.5%なので、10端末に1端末は最低でもこのOSになっていることがわかります。
現時点でのAPIは30以降にするべきなのかと思っています。というのも、
2021 年 11 月から、アプリのアップデートは API レベル 30 以降を対象
ということが、こちらの記事に書かれているからです。
でも、シェア率が40.5%なのを考えるとどうなんですかね。ちょっと詳しくはまだ理解できていないので、ご自身で調べてみてください。
話を戻して、本来、APIレベルを指定するときに
minSdkVersion
minSdkVersionとは
android:minSdkVersion
アプリを実行するために必要な最小 API レベルを示す整数。Android システムは、システムの API レベルがこの属性で指定された値よりも低い場合、ユーザーがアプリをインストールできないようにします。この属性は必ず宣言する必要があります。
要は、minSdkVersion 30と指定すると、30未満の29のQや、28のpieなどのOSのユーザーはインストールができなくなるということです。
tools:targetApi="31"
と書けば、31以上しか対応していないととツールに伝えることができ、30のAPIレベルのユーザーが来ても、警告を表示しなくなることができます。