Vorrei poter caricare il valore di stringhe visibili dall'utente da res/values / strings.xml dal nostro CMS (o qualche DB), durante la build del gradle.In una build gradle Android, modifica il contenuto di strings.xml durante la compilazione
E.g.
<string name="button_label">OK, do it</string>
potrebbe essere cambiato al
<string name="button_label">OK, do it now!</string>
... o qualsiasi altra cosa.
L'idea è che il nuovo valore verrà letto AL BUILD TIME dal nostro CMS e quindi verrà inserito nel file APK. (La motivazione è di automatizzare le modifiche alle stringhe delle app, in modo che qualsiasi testo dall'app venga letto da un CMS esistente).
Qual è il modo migliore per raggiungere questo obiettivo? È possibile generare/modificare i file di risorse (ad es. Strings.xml) durante la compilazione, prima che vengano utilizzati dal sistema di build di Android?
l'aggiunta di alcuni altri requisiti:
- La soluzione deve supportare "Risorse Alternative", alias sovrascrivendo stringhe per altre lingue. (http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources)
- La soluzione deve essere in grado di sovrascrivere i valori presenti nel file strings.xml (predefinito) originale.
il modo semplice: http://tools.android.com/tech-docs/new-build-system variant.resValue ... altro: crea il proprio plugin gradle ... – Selvin
Grazie Selvin, sembra promettente. Una domanda su questo però: come potrei fare per fornire valori di fallback per diverse lingue? È possibile con questa funzione? – treesAreEverywhere
'applicationVariants.all {variant -> variant.resValue" string "," button_xxx "," Qui va il testo "}' ... ovviamente è necessario imparare alcune nozioni di base di Groovy (ad esempio per ottenere quei valori online o da il tuo specifico file xml/json) ... fx https://gist.github.com/SelvinPL/f89476b6585690cb252b ... io lo uso per generare fx 'colorPrimaryAX' che è colorPrimary con X% alpha https: //gist.github .com/SelvinPL/8e673e38c5fed8e2132b – Selvin