syntax:
bevat in: geen moet bevatten:<application>
kan bevatten:<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>
description: Het basiselement van het AndroidManifest.xml-bestand. Het moet een<application>
element bevatten enxmlns:android
enpackage
attributen specificeren. attributen:xmlns:android
Definieert de Android namespace. Dit attribuut moet altijd worden ingesteld op “package
Een volledige pakketnaam in Java-taal voor de Android app. De naam mag hoofdletters of kleine letters (‘A’ tot ‘Z’), cijfers, en underscores (‘_’) bevatten. De afzonderlijke onderdelen van de pakketnaam mogen echter alleen met letters beginnen.
Tijdens het bouwen van uw app in een applicatiepakket (APK), gebruikt het bouwsysteem het package
attribuut voor twee dingen:
- Het past deze naam toe als de naamruimte voor de gegenereerde
R.java
klasse van uw app (die wordt gebruikt om toegang te krijgen tot de bronnen van uw app).Bijvoorbeeld, als
package
is ingesteld op"com.example.myapp"
, wordt deR
class aangemaakt opcom.example.myapp.R
. - Het gebruikt deze naam om alle relatieve class namen op te lossen die in het manifest bestand zijn opgegeven.
Als bijvoorbeeld
package
is ingesteld op"com.example.myapp"
, wordt een activiteit die is aangegeven als<activity android:name=".MainActivity">
omgezet incom.example.myapp.MainActivity
.
Deze naam is ook de standaardnaam voor uw app-proces (zie het <application>
element’s process
attribuut). En het is de standaardtaakaffiniteit voor uw activiteiten (zie het<activity>
element’staskAffinity
attribuut).
Deze naam vertegenwoordigt ook de applicatie-ID, die universeel uniek moet zijn om uw app in Google Play te kunnen publiceren. Echter, tegen het einde van het APK bouwproces, overschrijven de bouw tools de package
naam met behulp van deapplicationId
eigenschap van het build.gradle
bestand (gebruikt door Android Studioprojects). Zolang u de package
naam van het manifest hetzelfde houdt als deapplicationId
naam van het build bestand, zal dit geen probleem zijn. Maar als deze twee waarden verschillen, moet u de verschillen tussen de “package name” en de “application ID” begrijpen door te lezen hoe u de application ID instelt.
Om conflicten met andere ontwikkelaars te voorkomen, moet u internetdomeineigendom gebruiken als de basis voor uw package names (in omgekeerde volgorde). Bijvoorbeeld, apps gepubliceerd door Google beginnen metcom.google
.
Note: Zowel de com.example
en com.android
namespaces zijn verboden door Google Play.
Als u de naam van uw pakket wilt wijzigen nadat u uw app hebt gepubliceerd, kan dat, maar u moet de applicationId
hetzelfde laten. DeapplicationId
definieert de unieke identiteit voor uw app op Google Play. Dus als u deze wijzigt, wordt de APK beschouwd als een andere app en zullen gebruikers van de vorige versie geen update ontvangen. Voor meer informatie, zie hoe u de applicatie ID instelt.
android:sharedUserId
Deze constante is in API level 29 afgeschreven.
Gedeelde gebruikers-ID’s veroorzaken niet-deterministisch gedrag binnen de pakketbeheerder. Als zodanig wordt het gebruik ervan sterk ontmoedigd en kan het worden verwijderd in een toekomstige versie van Android. In plaats daarvan moeten apps gebruik maken van de juiste communicatie mechanismen, zoals services en content providers, om de interoperabiliteit tussen gedeelde componenten te vergemakkelijken. Merk op dat bestaande apps deze waarde niet kunnen verwijderen, omdat migratie van een gedeelde gebruikers-ID niet wordt ondersteund.
De naam van een Linux gebruikers-ID die zal worden gedeeld met andere apps.Standaard wijst Android elke app zijn eigen unieke gebruikers-ID toe.Echter, als dit attribuut is ingesteld op dezelfde waarde voor twee of meer apps, zullen ze allemaal dezelfde ID delen – op voorwaarde dat hun certificaat sets identiek zijn. Apps met hetzelfde gebruikers-ID kunnen elkaars gegevens benaderen en, indien gewenst, in hetzelfde proces draaien.
android:targetSandboxVersion
De beoogde zandbak voor deze app. Hoe hoger het sandbox versienummer, hoe hoger het beveiligingsniveau. De standaard waarde is1
; je kunt het ook instellen op2
.Door dit attribuut op2
te zetten, schakelt de app over naar een andere SELinux-sandbox.
De volgende beperkingen gelden voor een level 2-sandbox:
- De standaardwaarde van
usesCleartextTraffic
in de Network Security Config is false. - Het delen van gebruikersnamen is niet toegestaan.
Voor Android Instant Apps die zijn gericht op Android 8.0 (API-niveau 26) of hoger, moet dit attribuut worden ingesteld op 2. U kunt het sandbox-niveau in de geïnstalleerde versie van uw app instellen op het minder beperkende niveau 1, maar als u dat doet, blijven app-gegevens van de instant app niet bewaard in de geïnstalleerde versie van uw app. U moet de sandbox-waarde van de geïnstalleerde app op 2 zetten, zodat de gegevens van de instant app naar de geïnstalleerde versie blijven bestaan.
Als een app eenmaal is geïnstalleerd, kunt u de sandbox-waarde alleen nog maar bijwerken naar een hogere waarde.Om de doelzandbakwaarde te verlagen, moet u de app verwijderen en vervangen door een versie waarvan het manifest een lagere waarde voor dit attribuut bevat.
android:sharedUserLabel
Deze constante is in API niveau 29 afgeschreven.
Gedeelde gebruikers-ID’s veroorzaken niet-deterministisch gedrag binnen de pakketbeheerder. Als zodanig wordt het gebruik ervan sterk ontmoedigd en kan het worden verwijderd in een toekomstige versie van Android. In plaats daarvan moeten apps gebruik maken van de juiste communicatie mechanismen, zoals services en content providers, om de interoperabiliteit tussen gedeelde componenten te vergemakkelijken. Merk op dat bestaande apps deze waarde niet kunnen verwijderen, omdat het verwijderen van een gedeelde gebruikers-ID niet wordt ondersteund.
Een door de gebruiker leesbaar label voor de gedeelde gebruikers-ID. Het label moet worden ingesteld als een verwijzing naar een string resource; het kan geen onbewerkte string zijn.
Dit attribuut is geïntroduceerd in API Level 3. Het is alleen van betekenis als het sharedUserId
attribuut ook is ingesteld.
android:versionCode
Een intern versienummer. Dit nummer wordt alleen gebruikt om te bepalen of een versie recenter is dan een andere, waarbij hogere nummers recentere versies aangeven. Dit is niet het versienummer dat aan gebruikers wordt getoond; dat nummer wordt ingesteld door hetversionName
attribuut.
De waarde moet worden ingesteld als een geheel getal, zoals “100”. Je kunt het definiëren zoals je wilt, zolang elke opeenvolgende versie maar een hoger getal heeft. Het zou bijvoorbeeld een build nummer kunnen zijn. Of u zou een versienummer in “x.y” formaat kunnen vertalen naar een geheel getal door de “x” en “y” apart te coderen in de onderste en bovenste 16 bits. Of je kunt het nummer gewoon met één verhogen elke keer als er een nieuwe versie wordt uitgebracht.
android:versionName
Het versienummer dat aan gebruikers wordt getoond. Dit attribuut kan worden ingesteld als een rawstring of als een verwijzing naar een string resource. De string heeft geen ander doel dan aan gebruikers getoond te worden. HetversionCode
attribuut bevat het significante versienummer dat intern wordt gebruikt.android:installLocation
De standaard installatielocatie voor de app.
De volgende trefwoordreeksen worden geaccepteerd:
Value | Description |
---|---|
“internalOnly “ |
De app moet alleen op de interne apparaatopslag worden geïnstalleerd. Als dit is ingesteld, zal de app nooit op de externe opslag worden geïnstalleerd. Als de interne opslag vol is, dan zal het systeem de app niet installeren. Dit is ook het standaard gedrag als u android:installLocation niet definieert. |
“auto “ |
De app kan op het externe geheugen worden geïnstalleerd, maar het systeem installeert de app standaard op het interne geheugen. Als de interne opslag vol is, dan installeert het systeem de app op de externe opslag. Eenmaal geïnstalleerd, kan de gebruiker de app verplaatsen naar interne of externe opslag via de systeeminstellingen. |
De app wordt bij voorkeur geïnstalleerd op de externe opslag (SD-kaart). Er is geen garantie dat het systeem dit verzoek zal honoreren. De app kan op het interne geheugen worden geïnstalleerd als het externe medium niet beschikbaar of vol is. Eenmaal geïnstalleerd, kan de gebruiker de app verplaatsen naar interne of externe opslag via de systeeminstellingen. |
Note: Standaard wordt uw app op de interne opslag geïnstalleerd en kan deze niet op de externe opslag worden geïnstalleerd, tenzij u dit attribuut definieert als “auto
” of “preferExternal
“.
Wanneer een app op de externe opslag wordt geïnstalleerd:
- Het
.apk
-bestand wordt op de externe opslag opgeslagen, maar alle app-gegevens (zoals databases) worden nog steeds op het interne apparaatgeheugen opgeslagen. - De container waarin het
.apk
bestand wordt opgeslagen, is versleuteld met een sleutel die ervoor zorgt dat de app alleen werkt op het apparaat waarop het is geïnstalleerd. (Een gebruiker kan de SD-kaart niet naar een ander apparaat overzetten en de apps gebruiken die op de kaart zijn geïnstalleerd). Meerdere SD-kaarten kunnen echter op hetzelfde apparaat worden gebruikt. - Op verzoek van de gebruiker kan de app naar het interne geheugen worden verplaatst.
De gebruiker kan ook vragen om een app van het interne geheugen naar het externe geheugen te verplaatsen. Het systeem zal de gebruiker echter niet toestaan de app naar de externe opslag te verplaatsen als dit attribuut is ingesteld op internalOnly
, wat de standaardinstelling is.
Lees App Install Location voor meer informatie over het gebruik van dit attribuut (inclusief hoe achterwaartse compatibiliteit te behouden).
Ingevoerd in: API Level 8.
geïntroduceerd in: API-niveau 1 voor alle attributen, tenzij anders vermeld in de beschrijving van het attribuut. zie ook:<application>