Il nuovo sistema Android Gradle Build System crea il nome del pacchetto di configurazioni in conflitto con l’autorità del fornitore

Ho aggiornato il mio progetto per utilizzare il nuovo sistema di build basato su Gradle, in gran parte perché sono stato un po ‘seccato dal fatto che non posso avere la mia app installata sul mio dispositivo per usarla dal momento che utilizzo il dispositivo per lo sviluppo. Ho visto molte promesse nell’offerta packageNameSuffix del nuovo sistema di build.

Il problema che sto incontrando coinvolge cose diverse dal nome del pacchetto nel manifest. Ci sono altre parti che devono essere uniche, comprese le autorizzazioni (in particolare per GCM) e le autorità ContentProvider. Quando provo a installare con un suffisso .debug ottengo degli errori che l’authorization GCM per quel pacchetto non è stata definita e che sto cercando di installare un provider duplicato.

Esiste una variabile che posso inserire nel mio manifest al posto di queste stringhe in modo che il sistema di creazione sostituisca anche quelle in modo appropriato?

Ecco la mia soluzione per problemi GCM con packageNameSuffix.

Il problema principale sono i nomi dei permessi che dovrebbero avere il suffisso “.debug”. Ho dato il permesso di eseguire il debug e rilasciare i manifesti che sono uniti al manifest finale.

AndroidManfest.xml

 < ?xml version="1.0" encoding="utf-8"?>                 

eseguire il debug di AndroidManifest

 < ?xml version="1.0" encoding="utf-8"?>             

>

rilascia Android Manifest

 < ?xml version="1.0" encoding="utf-8"?>             

Questa è una limitazione attualmente nota della modifica del nome del pacchetto per una variante. Sto pensando di sistemarlo il prima ansible.

Ho sostituito il nome del pacchetto della mia app in AndroidManifest.xml con il segnaposto $ {packageName}, quindi la fusione manifesto fa tutto

Per esempio:

  

Puoi usare:

   

Android aggiungerà automaticamente il nome del pacchetto corrente, come hai iniziato con a . .