2014-06-26 11 views
11

Sono molto entusiasta della nuova possibilità di segnaposti manifest in Gradle + Build Android. Ho trovato nella documentazione Gradle che posso specificare i miei segnaposti in questo modo:Android - Segnaposto manifest per diversi tipi di build

productFlavors { 
    free { 
    } 
    pro { 
     manifestPlaceholders = [ activityLabel:"proName" ] 
    } 
} 

Ma mi piacerebbe avere un segnaposto dipende dal tipo di costruzione e non sui sapori dei prodotti. Quando inserisco la specifica del segnaposto nelle impostazioni del tipo di build non ha alcun effetto. Sai come ottenere questo? Perché mi sembra stupido avere tre tipi di build e tre sapori associati. Grazie

+0

Non sono sicuro del tuo caso ma forse questo link ti sarà d'aiuto? http://stackoverflow.com/questions/10887837/how-to-specify-spring-propertyplaceholderconfig-values-in-gradle-build –

+0

Dal momento che non ho potuto farlo funzionare direttamente e non ho avuto il tempo di testare molto di modi diversi ho finalmente deciso di copiare il mio manifest nelle diverse cartelle di tipo build e rimuovere (quasi) tutto tranne quello che volevo cambiare (nel mio caso questa era la chiave dell'API di Google Maps). Ho usato il metodo "tools: replace" per assicurarmi di mantenere ciò che volevo. Non è la soluzione migliore ma una soluzione che ha funzionato per me ... – Kasium

+1

Sembra un bug, che verrà risolto: https://code.google.com/p/android/issues/detail?can=2&start= 0 & num = 100 & q = & colspec = ID% 20Type% 20Status% 20Owner% 20Summary% 20Stars & groupby = & sort = & id = 72829 – OriolJ

risposta

4

A partire da oggi con il plugin gradle 0.13.0 è già funzionante.

7

Questa è la mia soluzione per diversi gusti di prodotto:

build.gradle:

productFlavors { 
normal { 
    applicationId "mobi.cwiklinski.urc" 
    buildConfigField "String", "providerAuthority", "\"mobi.cwiklinski.urc.provider\"" 
    resValue "string", "authorities", "mobi.cwiklinski.urc.provider" 
} 
adfree { 
    applicationId "mobi.cwiklinski.urc.adfree" 
    buildConfigField "String", "providerAuthority", "\"mobi.cwiklinski.urc.adfree.provider\"" 
    resValue "string", "authorities", "mobi.cwiklinski.urc.adfree.provider" 
} 

}

AndroidManifest.xml

E questo è tutto - in diversi sapori del prodotto si otterrà un diverso valore delle risorse.

+0

Bene, grazie per la risposta, ma non ha nulla a che fare con la mia domanda .. stavo chiedendo se potevo in qualche modo utilizzare questo in tipi di build e non in sapori – Billda

+0

Puoi collegare queste due cose: otterrai quattro APK e scegli i due che vuoi ottenere ... –

+0

Non sapevo resValue, è davvero utile e può essere usato invece di ' manifestPlaceholders' che non sono riuscito a far funzionare. – tasomaniac

Problemi correlati