Android Studio de deux saveurs avec différents fichiers manifest

Je vais avoir des problèmes avec la définition de deux fichiers de manifeste pour mon saveurs dans Android Studio. C'est mon projet en cours de la structure:

Android Studio de deux saveurs avec différents fichiers manifest

La AndroidManifest.xml dans le free saveur ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="se.example.package">
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>

La AndroidManifest.xml dans le main saveur n'a pas d'utilisations des autorisations, mais contient le reste du manifeste de code qui est partagée entre tous les saveurs.

La AndroidManifest.xml dans le pro saveur ressemble à ceci:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="se.example.package">
    <uses-permission android:name="com.android.vending.CHECK_LICENSE" />
</manifest>

construire.gradle définit les deux saveurs comme

productFlavors {
    free {
        applicationId 'se.example.package.free'
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName '1.0'
    }
    pro {
        minSdkVersion 14
        applicationId 'se.example.package.pro'
        targetSdkVersion 21
        versionCode 2
        versionName '1.1'
    }
}

Le résultat que j'attends, c'est que les différentes saveurs définit les différentes utilisations des autorisations. Ce n'est pas le cas. Le résultat est actuellement que les deux saveurs définit seulement le <uses-permission android:name="com.android.vending.CHECK_LICENSE" /> tel que défini dans AndroidManifest.xml dans la pro de la saveur.

J'ai essayé:

  • Propre projet
  • Projet de reconstruction de
  • Redémarrer Android Studio
  • Sync gradle

Mais sans succès. Comment suis-je résoudre ce problème? Toute aide est appréciée.

EDIT 1

J'ai changé l'emplacement de chacun des saveurs AndroidManifest.xml fichier à partir de chacun des res dossiers à free et pro dossier. Le résultat de ceci:

  1. Pro saveur montre de Licence, d'autorisation comme prévu.
  2. Gratuit saveur indique les autorisations de deux AndroidManifest.xml
    des fichiers, des Licences et des autorisations de réseau (Doit être unique réseau)

Cela se sent comme un problème de structure de projet. Que faire de cette?

EDIT 2

J'ai tiré les rapports de fusion comme Commonsware a laissé entendre, ce sont les rapports concernant uses-permissions

Gratuit:

uses-permission#com.android.vending.CHECK_LICENSE
ADDED from qwknoteGIT:licencing-library:unspecified:26:5
    android:name
        ADDED from qwknoteGIT:licencing-library:unspecified:26:22

Pro:

uses-permission#com.android.vending.CHECK_LICENSE
MERGED from qwknoteGIT:licencing-library:unspecified:26:5
  • Je ne suis pas sûr de savoir exactement à qui vous avez à utiliser (tu c'est un commentaire, pas une réponse), mais vous pouvez probablement obtenir ce que tu veux en utilisant certaines des tools:node déclaration tools.android.com/tech-docs/new-build-system/user-guide/...
  • "Le résultat est actuellement que les deux saveurs définit seulement le <uses-permission android:name="com.android.des distributeurs de.CHECK_LICENSE" /> tel que défini dans AndroidManifest.xml dans la pro de la saveur. "- comment avez-vous déterminé ce?
  • J'ai deux saveurs installé sur mon HTC one x, et quand je suis à la vérification des autorisations pour chacun, ils disent tous les deux "contrôle de Licence pour Google Play" (Traduit à partir de mon téléphone avec le suédois locale, peut-être pas la traduction exacte en anglais). Aucun d'entre eux déclarent internet autorisations.
  • Regarder le manifeste rapport de fusion(s) dans app/build/output/apk/ et voir ce qu'ils vous disent.
  • "J'ai changé l'emplacement de chacun des saveurs AndroidManifest.xml fichier de chacune des res dossiers gratuit et pro dossier" -- c'est là où ils sont censés être. Le manifeste va à la racine de la sourceset, si elle est main, une saveur de sourceset, ou un type de build du sourceset. "Que faire de cela?" -- Je répète ma recommandation: Regardez le manifeste rapport de fusion(s) dans app/build/output/apk/ et voir ce qu'ils vous disent.
  • Je n'ai jamais fait d'autorisation de fusion, mais encore une fois, certains de la tools:node devrait. Consulter le lien que j'ai posté. Peut-être ajouter TOUTES les autorisations pour les principaux manifeste et supprimer ceux que vous ne voulez pas sur chaque avec <permission android:name="name" tools:node="remove" à partir de fichiers individuels.
  • J'ai ajouté le rapport de sorties et enlève ce qui ne met pas l'accent sur uses-permissions. Je suis désolé, mais je n'ai jamais été en contact avec cette avant. Je ne sais pas comment les interpréter.
  • Je viens d'essayer votre solution, et cela a fonctionné. S'il vous plaît un résumé de vos commentaires comme réponse.
  • Votre problème provient d'une bibliothèque, pas vos saveurs. Plus précisément, qwknoteGIT:licencing-library demande CHECK_LICENSE. Si vous n'êtes pas à l'aide de cette bibliothèque dans toutes les saveurs, utilisez une saveur de compile déclaration (par exemple, proCompile) à n'utiliser que de la bibliothèque dans cette saveur.
  • Je vous remercie pour votre temps et d'efforts de la Marque. Il est logique maintenant que vous avez dit. N'hésitez pas à poster votre réponse, et je vais upvote pour la future réponse d'asile.

InformationsquelleAutor Marcus | 2015-02-12