Android-Entwicklung

Manifest-Viewer · Deklarationen im Zusammenhang lesen

Text-XML einfügen: Die Analyse startet nach 350 ms. Ohne Automatik nutzen Sie die Schaltfläche oder Strg/Cmd+Enter.

Manifest-Viewer

Manifest als XML

Analyseergebnis

Text der AndroidManifest.xml einfügen oder das Beispiel laden.

Die Eingabe wird in diesem Browser-Tab verarbeitet und nicht hochgeladen.

Optionen

Geprüft werden nur Deklarationen in dieser XML-Datei. Vorhandener Text, Leerraum und Ressourcenverweise bleiben erhalten; Build-Konfiguration und Laufzeitverhalten werden nicht ausgewertet.

Text der AndroidManifest.xml einfügen oder das Beispiel laden.

Eine zusätzliche Berechtigung im Release oder ein nicht installierbarer Build führt oft zurück zur Manifestdatei. Der Manifest-Viewer ordnet die Deklarationen nach ihrer Aufgabe und verbindet jeden Intent-Filter mit seiner Komponente. Zeilennummern führen von der Übersicht zur betreffenden Stelle im XML.

Für die Frage nach einer Quelldatei genügt diese Datei. Für eine Release-Prüfung benötigen Sie ein zusammengeführtes Manifest oder dekodiertes XML aus dem Build. So lässt sich AndroidManifest.xml aufrufen und untersuchen, ohne fehlende Gradle-Werte mit vermeintlichen Standardwerten zu verwechseln.

Was der Manifest-Viewer übersichtlicher macht

Anforderungen und Definitionen trennen

Der Manifest-Viewer unterscheidet angeforderte Berechtigungen von eigenen Berechtigungsdefinitionen. Zwei Intent-Filter derselben Activity bleiben getrennt, samt Aktionen, Kategorien und data-Attributen. Dadurch lässt sich ein Launcher-Eintrag von einem Weblink-Einstieg unterscheiden, ohne verstreute Tags von Hand zusammenzusuchen.

Ein Manifestbaum verbindet seine Knoten mit Karten für Berechtigungen, Komponenten und Intent-Filter.

Hinweise mit ihrer Bedingung prüfen

Ein fehlendes exported-Attribut wird nur dann zum entsprechenden Versionsfehler, wenn das numerische Ziel-SDK die Bedingung erfüllt. Bei unbekanntem Ziel bleibt es bei einem bedingten Hinweis. Explizites debuggable=true fordert zur Release-Prüfung auf; eine leere Hinweisliste wird nicht als Sicherheitsnachweis ausgegeben.

Ein markierter Knoten mit Intent-Filter verweist auf die fehlende exported-Deklaration.

Den passenden Stand prüfen und mitnehmen

01

Die richtige Manifestversion wählen

Gradle kann SDK-Werte ersetzen, Bibliotheken können Berechtigungen ergänzen. Verwenden Sie für die Auslieferung das fertige Manifest. Verweise wie @string/app_name und Platzhalter bleiben sichtbar: Ihre Auflösung erfordert Ressourcen oder Buildkonfiguration, die hier nicht vorliegen.

02

Aktualisierung bewusst steuern

Nach Änderungen an Eingabe oder Einrückung wartet die Automatik 350 ms. Schalten Sie sie aus, um mit Strg/Cmd+Enter manuell zu prüfen. Veraltete Ergebnisse sind nicht exportierbar. Ein Wechsel zwischen Übersicht, XML und JSON verändert nur die Darstellung.

03

Anzeigeumfang und Export unterscheiden

Kopieren aus der Übersicht liefert den vollständigen JSON-Bericht, auch wenn eine Liste erst 50 Einträge zeigt. Die XML-Ansicht kopiert formatiertes XML. Beispiel und Leeren zeigen vorher die Ersetzung samt Zeichenzahlen; einmaliges Rückgängigmachen stellt Eingabe und Ergebnis gemeinsam wieder her.

Werte, Zuordnung und konkrete Prüfregeln

Anwendung und SDK im Original

Die Übersicht zeigt Attribute von manifest, uses-sdk und application. Fehlende Felder bleiben fehlend, Ressourcenverweise bleiben Zeichenfolgen. Relative Namen wie .MainActivity werden nicht anhand von package erweitert, da der tatsächliche Klassenname vom Build-Namespace abhängt.

Berechtigungen und Komponententypen

uses-permission, uses-permission-sdk-23 und permission bleiben unterscheidbar, einschließlich Attributen wie maxSdkVersion oder protectionLevel. Erfasst werden activity, activity-alias, service, receiver und provider direkt unter application. Wiederholte Deklarationen werden weder entfernt noch zusammengeführt.

Bedingte Diagnose mit Quellzeile

Geprüft werden Anwendungsanzahl, fehlende Namen, widersprüchliche SDK-Reihenfolge, Filter ohne Aktion und falsch gebundene android-Präfixe. Bei numerischem Ziel-SDK ab 31 gilt die Prüfung auf fehlendes exported für gefilterte Activities, Aliase, Dienste und Receiver; Provider sind von dieser Regel ausgenommen.

Zwei vollständige Ausgabeformate

Zwei oder vier Leerzeichen ergänzen die Einrückung von Containern ohne direkten Text. Vorhandene Leerzeichen, Kommentare und gemischte Inhalte bleiben erhalten. Übersichtslisten wachsen um jeweils 50 Einträge; JSON enthält dennoch alle Attribute, Zuordnungen, Zeilen und Diagnosemeldungen.

Grenzen einer einzelnen XML-Datei

Nur ein Textmanifest
Erwartet wird XML 1.0 mit manifest als Wurzel ohne Namespace. Eine Encoding-Angabe darf UTF-8 oder UTF8 lauten oder fehlen. APK, binäres AXML und AAB müssen zuvor mit Android-Werkzeugen dekodiert werden. Dateiimport und Laden per URL sind nicht vorgesehen.
Keine Build- oder Ressourcenauflösung
Gradle-Zusammenführung, tools:-Anweisungen, Ressourcentabellen und Platzhalter werden nicht ausgewertet. SDK-Werte können sich im Build ändern. Weder ein fehlendes Ziel-SDK noch der vollständige Name einer relativen Komponentenklasse wird hier errechnet.
Vorhandener Text hat Vorrang
Auch Zeilenumbrüche und Einrückungsleerzeichen zwischen Tags sind XML-Text. Teilbäume mit direktem Text, CDATA oder geschütztem Leerraum behalten ihr Layout. Vier Leerzeichen auszuwählen muss daher nichts ändern. Die Formatierung erzeugt eine separate Ausgabe; sie ist keine XML-Kanonisierung.
Keine Aussage zur tatsächlichen Sicherheit
Eine Berechtigung im Manifest belegt keine erteilte Laufzeitfreigabe, exported=true keine ausnutzbare Schwachstelle. allowBackup wird nur als deklarierter Wert gezeigt. Effektive Backups, App-Links-Netzwerkprüfung, Intent-Ausführung, Android Lint und Gerätetests gehören nicht zur Analyse.
Begrenzter Verarbeitungsumfang
Die Eingabe erlaubt 500.000 UTF-16-Codeeinheiten, 20.000 Knoten und Tiefe 100. XML und JSON sind jeweils auf 2.000.000 Codeeinheiten begrenzt; einzelne Zeichen können zwei Einheiten belegen. Bei Überschreitung stoppt die Verarbeitung, ohne einen Teilbericht zum Export freizugeben.
Keine automatische Reparatur
Syntaxfehler enthalten Zeile und Spalte. Korrigieren Sie die Eingabe und starten Sie erneut. DOCTYPE wird abgelehnt; externe Entitäten und Namespace-Adressen werden nicht geladen. Welche Berechtigung entfallen darf oder welchen exported-Wert eine Komponente braucht, entscheidet die Anwendungskonzeption.

Fragen zum Manifest-Viewer

Wie lässt sich die AndroidManifest.xml aus einer APK lesen?

Das Manifest im APK liegt normalerweise als binäres AXML vor. Android Studios APK Analyzer oder apkanalyzer manifest print erzeugen lesbares XML, das Sie hier einfügen können. Die Umbenennung von APK in ZIP macht die Datei zugänglich, dekodiert aber nicht ihren Inhalt.

Warum muss android:exported für Android 12 ausdrücklich gesetzt werden?

Für Apps mit Ziel Android 12 oder neuer benötigen Activities, Dienste und Receiver mit Intent-Filtern einen expliziten exported-Wert. Diese Prüfung berücksichtigt auch Activity-Aliase. Sie meldet die fehlende Deklaration bei einem numerischen Ziel ab 31; bei unbekanntem Ziel folgt ein bedingter Hinweis statt einer Vermutung.

Worin unterscheiden sich uses-permission und permission?

uses-permission fordert Zugriff über eine vorhandene Berechtigung an. permission definiert eine Berechtigung, die etwa eigene Komponenten schützen kann. Der Bericht führt beide Typen getrennt. Daraus lässt sich nicht ablesen, was ein Nutzer auf einem Gerät tatsächlich genehmigt hat.

Woher kommen zusätzliche Berechtigungen im zusammengeführten Manifest?

Eine Bibliothek oder ein anderes Source Set kann sie bei der Zusammenführung hinzufügen. Aus einem einzelnen fertigen Manifest kann diese Seite die Herkunft nicht rekonstruieren. Android Studios Ansicht Merged Manifest und der Zusammenführungsbericht zeigen die beteiligten Quelldateien.

Was unterscheidet minSdkVersion von targetSdkVersion?

minSdkVersion beschreibt die Mindest-API für die Installation. targetSdkVersion legt fest, auf welches Plattformverhalten die Anwendung ausgerichtet ist. Beide erscheinen hier unverändert aus dem XML. Da Gradle sie setzen oder überschreiben kann, ist für Release-Fragen der fertige Build maßgeblich.

Wird eine Deklaration falsch zugeordnet?

Deklarationen am Beispiel nachvollziehen

Nutzen Sie den Manifest-Viewer mit dem Beispiel: Vergleichen Sie Berechtigungsanforderung und Definition und springen Sie vom exported-Hinweis zur betroffenen Komponente.