J'ai mis à jour mon projet pour utiliser le nouveau système de construction basé sur les grades, en grande partie parce que j'ai été gênée de ne pas pouvoir installer mon application sur mon appareil pour l'utiliser depuis que j'utilise l'appareil pour le développement. J'ai vu beaucoup de promesses dans le Le problème que je rencontre implique des choses autres que le nom du paquet dans le manifeste. Il existe d'autres pièces qui doivent être uniques, y compris des autorisations (spécifiquement pour les GCM) et des autorités de contenu. Lorsque vous essayez d'installer avec un y a-t-il une variable que je peux mettre dans mon manifeste au lieu de ces cordes afin que le système de construction remplace ceux-ci correctement aussi bien? P> Packagenamesuffix code> du nouveau système de construction. P>
.debug code> suffixe, je reçois des erreurs que la permission de GCM pour ce package n'a pas été définie et que j'essaie d'installer un fournisseur en double. P>
4 Réponses :
Il s'agit d'une limitation connue actuelle de modifier le nom du paquet pour une variante. Je prévois de la fixer cela dans les meilleurs délais. P>
Est-ce fixé ou non? Pourriez-vous ajouter du lien vers le numéro suivant pour suivre ce problème?
Nous venons de commencer à travailler sur une nouvelle fusion manifeste qui résoudra cela.
Voici ma solution pour les problèmes de GCM avec Packagenamesuffix.
Problème principal est les noms de permission qui devraient avoir un suffixe ".debug". J'ai mis cette autorisation de déboguer et de libérer des manifestes fusionnés au manifeste final. P>
androidmanfest.xml p> debugmanifest p> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.experiment.myapplication" >
<permission android:name="com.experiment.myapplication.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.experiment.myapplication.permission.C2D_MESSAGE" />
<application>
<receiver
android:name=".GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.experiment.myapplication" />
</intent-filter>
</receiver>
</application>
</manifest>
Lorsque vous utilisez les nouveaux services de lecture au lieu de l'ancien client GCM, vous n'avez pas besoin de la permission spécifique au paquet.
J'ai essayé d'utiliser cette solution avec un dirigeable urbain et cela n'a pas fonctionné comme prévu. Je reçois toujours les conflits de fusion sur les noms de colis.
@deekay ce n'est pas. : 3
J'ai remplacé le nom du package de mon application dans AndroidManifest.xml avec Placeholder $ {Packagename}, la fusion de Manifeste fonctionne donc toutes les
Par exemple: P>
<uses-permission android:name="${packageName}.permission.C2D_MESSAGE" />
Vous pouvez utiliser:
<permission android:name=".permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name=".permission.C2D_MESSAGE" />