2015-04-15 7 views
5

ich eine benutzerdefinierte Aufgabe in meinem build.gradle haben, die einige String-Ressourcen erzeugt:Generieren Sie eine Zeichenfolge-Ressource enthält% von build.gradle mit resValue

android.defaultConfig.resValue "string", "my_string", "Some Value" 

Das alles funktioniert gut: die Saiten erscheinen korrekt in generated.xml und sind über getResources().getString(R.id.my_string) im Anwendungscode zugänglich.

Es funktioniert nicht, wenn einer der Strings ein % Symbol enthält. Es gibt diesen Fehler:

Error:(1) Multiple substitutions specified in non-positional format; did you mean to add the formatted="false" attribute?

ich von Android XML Percent Symbol verstehen, dass man normalerweise dieses Problem umgehen, für eine Zeichenfolge-Ressource in strings.xml, durch die zusätzliche Zufuhr von formatted="false" Attributen wie folgt:

<string formatted="false">My string with a % symbol</string> 

Wie kann ich das Attribut formatted="false" bei der Generierung der Zeichenfolge unter Verwendung von resValue im Build-Skript einschließen?

(ich habe auch versucht, mit doppelseitigem% zu entkommen, wie vorgeschlagen, aber das führt zu %% in der letzten Zeichenfolge angezeigt.)

Antwort

0

ich löste es durch das rohe % Symbol mit einem Doppel entkam Unicode-Wert bei String-Erzeugungszeit in der gradle Aufgabe zu ersetzen.

android.defaultConfig.resValue "string", "my_string", \ 
    "String with a % symbol".replaceAll("%","\\\\u0025") 
0

Sie können% in xml verwenden

versuchen, dieses Format \ %% in Ihre xml

<string name="foo">percent symbol 50\%% </string> 
Verwandte Themen