Ändern Sie den Inhalt von strings.xml während eines Builds in einem Android-Build

9

Ich möchte in der Lage sein, den Wert der sichtbaren Zeichenketten von res / values ​​/ strings.xml von unserem CMS (oder einer anderen Datenbank) während des Builds zu laden.

z.

%Vor%

Kann zu

geändert werden %Vor%

... oder was auch immer.

Die Idee ist, dass der neue Wert von unserem CMS AT BUILD TIME gelesen wird und dann in die APK-Datei übernommen wird. (Die Motivation besteht darin, Änderungen an App-Strings zu automatisieren, sodass jeder Text aus der App von einem vorhandenen CMS gelesen wird).

Was ist der beste Weg, dies zu erreichen? Ist es möglich, die Ressourcendateien (z. B. strings.xml) während des Builds zu erstellen / zu ändern, bevor sie vom Android-Buildsystem verwendet werden?

Hinzufügen weiterer Anforderungen:

  • Die Lösung muss "Alternative Ressourcen" unterstützen, dh die Zeichenfolgen für andere Sprachen überschreiben. ( Ссылка )
  • Die Lösung sollte Werte überschreiben können, die sich in der ursprünglichen (Standard) strings.xml-Datei befinden.
treesAreEverywhere 08.02.2016, 15:00
quelle

1 Antwort

3

Hier ist eine Lösung, bei der Ihre Zeichenfolgen über eine externe Eigenschaftendatei geändert werden. Ich bin mir nicht sicher, ob dies genau zu Ihrer Anforderung passt, aber es sollte Sie davon abbringen.

Ich mache etwas ähnliches in meinen Builds - ich habe einige benutzerdefinierte Aufgaben mit dieser Art von Ersatz, die innerhalb ihrer doFirst() aufgerufen werden. Die Regex hier könnte wahrscheinlich etwas Polieren verwenden, und das Eingabeformat kann sich je nach Bedarf ändern, aber in einigen lokalen Tests scheint dies für mich zu funktionieren.

%Vor%

Ich behalte meine externen Eigenschaften / Funktionen in einer separaten Datei (zum Beispiel common.gradle). In Ihrer build.gradle könnten Sie eine benutzerdefinierte Aufgabe wie folgt hinzufügen:

%Vor%

Dann könnte Ihr grodle-Befehl wie gradle updateStringsXml assembleRelease aussehen.

    
lase 08.02.2016 17:33
quelle