43 votes

Utilisation de la nouvelle propriété "manifestmerger" dans Android

Dans la dernière version d'ADT (version 20 preview 3), il est dit qu'il est possible de rendre le fichier manifeste des bibliothèques fusionnable avec les projets qui les utilisent :

Fusion automatique des fichiers du manifeste du projet de bibliothèque dans le manifeste du projet inclus. dans le manifeste du projet inclus. Activez cette fonction avec la propriété manifestmerger.enabled.

Comment et où l'utiliser ? Je ne vois nulle part d'assistance en matière de contenu qui puisse m'aider à ce sujet.

1 votes

En outre, y a-t-il des informations sur ce qu'il fusionne ? Je suppose que ce sont des activités ?

0 votes

Je pense que oui. Je pense aussi que tout le reste, comme les permissions.

0 votes

J'ai remarqué qu'il ne fusionne pas les propriétés du lanceur d'une activité, mais qu'il le fait pour toutes les activités.

64voto

Kevin McMahon Points 2195

Ajoutez la ligne suivante à votre project.properties de votre projet d'application.

manifestmerger.enabled=true 

Introduit avec Android SDK Tools, Revision 20 (June 2012) :
https://developer.Android.com/studio/releases/sdk-tools

Système de construction
    * Ajout de la fusion automatique des fichiers du manifeste du projet de bibliothèque dans le manifeste du projet d'inclusion.       Activez cette fonctionnalité avec l'option manifestmerger.enabled propriété.

0 votes

Merci. il semble qu'ils l'aient ajouté récemment dans leur documentation et leurs vidéos. j'avais oublié que j'avais posé cette question.

0 votes

I dude, cela ne fonctionne pas pour moi, malheureusement... J'ai ajouté cette ligne dans mon project.properties mais puisque j'appelle startActivity dans mon code, il se bloque avec ActivityNotFoundException ... Que puis-je faire pour éviter cela ? Merci d'avance mon ami.

1 votes

C'est ma faute, j'étais juste en train d'ajouter le activity dans le manifeste Libs sans application tag... Cela fonctionne très bien ! merci beaucoup !

9voto

AndroidCuet Points 549

Si vous voulez fusionner le manifeste du projet de la bibliothèque Android et votre manifeste de projet actuel, vous devez ajouter manifestmerger.enabled=true dans votre fichier project.properties où vous avez référencé votre projet de bibliothèque. Mais, vous devez confirmer certains points comme la version ADT, le minimum et le SDK cible doivent être les mêmes que ceux du projet de bibliothèque.

1 votes

J'étais confronté au problème que R.java n'était plus trouvé, changer le sdk min et target l'a résolu pour moi. merci.

5voto

Vadimo Points 388

FYI : manifestmerger.enabled=true ne fusionnera pas les fichiers manifestes si vous utilisez eclipse export signed App. Comme indiqué ici, il semble que ce soit un bug. http://code.google.com/p/Android/issues/detail?id=34623

J'ai aussi eu un peu de mal à configurer correctement la fusion. (redémarrage d'eclipse, ouverture, fermeture du projet ) Pour savoir si la fusion fonctionne, jetez un coup d'oeil au fichier dans ../Votre_Projet_Main/bin/AndroidManifest.xml. Si la fusion a fonctionné, vous verrez le résultat complet dans ce fichier.

EDITAR: Ce bogue a été corrigé dans ADT v20.0.1 (juillet 2012) : http://developer.Android.com/tools/sdk/eclipse-adt.html

0 votes

Je pense qu'Eclipse est la meilleure chose que google supporte en tant qu'IDE. De plus, même sans signer l'application (c'est-à-dire juste compiler et exécuter à partir d'Eclipse), cela ne fonctionne pas pour moi.

0 votes

Ce n'est pas une fonctionnalité, c'est un bug. Tout fonctionnait bien pour moi quand j'ai essayé d'exporter l'application signée.

0 votes

Vous ne m'avez pas compris. c'est une fonctionnalité qui ne fonctionne tout simplement pas pour moi, même lorsque je lance l'application sans signature. je ne comprends pas. comment peuvent-ils publier une fonctionnalité qui ne fonctionne pas du tout ?

2voto

Sid M Points 55

Je rencontrais des erreurs lors de la fusion des manifestes (le fichier R.java était manquant). J'ai donc copié explicitement le contenu du manifeste (par exemple, j'ai copié uniquement le contenu de l'activité) à partir du manifeste du projet de bibliothèque et je l'ai placé dans le manifeste de mon projet principal. Cela a résolu l'erreur et tout semble fonctionner correctement jusqu'à présent. Faites-moi savoir si quelqu'un pense que ce n'est pas une alternative recommandée à la fusion des manifestes.

0 votes

Je peux confirmer qu'après 3 ans après la date "le bug a été corrigé", nous avons toujours des problèmes avec la fusion. Le fait de la désactiver et de fusionner manuellement les fichiers a résolu le problème sur Eclipse. Aucun problème avec la fusion automatique d'Android Studio jusqu'à présent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X