<manifest>

składnia:
<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>

zawarte w:
brak

musi zawierać:
<application>
może zawierać:
<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>

description:
Element główny pliku AndroidManifest.xml. Musi zawierać element <application> oraz określać atrybuty xmlns:android i package.
atrybuty:
xmlns:android
Definiowanie przestrzeni nazw Androida. Ten atrybut zawsze ma wartość "http://schemas.android.com/apk/res/android".
package
Wartość atrybutu package w pliku manifestu pakietu APK reprezentuje unikalny identyfikator aplikacji. Jest sformatowana jako pełna nazwa pakietu aplikacji na Androida oparta na języku Java. Może zawierać wielkie i małe litery, cyfry i podkreślenia („_”). Jednak poszczególne części nazw pakietów mogą zaczynać się tylko od liter.

Pamiętaj, aby nie zmieniać wartości package, ponieważ powoduje to utworzenie nowej aplikacji. Użytkownicy poprzedniej wersji nie otrzymają aktualizacji i nie będą mogli przenosić danych między starą a nową wersją.

W systemie kompilacji opartym na Gradle, począwszy od AGP 7.3, nie ustawiaj bezpośrednio wartości package w źródłowym pliku manifestu. Więcej informacji znajdziesz w artykule o ustawianiu identyfikatora aplikacji.

android:sharedUserId

Od poziomu interfejsu API 29 ta stała jest wycofywana.
Udostępnione identyfikatory użytkowników powodują niedeterministyczne działanie menedżera pakietów. Z tego względu zdecydowanie odradzamy korzystanie z tej funkcji i może ona zostać usunięta w przyszłej wersji Androida. Zamiast tego używaj odpowiednich mechanizmów komunikacji, np. usług i dostawców treści, aby usprawnić współdziałanie między współdzielonymi komponentami. W istniejących aplikacjach nie można usunąć tej wartości, ponieważ migracja z udostępnionego identyfikatora użytkownika nie jest obsługiwana. W tych aplikacjach dodaj android:sharedUserMaxSdkVersion="32", aby nie używać współdzielonego identyfikatora użytkownika w przypadku instalacji nowych użytkowników.

Nazwa identyfikatora użytkownika systemu Linux, który jest udostępniany innym aplikacjom. Domyślnie Android przypisuje każdej aplikacji własny, unikalny identyfikator użytkownika. Jeśli jednak ten atrybut ma tę samą wartość w przypadku co najmniej 2 aplikacji, wszystkie mają ten sam identyfikator, o ile ich zestawy certyfikatów są identyczne. Aplikacje z tym samym identyfikatorem użytkownika mogą uzyskiwać dostęp do danych innych osób i w razie potrzeby działać w ramach tego samego procesu.

android:targetSandboxVersion
Docelowa piaskownica, której będzie używać ta aplikacja. Im wyższy numer wersji piaskownicy, tym wyższy poziom bezpieczeństwa. Wartością domyślną jest 1. Możesz też ustawić wartość 2. Ustawienie tego atrybutu na 2 przełącza aplikację na inną piaskownicę SELinux.

W przypadku piaskownicy poziomu 2 obowiązują te ograniczenia:

  • Domyślna wartość usesCleartextTraffic w konfiguracji zabezpieczeń sieci to fałsz.
  • Udostępnianie identyfikatorów UID jest niedozwolone.

W przypadku aplikacji błyskawicznych na Androida na Androida 8.0 (poziom interfejsu API 26) lub nowszego ten atrybut ma wartość 2. W zainstalowanej wersji aplikacji możesz ustawić mniej restrykcyjny poziom piaskownicy (1). Jeśli to zrobisz, dane z aplikacji błyskawicznej nie zostaną zachowane w zainstalowanej wersji. Ustaw wartość piaskownicy dla zainstalowanej aplikacji na 2, aby dane z aplikacji błyskawicznej zostały zachowane.

Po zainstalowaniu aplikacji możesz tylko zmienić jej docelową wartość piaskownicy na wyższą. Aby obniżyć docelową wartość piaskownicy, odinstaluj aplikację i zastąp ją wersją, której plik manifestu zawiera niższą wartość tego atrybutu.

android:sharedUserLabel

Od poziomu interfejsu API 29 ta stała jest wycofywana.
Udostępnione identyfikatory użytkowników powodują niedeterministyczne działanie menedżera pakietów. Z tego względu zdecydowanie odradzamy korzystanie z tej funkcji i może ona zostać usunięta w przyszłej wersji Androida. Zamiast tego używaj odpowiednich mechanizmów komunikacji, np. usług i dostawców treści, aby usprawnić współdziałanie między współdzielonymi komponentami. W istniejących aplikacjach nie można usunąć tej wartości, ponieważ migracja z udostępnionego identyfikatora użytkownika nie jest obsługiwana.

Czytelna dla użytkownika etykieta udostępnianego identyfikatora użytkownika. Ta etykieta jest ustawiona jako odwołanie do zasobu w postaci ciągu znaków. Nie może to być zwykły ciąg znaków.

Ten atrybut został wprowadzony na poziomie 3 interfejsu API. Ma znaczenie tylko wtedy, gdy ustawiony jest także atrybut sharedUserId.

android:sharedUserMaxSdkVersion

Udostępniane identyfikatory użytkowników powodują niedeterministyczne działanie menedżera pakietów. Z tego względu zdecydowanie odradzamy korzystanie z tej funkcji i może ona zostać usunięta w przyszłej wersji Androida. Zamiast tego używaj odpowiednich mechanizmów komunikacji, np. usług i dostawców treści, aby usprawnić współdziałanie między współdzielonymi komponentami.

Maksymalna wersja pakietu SDK, w której system nadal używa pakietu android:sharedUserId. Jeśli Twoja aplikacja została niedawno zainstalowana na urządzeniu z pakietem SDK w wersji wyższej niż określona, zachowująca się tak, jakby android:sharedUserId nie został zdefiniowany.

Ten atrybut został wprowadzony na poziomie API 33. Ma znaczenie tylko wtedy, gdy ustawiony jest także atrybut sharedUserId.

android:versionCode
Wewnętrzny numer wersji. Ta liczba służy tylko do określenia, czy dana wersja jest nowsza od drugiej. Wyższe wartości oznaczają nowsze wersje. Nie jest to numer wersji wyświetlany użytkownikom, który jest ustawiany za pomocą atrybutu versionName.

Wartość jest ustawiana jako dodatnia liczba całkowita większa od 0. Możesz ją zdefiniować w dowolny sposób, pod warunkiem że każda kolejna wersja ma wyższą liczbę. Może to być na przykład numer kompilacji. Możesz też przetłumaczyć numer wersji w formacie „x.y” na liczbę całkowitą, kodując osobno „x” i „y” w dolnym i górnym 16 bitach. Możesz też zwiększać liczbę o jeden po każdym opublikowaniu nowej wersji.

android:versionName
Numer wersji wyświetlany użytkownikom. Atrybut jest ustawiany jako nieprzetworzony ciąg znaków lub jako odwołanie do zasobu tekstowego. Ciąg nie ma żadnego innego celu niż wyświetlanie użytkownikom. Atrybut versionCode zawiera istotny numer wersji używany wewnętrznie.
android:installLocation
Domyślna lokalizacja instalacji aplikacji. Akceptowane są te ciągi słów kluczowych:

Wartość Opis
"internalOnly" Aplikacja zostanie zainstalowana tylko w pamięci wewnętrznej urządzenia. Gdy to ustawienie jest skonfigurowane, aplikacja nigdy nie instaluje się w pamięci zewnętrznej, np. na karcie SD. Jeśli pamięć wewnętrzna jest pełna, system nie zainstaluje aplikacji. Jest to działanie domyślne, jeśli nie określisz funkcji android:installLocation.
"auto" Aplikację można zainstalować w pamięci zewnętrznej, ale system domyślnie instaluje ją w pamięci wewnętrznej. Jeśli pamięć wewnętrzna jest pełna, system zainstaluje ją w pamięci zewnętrznej. Zainstalowaną aplikację użytkownik może przenieść do pamięci wewnętrznej lub zewnętrznej w ustawieniach systemu.
"preferExternal" Aplikacja woli być instalowana w pamięci zewnętrznej. Nie ma gwarancji, że system spełni jego prośbę. Aplikacja może zainstalować się w pamięci wewnętrznej, jeśli zewnętrzne nośniki są niedostępne lub w pełni zapełnione. Zainstalowaną aplikację użytkownik może przenieść do pamięci wewnętrznej lub zewnętrznej w ustawieniach systemu.

Uwaga: domyślnie aplikacja instaluje się w pamięci wewnętrznej i nie można jej instalować w pamięci zewnętrznej, chyba że zdefiniujesz ten atrybut jako "auto" lub "preferExternal".

Gdy aplikacja instaluje się w pamięci zewnętrznej:

  • Plik APK zostanie zapisany w pamięci zewnętrznej, ale wszelkie dane aplikacji, takie jak bazy danych, nadal zostaną zapisane w wewnętrznej pamięci urządzenia.
  • Kontener, w którym zapisany jest plik APK, jest szyfrowany kluczem, który umożliwia aplikacji działanie tylko na urządzeniu, na którym została zainstalowana. Użytkownik nie może przenieść karty SD na inne urządzenie ani korzystać z zainstalowanych na niej aplikacji. Jedno urządzenie pozwala na korzystanie z wielu kart SD.
  • Na prośbę użytkownika można przenieść aplikację do pamięci wewnętrznej.

Użytkownik może też poprosić o przeniesienie aplikacji z pamięci wewnętrznej do pamięci zewnętrznej. System nie zezwala jednak użytkownikowi na przeniesienie aplikacji do pamięci zewnętrznej, jeśli ten atrybut ma wartość "internalOnly", czyli ustawienie domyślne.

Więcej informacji o używaniu tego atrybutu, w tym o zachowaniu zgodności wstecznej, znajdziesz w artykule Lokalizacja instalacji aplikacji.

Wprowadzono na poziomie 8 interfejsu API.

wprowadzone w:
Poziom 1 interfejsu API dla wszystkich atrybutów, chyba że w opisie wskazano inaczej.

zobacz też:
<application>