Développement Android

visualiseur de manifeste · Relier chaque déclaration à son contexte

Collez du XML texte : l’analyse démarre après 350 ms. Désactivez le mode automatique pour utiliser le bouton ou Ctrl/Cmd+Entrée.

visualiseur de manifeste

XML du manifeste

Résultat de l’analyse

Collez un AndroidManifest.xml au format texte ou chargez l’exemple.

Le texte est traité dans cet onglet du navigateur, sans envoi sur un serveur.

Options

Seules les déclarations de ce XML sont examinées. Le texte, les espaces et les références existants sont conservés ; la configuration de compilation et le comportement à l’exécution ne sont pas évalués.

Collez un AndroidManifest.xml au format texte ou chargez l’exemple.

Une autorisation inattendue dans une version livrée mérite de savoir ce qui est réellement déclaré. Ce visualiseur de manifeste distingue les demandes d’accès, les définitions de permissions et les composants de l’application. Les numéros de ligne permettent de revenir au XML, sans perdre le composant auquel appartient chaque filtre.

Le fichier manifeste source décrit une étape du projet ; le fichier fusionné ou décodé décrit une autre étape du build. Choisissez celui qui répond à votre question. Les références aux ressources restent visibles pour signaler les informations que le document seul ne permet pas de résoudre.

Pourquoi utiliser ce visualiseur de manifeste

Lire les filtres avec leur composant

Le visualiseur de manifeste conserve séparément les filtres d’intent d’une même activité. Leurs actions, catégories et attributs data ne sont pas fusionnés. Vous pouvez ainsi distinguer le lancement depuis une icône et une entrée par lien Web tout en gardant les autorisations Android dans leur propre inventaire.

Un arbre de manifeste relie ses nœuds à des cartes de permissions, de composants et de filtres d’intent.

Comprendre la condition du signalement

L’absence de exported ne se juge pas de la même façon lorsque le SDK cible est inconnu. Les diagnostics distinguent la condition numérique vérifiée du simple point à confirmer et indiquent la ligne source. Un mode debug explicite appelle une vérification du build livré, pas un verdict automatique sur sa sécurité.

Un composant contenant un filtre d’intent est associé à un repère signalant la déclaration exported manquante.

Choisir le bon document et le bon export

01

Partir du stade de build recherché

Gradle peut remplacer les versions SDK et une bibliothèque peut ajouter des permissions. Pour contrôler une livraison, récupérez le manifeste final. Si vous voyez @string/app_name ou un espace réservé, il faut encore consulter une ressource ou une configuration externe pour connaître la valeur effective.

02

Maîtriser le rafraîchissement

L’analyse automatique attend 350 ms après une modification du texte ou de l’indentation. Vous pouvez la désactiver et lancer avec Ctrl/Cmd+Entrée. Les exports restent indisponibles tant que le résultat est périmé. Changer uniquement de vue ne relance pas l’analyse.

03

Emporter tout le rapport

La copie depuis la synthèse produit le JSON complet, comme la vue JSON, même si une liste n’affiche que 50 éléments. La vue XML copie le XML mis en forme. Exemple et effacement passent par un aperçu avec le nombre de caractères remplacés ; une annulation restaure l’entrée et le résultat précédents.

Inventaires et diagnostics reliés aux lignes

Attributs de l’application et du SDK

Consultez ensemble manifest, uses-sdk et application. Les valeurs absentes ne sont pas inventées et les références restent telles quelles. Un nom relatif comme .MainActivity n’est pas développé à partir de package : son nom de classe final dépend aussi du namespace du build.

Types de permissions et de composants

Le rapport distingue uses-permission, uses-permission-sdk-23 et permission, avec leurs attributs tels que maxSdkVersion et protectionLevel. Il extrait activity, activity-alias, service, receiver et provider directement sous application. Les déclarations répétées sont conservées pour permettre leur examen.

Règles ciblées et conditions explicites

Les contrôles portent sur le nombre d’applications, les noms manquants, l’ordre des SDK, les filtres sans action et un préfixe android mal lié. Avec une cible numérique de 31 ou plus, le manque de exported est signalé pour les activités, alias, services et receivers avec filtre. Cette règle ne vise pas les providers.

XML lisible et JSON complet

Choisissez deux ou quatre espaces pour les conteneurs sans texte direct. Les espaces déjà présents, commentaires et contenus mixtes restent protégés. Les listes de synthèse se prolongent par groupes de 50 ; le JSON exporté contient tous les attributs, relations, lignes et diagnostics.

Ce que le document ne permet pas de conclure

Un manifeste XML texte uniquement
Utilisez un document XML 1.0 avec une racine manifest sans espace de noms. La déclaration d’encodage accepte UTF-8, UTF8 ou son absence. Les APK, AXML binaires et AAB demandent un décodage préalable avec les outils Android. Il n’y a ni import de fichier ni chargement par URL.
Aucune fusion ou résolution de ressources
Le traitement n’exécute pas Gradle, les directives tools:, les tables de ressources ou les espaces réservés. Le SDK indiqué peut être remplacé pendant la compilation. La page ne déduit ni une cible manquante ni le nom complet d’une classe relative à partir de package.
Le texte existant garde sa place
Les retours à la ligne et espaces entre balises sont aussi du texte XML. Un sous-arbre avec texte direct, CDATA ou espace protégé conserve donc sa disposition. Passer à quatre espaces peut ne rien changer. La mise en forme crée une sortie distincte sans réécrire l’entrée ni canoniser le document.
Les alertes ne constituent pas un audit
Une permission déclarée ne prouve pas qu’elle a été accordée à l’exécution. exported=true ne démontre pas une faille exploitable. allowBackup est présenté comme valeur déclarée. Les sauvegardes effectives, la vérification réseau des App Links, l’exécution d’intents et les tests sur appareil sont hors périmètre.
Des limites de taille et de profondeur
L’entrée accepte 500 000 unités de code UTF-16, 20 000 nœuds et une profondeur de 100. XML et JSON sont chacun limités à 2 000 000 unités ; certains caractères en occupent deux. Tout dépassement arrête le traitement et empêche l’export d’un résultat partiel.
Pas de correction automatique
Une erreur de syntaxe conserve sa ligne et sa colonne pour être corrigée dans l’entrée. DOCTYPE est refusé ; aucune entité externe ni adresse d’espace de noms n’est chargée. Supprimer une autorisation ou choisir la valeur de exported demande de connaître les besoins de l’application.

Questions sur le visualiseur de manifeste

Comment lire le fichier AndroidManifest.xml contenu dans un APK ?

Le manifeste contenu dans un APK est généralement encodé en AXML binaire. Utilisez APK Analyzer dans Android Studio ou apkanalyzer manifest print pour obtenir du XML lisible, puis collez-le ici. Renommer l’APK en ZIP permet d’accéder au fichier, mais ne le décode pas.

Pourquoi Android 12 exige-t-il une valeur explicite pour android:exported ?

Une application ciblant Android 12 ou plus doit déclarer exported pour ses activités, services et receivers dotés de filtres d’intent. Le contrôle inclut aussi les alias d’activité. La cible fournie doit être un nombre au moins égal à 31 pour déclencher cette erreur ; une cible inconnue donne un commentaire conditionnel.

Quelle différence y a-t-il entre uses-permission et permission ?

uses-permission demande l’accès à une fonction protégée par une permission existante. permission définit une permission, par exemple pour protéger vos propres composants. Les deux types sont séparés dans le rapport, sans prétendre connaître les autorisations effectivement accordées sur un téléphone.

Peut-on supprimer les autorisations déclarées par une application Android ?

Les déclarations peuvent être modifiées dans le projet, mais supprimer une autorisation nécessaire peut empêcher certaines fonctions de marcher. Cette page les recense sans les retirer automatiquement. Vérifiez leur provenance dans le manifeste fusionné et leur utilisation dans le code avant de modifier le fichier.

Quelle est la différence entre minSdkVersion et targetSdkVersion ?

minSdkVersion est le niveau d’API minimal pour installer l’application. targetSdkVersion détermine les comportements de plateforme ciblés. Ici, les valeurs sont celles du XML fourni ; Gradle peut les définir ou les remplacer. Une décision concernant la livraison demande donc de contrôler le build final.

Une déclaration est-elle mal extraite ?

Examiner les déclarations de l’exemple

Ouvrez l’exemple du visualiseur de manifeste pour distinguer une demande de permission de sa définition, puis retrouvez le composant concerné par un exported manquant.