Voglio mantenere diverse configurazioni per le varianti di debug/release build ma a quanto pare, il file google-services.json ne consente solo uno. C'è qualche alternativa? C'è un modo per conservare diversi file?Come mantenere diverse configurazioni per la mia app Android con GCM 3.0
risposta
No, non è possibile definire configurazioni specifiche per la build in questo momento. Buona idea, sembra qualcosa di utile.
Sto usando questa soluzione alternativa per risolvere un problema simile con i sapori di compilazione.
Il sapore specifico google-service.json file sono memorizzati sotto /app/src/{flavour-name}/google-service.json. Per copiare questo al /app dir il seguente codice può essere aggiunto al file /app/build.gradle:
gradle.taskGraph.beforeTask { Task task ->
if(task.name ==~ /process.*GoogleServices/) {
android.applicationVariants.all { variant ->
if(task.name ==~ /(?i)process${variant.name}GoogleServices/){
copy {
from "/src/${variant.flavorName}"
into '.'
include 'google-services.json'
}
}
}
}
}
In assenza di sapori (come ho capito la tua domanda) il seguente /app/build.gradle frammento di codice ha fatto il lavoro in un androide progetto di test in studio:
gradle.taskGraph.beforeTask { Task task ->
if(task.name ==~ /process.*GoogleServices/) {
android.applicationVariants.all { variant ->
if(task.name ==~ /(?i)process${variant.name}GoogleServices/){
copy {
from '.'
into '.'
rename { String fileName ->
fileName.replace("google-services-${variant.name}.json", 'google-services.json')
}
include "google-services-${variant.name}.json"
}
}
}
}
}
il frammento si aspetta un google-servizi-debug.json e un google -services-release.json nella tua /app dir e lo copia e lo rinomina in google-services.json.
Spero che questo aiuti.
questo verrà eseguito per tutte le varianti ogni volta. Destra ? non l'ho provato ma ho provato cose del genere. –
Avevo bisogno di rimuovere il primo/prima src 'da" src/$ {variant.flavorName} "' ma altrimenti @MartinS la tua soluzione è semplicemente fantastica. –
dovrebbe essere da "src/$ {variant.flavorName}", non da "/src/${variant.flavorName}". Si prega di verificare – User9527
vedere http://stackoverflow.com/a/31895658/3014036 –