12
votes

New Android Oridle Build System Build Configs Nom du package Conflits avec l'autorité du fournisseur

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 Packagenamesuffix du nouveau système de construction.

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 .debug 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.

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?


0 commentaires

4 Réponses :


6
votes

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.


2 commentaires

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.



7
votes

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> xxx pré>

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>


3 commentaires

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



1
votes

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" />


0 commentaires

1
votes

Vous pouvez utiliser:

<permission android:name=".permission.C2D_MESSAGE"
            android:protectionLevel="signature" />
<uses-permission android:name=".permission.C2D_MESSAGE" />


0 commentaires