In Android Studio, c'è il concetto di tipi di build e aromi, e puoi usarli per ottenere ciò che ti serve. I tipi di build sono versioni diverse dell'app che sono identiche dal punto di vista funzionale ma possono differire nel codice di debug. Per impostazione predefinita, tutti i progetti Android Gradle hanno i tipi di build di debug e release.
Gli aromi sono versioni della tua app che sono funzionalmente diverse; puoi avere libero e pagato, per esempio. Per impostazione predefinita, i tuoi progetti Android Gradle non hanno alcun aroma, ma puoi aggiungerli.
I tipi di build e gli aromi vengono combinati (nella cosiddetta variante ) quando si esegue una generazione; in questo esempio, puoi avere build freeDebug, freeRelease, paidDebug e paidRelease.
Il sistema di compilazione consente di ignorare facilmente un numero di elementi in ogni tipo/sapore/variante; una delle cose che puoi fare è sovrascrivere parti del file AndroidManifest.xml. Il sistema di compilazione unisce i diversi bit idonei di manifest in un manifest principale quando crea una variante particolare.
Con lo sfondo in mano, nel tuo caso potresti voler avere una chiave API diversa nella versione di debug della tua app rispetto alla versione di rilascio. La versione di debug è ciò che userai nello sviluppo, debug e test quotidiani, e la versione di rilascio è ciò che distribuiresti agli utenti.
A tale scopo, non lo fanno inserire la chiave API di Google Maps nel file di AndroidManifest.xml dell'app principale src/main
; invece, aggiungi due nuove cartelle, src/debug
e src/release
e aggiungi stub file AndroidManifest.xml lì. Non includere informazioni complete in questi nuovi manifesti, ma solo ciò che è unico su ciò che è necessario per quella particolare variante. I file di origine sarà simile a questo:

Il file src/debug/AndroidManifest.xml
conterrà questo:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_DEV_KEY]" />
</manifest>
e src/release/AndroidManifest.xml
avrà questo:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="[MY_PROD_KEY]" />
</manifest>
per ribadire, non lo fanno inserire qualsiasi chiave API nel file src/main/AndroidManifest.xml
.
Se per qualche motivo non si desidera utilizzare i tipi di compilazione per differenziare, è possibile impostare i gusti di sviluppo e sviluppo e suddividerlo in questo modo; il manifest overriding funziona allo stesso modo.
Amico esattamente quello di cui avevo bisogno, bella domanda. – Radu