Einführung in das Anwendungsmanifest
Der Prozessor »aapt« erzeugt aus der aus dem Java -Quelltext erzeugten Android -Klassendatei »classes.dex« und der XML-Konfigurationsdatei »AndroidManifest.xml« eine Android -Paketdatei, welche in diesem Kurs hier oft »ComExampleMainActivity.unsigned.apk« heißt.
Die XML-Konfigurationsdatei »AndroidManifest.xml«, das Anwendungsmanifest, beschreibt unsere App.
Der Quelltext
In diesem Abschnitt zeigen wir zur Vereinfachung eine möglichst kurze Form des Anwendungsmanifests.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1" >
<application><activity
android:name="com.example.MainActivity"
android:label="hello, world">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter></activity></application></manifest>
Bei einem Android -Manifest werden nur die Attributnamen in den Android -Namensraum gepackt, nicht die Namen der Elementtypen.
Die Struktur des Manifests
- AndroidManifest-Struktur
Manifest
.
|
'
App
.
.-'|'-.
.-' | '-.
' ' '
Activity
(=Dialog)
.
.-'|'-.
.-' | '-.
' ' '
Intent-Filter
.
.-' '-.
.-' '-.
' '
Action Category
Erläuterung zu einigen Teilen
Es ist nicht nötig, alle Zeilen der XML-Datei zu verstehen oder XML zu kennen, um diesem Kurs folgen zu können. Im folgenden werden nur die Zeilen der XML-Datei erklärt, die schon in diesem Teil des Kurses für eventuelle Anpassungen des Programms benötigt werden. Die Bedeutung anderer Teile dieser XML-Datei kann auch noch später erlernt werden.
package="com.example"
- Das hier angegebene Paket muß mit dem Java -Paket der Aktivitätsklasse übereinstimmen.
- Dieses Paket ist die Identität der App, das heißt: zwei Apps mit gleichem Paket werden als die gleiche App angesehen.
android:name="com.example.MainActivity"
- Dies ist der vollständig qualifizierte Java -Name unserer Aktivitätsklasse. (An dieser Stelle beschreibt die XML-Datei eine Aktivität.)
android:label="hello, world"
- Dies ist die Beschriftung unserer Aktivitätsklasse, welches nach dem Start der App angezeigt wird.
- Hier wird also festgelegt, daß unsere App den Text „hello, world“ als Aktivitätstitel anzeigt.
- <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
- Legt fest, daß der Dialog (die activity ) im Startmenü (launcher ) angezeigt werden soll. )Ein Intent-Filter kann mehrere solcher Kategorien enthalten.)
<action android:name="android.intent.action.MAIN"/>
- Legt fest, daß dieser Dialog (die activity ) der Hauptstartpunkt der Anwendung ist, also daß dieser Dialog (die activity ) ohne Datenübergabe als Hauptdialog einer Aktivität gestartet werden soll.
Manifest mit Angaben zur Ebene
Es zeigt sich, daß es nützlich sein kann, wenigstens noch zwei weitere Angaben zu machen, obwohl diese nicht immer nötig sind.
android:minSdkVersion="21"
- Dieser Wert gibt die minimale API-Ebene an, welche von der Anwendung benötigt wird.
- Falls dieser Wert nicht angegeben wird, wird er als »1« angenommen. Wenn dieser Wert zu niedrig ist, könnte die Anwendung beim Zugriff auf neuerere Teile der Bibliothek abstürzen.
android:targetSdkVersion="21"
- Dieser Wert gibt die höchste API-Ebene an, für welche die Anwendung erfolgreich getestet wurde.
- Falls dieser Wert nicht angegeben wird, wird der unter »minSdkVersion« angegebenen Wert angenommen.
- Falls dieser Wert kleiner ist als die API-Ebene, auf welche die Anwendung ausgeführt wird, könnten möglicherweise Kompatibilitätsanpassungen vorgenommen werden. Dies könnte bedeuten, daß neuere Gestaltungsmöglichkeiten des Erscheinungsbildes für diese Anwendung nicht eingesetzt wird.
Wenn wir die »targetSdkVersion« nicht auf das die aktuelle API-Ebene stellen würden, würde unser Programm möglicherweise mit einem altertümlichen Erscheinungsbild (mit viel Orange) angezeigt werden. Daher verwenden wir also vorerst das folgende Anwendungsmanifest.
Da in diesem Kurs keine Notwendigkeit dafür besteht, daß die Programme auch auf alten Geräten laufen, geben wie hier als »minSdkVersion« denselben Wert an wie bei »targetSdkVersion«.
Zukünftige Version von Android sollen rückwärtskompatibel sein, so daß eine mit den hier angegebenen Einstellungen erstellte App auch auf diesen laufen sollte.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1" >
<uses-sdk android:minSdkVersion="21"
android:targetSdkVersion="21" />
<application><activity
android:name="com.example.MainActivity"
android:label="hello, world">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter></activity></application></manifest>
Die API-Ebene
Die API-Ebene ist die Version der Android -Bibliothek eines Gerätes. Apps, die mit einem Gerät mit einer bestimmten API-Ebene getestet wurden, sollten auch noch auf höheren (späteren) API-Ebenen laufen, allerdings können sie dann unter Umständen mögliche Erweiterungen neuer Ebenen nicht nutzen oder dort altertümlich aussehen. Einige Android -Versionen und API-Ebenen sind beispielsweise:
- Einige Android -Versionen und ihre API-Ebenen
Android-Version API-Ebene
Android 4.2.2 17
Android 4.2 17
Android 4.3 18
Android 4.4 19
Android 5.0 21
Android 5.1 22
Android 6.0 23
Android 7.0 24
Android 7.1 25
Vertriebene Anwendungen
Falls eine Anwendung hergestellt werden soll, die an einen Kreis von Anwendern verteilt werden soll, womöglich über einen dafür bestimmten Dienst Dritter, so sind noch einige weitere Details beim Anlegen der XML-Konfigurationsdatei »AndroidManifest.xml« zu beachten, welche aber für das Erlernen der Anwendungsentwicklung zunächst noch nicht benötigt und daher in dieser Lektion hier noch nicht behandelt werden.
Übungsaufgabe
Ändern Sie das Anwendungsmanifest so ab, daß der Aktivitätstitel [MainActivity] lautet. (Für den weiteren Verlauf dieses Kurses soll dann dieses abgeänderte Anwendungsmanifest verwendet werden.)
- Die MainActivity-App
.---------------------------------.
|---------------------------------|
| MainActivity |
|---------------------------------|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
'---------------------------------'