| Programiści Androida

syntaktyka:

contained in: none must contain:<application>może zawierać:<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>Opis: Element root pliku AndroidManifest.xml. Musi zawierać element<application>i określać atrybutyxmlns:androidipackage. atrybuty:xmlns:androidOkreśla przestrzeń nazw systemu Android. Ten atrybut powinien być zawsze ustawiony na „packagePełna nazwa pakietu w stylu języka Java dla aplikacji na Androida. Nazwa może zawierać duże lub małe litery (’A' do 'Z'), cyfry i podkreślenia (’_'). Jednakże, poszczególne części nazwy pakietu mogą zaczynać się tylko od liter.

Podczas budowania aplikacji w pakiecie aplikacji (APK), system budowania używa atrybutu package do dwóch rzeczy:

  • Stosuje tę nazwę jako przestrzeń nazw dla wygenerowanej klasy R.java (używanej do dostępu do zasobów aplikacji).

    Na przykład, jeśli package jest ustawiony na "com.example.myapp", klasa R jest tworzona w com.example.myapp.R.

  • Używa tej nazwy do rozwiązywania wszelkich względnych nazw klas, które są zadeklarowane w pliku manifestu.

    Na przykład, jeśli package jest ustawiony na "com.example.myapp", aktywność zadeklarowana jako <activity android:name=".MainActivity"> jest rozwiązywana jako com.example.myapp.MainActivity.

Ta nazwa jest również domyślną nazwą dla procesu aplikacji (zobacz <application>element’s processattribute). Jest to również domyślne powinowactwo zadań dla Twoich działań (patrz atrybut<activity> element’staskAffinity attribute).

Nazwa ta reprezentuje również ID aplikacji, które musi być uniwersalnie unikalne, aby Twoja aplikacja mogła zostać opublikowana w Google Play. Jednakże, pod koniec procesu budowania APK, narzędzia do budowania zastępują package nazwę używającapplicationId właściwości z pliku build.gradle (używanego przez Android Studioprojects). Tak długo, jak utrzymasz nazwę manifestu package taką samą jak nazwa pliku budowaniaapplicationId, nie będzie to problemem. Jeśli jednak te dwie wartości się różnią, powinieneś zrozumieć różnice między „nazwą pakietu” a „identyfikatorem aplikacji”, czytając jak ustawić identyfikator aplikacji.

Aby uniknąć konfliktów z innymi deweloperami, powinieneś używać własności domen internetowych jako podstawy dla nazw swoich pakietów (w odwrotnej kolejności). Na przykład, aplikacje publikowane przez Google zaczynają się odcom.google.

Uwaga: Zarówno com.example jak i com.androidnamespaces są zabronione przez Google Play.

Jeśli chcesz zmienić nazwę swojego pakietu po opublikowaniu aplikacji, możesz to zrobić, ale musisz zachować applicationId taką samą. TheapplicationId definiuje unikalną tożsamość dla Twojej aplikacji w Google Play. Więc jeśli go zmienisz, APK jest uważany za inną aplikację, a użytkownicy poprzedniej wersji nie otrzymają aktualizacji. Aby uzyskać więcej informacji, zobacz, jak ustawić identyfikator aplikacji.

android:sharedUserId

Ta stała została wycofana z poziomu API 29.
Wspólne identyfikatory użytkowników powodują niedeterministyczne zachowanie w menedżerze pakietów. Jako takie, jej użycie jest stanowczo odradzane i może zostać usunięte w przyszłej wersji Androida. Zamiast tego, aplikacje powinny używaćepropertycznych mechanizmów komunikacyjnych, takich jak usługi i dostawców treści, aby ułatwićinteroperacyjność pomiędzy współdzielonymi komponentami. Zauważ, że istniejące aplikacje nie mogą usunąć tej wartości, asmigrating off a shared user ID is not supported.

Nazwa identyfikatora użytkownika systemu Linux, który będzie współdzielony z innymi aplikacjami.Domyślnie, Android przypisuje każdej aplikacji jej własny, unikalny identyfikator użytkownika.Jednakże, jeśli ten atrybut jest ustawiony na tę samą wartość dla dwóch lub więcej aplikacji, wszystkie będą współdzielić ten sam identyfikator – pod warunkiem, że ich zestawy certyfikatów są identyczne. Aplikacje z tym samym ID użytkownika mogą mieć dostęp do danych każdej z nich i, jeśli jest to pożądane, działać w tym samym procesie.

android:targetSandboxVersionDocelowa piaskownica, z której ma korzystać aplikacja. Im wyższy numer wersji piaskownicy, tym wyższy poziom bezpieczeństwa. Jego domyślną wartością jest1; można również ustawić go na2.Ustawienie tego atrybutu na2przełącza aplikację do innej piaskownicy SELinux.

Do piaskownicy poziomu 2 mają zastosowanie następujące ograniczenia:

  • Domyślna wartośćusesCleartextTraffic w Network Security Config to false.
  • Uid sharing is not permitted.

Dla aplikacji Android Instant Apps działających pod kontrolą systemu Android 8.0 (API level 26) lub nowszego, atrybut ten musi być ustawiony na 2. Możesz ustawić poziom piaskownicy w zainstalowanej wersji aplikacji na mniej restrykcyjny poziom 1, ale jeśli to zrobisz, Twoja aplikacja nie zachowuje danych aplikacji z aplikacji natychmiastowej do zainstalowanej wersji aplikacji. Musisz ustawić wartość piaskownicy zainstalowanej aplikacji na 2, aby dane zostały zachowane z aplikacji natychmiastowej do zainstalowanej wersji.

Po zainstalowaniu aplikacji możesz jedynie zaktualizować jej docelową wartość piaskownicy do wyższej wartości.Aby obniżyć wartość docelowej piaskownicy, musisz odinstalować aplikację i zastąpić ją wersją, której manifest zawiera niższą wartość tego atrybutu.

android:sharedUserLabel

Ta stała została wycofana z poziomu API 29.
Wspólne identyfikatory użytkowników powodują niedeterministyczne zachowanie w menedżerze pakietów. Jako takie, jej użycie jest stanowczo odradzane i może zostać usunięte w przyszłej wersji Androida. Zamiast tego, aplikacje powinny używaćepropertycznych mechanizmów komunikacyjnych, takich jak usługi i dostawców treści, aby ułatwićinteroperacyjność pomiędzy współdzielonymi komponentami. Zauważ, że istniejące aplikacje nie mogą usunąć tej wartości, ponieważ migracja z współdzielonego identyfikatora użytkownika nie jest obsługiwana.

Czytowalna przez użytkownika etykieta dla współdzielonego identyfikatora użytkownika. Etykieta musi być ustawiona jako odniesienie do zasobu łańcuchowego; nie może być surowym łańcuchem znaków.

Ten atrybut został wprowadzony w API Level 3. Ma on znaczenie tylko wtedy, gdy ustawiony jest również atrybut sharedUserId.

android:versionCodeWewnętrzny numer wersji. Ten numer jest używany tylko do określenia, czy jedna wersja jest nowsza od drugiej, przy czym wyższe numery oznaczają nowsze wersje. Nie jest to numer wersji pokazywany użytkownikom; ten numer jest ustawiany przez atrybutversionName.

Wartość musi być ustawiona jako liczba całkowita, taka jak „100”. Możesz zdefiniować ją jakkolwiek chcesz, tak długo jak każda kolejna wersja ma wyższy numer. Na przykład, może to być numer kompilacji. Możesz też przetłumaczyć numer wersji w formacie „x.y” na liczbę całkowitą, kodując „x” i „y” osobno w dolnych i górnych 16 bitach. Możesz też po prostu zwiększać numer o jeden za każdym razem, gdy wydawana jest nowa wersja.

android:versionNameNumer wersji wyświetlany użytkownikom. Ten atrybut może być ustawiony jako rawstring lub jako odniesienie do zasobu typu string. Łańcuch nie ma innego przeznaczenia niż wyświetlanie go użytkownikom. AtrybutversionCodezawiera znaczący numer wersji używany wewnętrznie.android:installLocationDomyślna lokalizacja instalacji aplikacji.

Dopuszczalne są następujące ciągi słów kluczowych:

Wartość Opis
internalOnly Aplikacja musi być zainstalowana tylko na wewnętrznej pamięci urządzenia. Jeśli to jest ustawione, aplikacja nigdy nie zostanie zainstalowana na zewnętrznej pamięci masowej. Jeśli pamięć wewnętrzna jest pełna, to system nie zainstaluje aplikacji. This is also the default behaviorif you do not define android:installLocation.
auto Aplikacja może być zainstalowana na pamięci zewnętrznej, ale system domyślnie zainstaluje ją na pamięci wewnętrznej. Jeśli pamięć wewnętrzna jest pełna, wtedy system zainstaluje ją na pamięci zewnętrznej. Once installed, the user can move the appto either internal or external storage through the system settings.
preferExternal The app preferuje być zainstalowany na zewnętrznej pamięci (SD card). Nie ma żadnej gwarancji, że system będzie honorował to żądanie. Aplikacja może być zainstalowana na wewnętrznym magazynie, jeśli zewnętrzny nośnik jest niedostępny lub pełny. Po zainstalowaniu, użytkownik może przenieść aplikację do pamięci wewnętrznej lub zewnętrznej poprzez ustawienia systemowe.

Uwaga: Domyślnie aplikacja zostanie zainstalowana na nośniku wewnętrznym i nie będzie mogła zostać zainstalowana na nośniku zewnętrznym, chyba że zdefiniujesz ten atrybut jako „auto” lub „preferExternal„.

Gdy aplikacja jest instalowana na zewnętrznej pamięci masowej:

  • Plik .apk jest zapisywany na zewnętrznej pamięci masowej, ale wszelkie dane aplikacji (takie jak bazy danych) są nadal zapisywane w wewnętrznej pamięci urządzenia.
  • Kontener, w którym plik .apk jest zapisany, jest zaszyfrowany kluczem, który pozwala aplikacji działać tylko na urządzeniu, które ją zainstalowało. (Użytkownik nie może przenieść karty SD do innego urządzenia i korzystać z aplikacji zainstalowanych na karcie). Choć w tym samym urządzeniu można używać wielu kart SD.
  • Na życzenie użytkownika aplikacja może zostać przeniesiona do pamięci wewnętrznej.

Użytkownik może również poprosić o przeniesienie aplikacji z pamięci wewnętrznej do pamięci zewnętrznej. Jednak system nie pozwoli użytkownikowi na przeniesienie aplikacji do magazynu zewnętrznego, jeśli atrybut ten jest ustawiony na internalOnly, co jest ustawieniem domyślnym.

Przeczytaj App Install Location, aby uzyskać więcej informacji na temat używania tego atrybutu (w tym jak zachować kompatybilność wsteczną).

Wprowadzone w: API Level 8.

Wprowadzone w: API Level 1 dla wszystkich atrybutów, chyba że zaznaczono inaczej w opisie atrybutu. zobacz także: <application>

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *