<manifest>

sintaks:
<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>

terdapat dalam:
tidak ada

harus berisi:
<application>
dapat berisi:
<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>

deskripsi:
Elemen utama file AndroidManifest.xml. File ini harus berisi satu elemen <application> serta menentukan atribut xmlns:android dan package.
atribut:
xmlns:android
Menentukan namespace Android. Atribut ini harus selalu diatur ke "http://schemas.android.com/apk/res/android".
package
Nama lengkap paket dengan gaya bahasa Java untuk aplikasi Android. Nama ini boleh berisi huruf besar atau kecil ('A' sampai 'Z'), angka, dan garis bawah ('_'). Namun, beberapa bagian nama paket individual hanya boleh diawali dengan huruf.

Saat Anda mem-build aplikasi menjadi paket aplikasi (APK), sistem build akan menggunakan atribut package untuk dua hal:

  • Menerapkan nama ini sebagai namespace untuk class R.java yang dibuat aplikasi Anda (digunakan untuk mengakses resource aplikasi).

    Contohnya, jika package diatur ke "com.example.myapp", class R akan dibuat pada com.example.myapp.R.

  • Menggunakan nama ini untuk menyelesaikan setiap nama class relatif yang dideklarasikan dalam file manifes.

    Contohnya, jika package diatur ke "com.example.myapp", aktivitas yang dideklarasikan sebagai <activity android:name=".MainActivity"> akan diselesaikan menjadi com.example.myapp.MainActivity.

Nama ini juga merupakan nama default untuk proses aplikasi Anda (lihat atribut process milik elemen <application>). Selain itu, nama ini juga merupakan afinitas tugas default untuk aktivitas Anda (lihat atribut taskAffinity milik elemen <activity>).

Nama ini juga merepresentasikan ID aplikasi, yang harus unik secara universal untuk memublikasikan aplikasi Anda di Google Play. Namun, mendekati akhir proses pembuatan APK, alat build akan mengganti nama package menggunakan properti applicationId dari file build.gradle (digunakan oleh project Android Studio). Asalkan Anda tetap menyamakan nama package manifes dengan applicationId file build, hal ini tidak akan menjadi masalah. Namun, jika kedua nilai ini berbeda, Anda harus memahami perbedaan antara “nama paket” dan “ID aplikasi” dengan membaca cara mengatur ID aplikasi.

Untuk menghindari konflik dengan developer lain, gunakan kepemilikan domain Internet sebagai dasar untuk nama paket Anda (secara terbalik). Contohnya, aplikasi yang dipublikasikan oleh Google dimulai dengan com.google.

Catatan: Namespace com.example dan com.android tidak diizinkan oleh Google Play.

Setelah memublikasikan aplikasi, Anda dapat mengubah nama paket jika diperlukan, tetapi nama applicationId harus tetap sama . applicationId menentukan identitas unik untuk aplikasi Anda di Google Play. Jadi, jika Anda mengubahnya, APK akan dianggap sebagai aplikasi lain dan pengguna versi sebelumnya tidak akan menerima update. Untuk mengetahui informasi selengkapnya, lihat cara menetapkan ID aplikasi.

android:sharedUserId

Konstanta ini tidak lagi digunakan pada API level 29.
ID pengguna bersama menyebabkan perilaku nondeterministik dalam pengelola paket. Karena itu, penggunaannya sangat tidak disarankan dan mungkin akan dihapus dalam versi Android berikutnya. Sebagai gantinya, aplikasi harus menggunakan mekanisme komunikasi yang tepat, seperti penyedia konten dan layanan, untuk memudahkan interoperabilitas antar-komponen bersama.

Nama ID pengguna Linux yang akan dibagikan dengan aplikasi lain. Secara default, Android akan menetapkan ID pengguna unik tersendiri bagi setiap aplikasinya. Namun, jika atribut ini diatur ke nilai yang sama untuk dua aplikasi atau lebih, semuanya akan memiliki ID yang sama, dengan ketentuan bahwa rangkaian sertifikatnya juga sama. Aplikasi dengan ID pengguna yang sama dapat mengakses data satu sama lain, dan jika diinginkan, berjalan dalam proses yang sama.

android:targetSandboxVersion
Sandbox target yang perlu digunakan oleh aplikasi ini. Semakin tinggi nomor versi sandbox, semakin tinggi juga tingkat keamanannya. Nilai default-nya adalah 1; Anda juga dapat mengaturnya ke 2. Mengatur atribut ini ke 2 akan mengalihkan aplikasi ke sandbox SELinux yang berbeda.

Batasan berikut berlaku untuk sandbox tingkat 2:

  • Nilai default usesCleartextTraffic dalam Network Security Config adalah false.
  • Anda tidak diizinkan untuk berbagi UID.

Untuk Aplikasi Instan Android yang menargetkan Android 8.0 (API level 26) atau lebih tinggi, atribut ini harus diatur ke 2. Anda dapat mengatur tingkat sandbox dalam versi aplikasi yang terinstal ke tingkat 1 yang lebih longgar, tetapi jika Anda melakukannya, aplikasi tidak akan mempertahankan data aplikasi dari aplikasi instan tersebut ke versi aplikasi yang terinstal. Anda harus mengatur nilai sandbox aplikasi yang terinstal ke 2 agar data tetap dipertahankan dari aplikasi instan ke versi yang terinstal.

Setelah aplikasi terinstal, Anda hanya dapat memperbarui nilai sandbox targetnya ke nilai yang lebih tinggi. Untuk men-downgrade nilai sandbox target, Anda harus meng-uninstal aplikasi dan menggantinya dengan versi yang manifesnya berisi nilai yang lebih rendah untuk atribut ini.

android:sharedUserLabel

Konstanta ini tidak lagi digunakan pada API level 29.
ID pengguna bersama menyebabkan perilaku nondeterministik dalam pengelola paket. Karena itu, penggunaannya sangat tidak disarankan dan mungkin akan dihapus dalam versi Android berikutnya. Sebagai gantinya, aplikasi harus menggunakan mekanisme komunikasi yang tepat, seperti penyedia konten dan layanan, untuk memudahkan interoperabilitas antar-komponen bersama.

Label yang dapat dibaca pengguna untuk ID pengguna bersama. Label ini harus diatur sebagai referensi ke resource string; label tidak boleh berupa string mentah.

Atribut ini diperkenalkan pada API Level 3. Label ini hanya berguna jika atribut sharedUserId juga ditetapkan.

android:versionCode
Nomor versi internal. Nomor ini hanya digunakan untuk menentukan apakah suatu versi lebih baru daripada versi yang lain; nomor yang lebih tinggi menunjukkan versi yang lebih baru. Nomor versi ini bukanlah nomor yang ditampilkan kepada pengguna; nomor ini ditetapkan oleh atribut versionName.

Nilai ini harus ditetapkan sebagai bilangan bulat, seperti "100". Anda dapat menentukannya sesuai keinginan, asalkan setiap versi setelahnya memiliki nomor yang lebih tinggi. Misalnya, nomor ini dapat berupa nomor build. Atau, Anda dapat mengubah nomor versi dalam format “x.y” menjadi bilangan bulat dengan mengenkode “x” dan “y” secara terpisah dalam 16 bit yang lebih rendah dan lebih tinggi. Selain itu, Anda juga dapat menaikkan nomor ini satu per satu setiap kali versi baru dirilis.

android:versionName
Nomor versi yang ditampilkan kepada pengguna. Atribut ini dapat diatur sebagai string mentah atau sebagai referensi ke suatu resource string. String ini tidak memiliki tujuan selain untuk ditampilkan kepada pengguna. Atribut versionCode berisi nomor versi signifikan yang digunakan secara internal.
android:installLocation
Lokasi penginstalan default untuk aplikasi.

String kata kunci berikut diterima:

Nilai Deskripsi
"internalOnly" Aplikasi harus diinstal di penyimpanan perangkat internal saja. Jika hal ini ditetapkan, aplikasi tidak akan diinstal di penyimpanan eksternal. Jika penyimpanan internal penuh, sistem tidak akan menginstal aplikasi. Perilaku ini juga merupakan default jika Anda tidak menentukan android:installLocation.
"auto" Aplikasi dapat diinstal di penyimpanan eksternal, tetapi sistem akan menginstalnya di penyimpanan internal secara default. Jika penyimpanan internal penuh, sistem akan menginstalnya di penyimpanan eksternal. Setelah diinstal, pengguna dapat memindahkan aplikasi ke penyimpanan internal atau eksternal melalui setelan sistem.
"preferExternal" Aplikasi lebih memilih untuk diinstal di penyimpanan eksternal (kartu SD). Tidak ada jaminan bahwa sistem akan memenuhi permintaan ini. Aplikasi mungkin diinstal di penyimpanan internal jika media eksternal tidak tersedia atau penuh. Setelah diinstal, pengguna dapat memindahkan aplikasi ke penyimpanan internal atau eksternal melalui setelan sistem.

Catatan: Secara default, aplikasi akan diinstal di penyimpanan internal dan tidak dapat diinstal di penyimpanan eksternal kecuali Anda menetapkan atribut ini menjadi "auto" atau "preferExternal".

Saat aplikasi diinstal di penyimpanan eksternal:

  • File .apk disimpan ke penyimpanan eksternal, tetapi data aplikasi apa pun (seperti database) masih disimpan di memori perangkat internal.
  • Penampung yang menjadi tempat file .apk disimpan dienkripsi dengan kunci yang memungkinkan aplikasi beroperasi hanya di perangkat tempatnya diinstal. (Pengguna tidak dapat mentransfer kartu SD ke perangkat lain lalu menggunakan aplikasi yang terinstal di kartu tersebut.) Meskipun demikian, beberapa kartu SD dapat digunakan dengan perangkat yang sama.
  • Atas permintaan pengguna, aplikasi dapat dipindahkan ke penyimpanan internal.

Pengguna juga dapat meminta untuk memindahkan aplikasi dari penyimpanan internal ke penyimpanan eksternal. Namun, sistem tidak akan mengizinkan pengguna memindahkan aplikasi ke penyimpanan eksternal jika atribut ini diatur ke internalOnly, yang merupakan setelan default.

Baca Lokasi Penginstalan Aplikasi untuk mengetahui informasi selengkapnya tentang penggunaan atribut ini (termasuk cara mengelola kompatibilitas mundur).

Diperkenalkan pada: API Level 8.

diperkenalkan pada:
API Level 1 untuk semua atribut, kecuali dinyatakan lain dalam deskripsi atribut.

lihat juga:
<application>