Wie man eine Ressource Wert in der build.gradle?
Den resValue
- Methode (oder wie das heißt) können Sie set eine Ressource Wert in buildTypes
oder productFlavors
. Gibt es einen entsprechenden Weg zu bekommen eine Ressource Wert, der festgelegt wurde, durch resValue
?
Scheint es, dass productFlavors
bewertet, bevor buildTypes
, so ein resValue
set in buildTypes
Vorrang. Ich möchte anfügen, "Debug", um den app-Namen in debug-builds, aber ich brauche, um den Wert, der festgelegt wurde, in das Produkt, Geschmack in Ordnung, um Sie anzuhängen.
Edit: ich habe versucht, Marcin Koziński Vorschlag zu, eine variable zu verwenden, aber alle Produkt Aromen ausgewertet werden, bevor alle bauen geben. Daher funktioniert das nicht:
android {
String appName = ""
productFlavors {
Foo {
appName = "Foo"
}
Bar {
appName = "Bar"
}
}
buildTypes {
release {
resValue "string", "app_name", appName
}
debug {
resValue "string", "app_name", appName + " Debug"
}
}
}
In buildTypes
, appName
hat immer den Wert aus der letzten Produkt Geschmack. Also in diesem Beispiel werden alle builds erhalten den Namen "Bar"
oder "Bar Debug"
.
Im Grunde, ich brauche eine resValueSuffix
Analog zu applicationIdSuffix
. Offenbar kein solches Tier existiert. Hat die com.android.application
- plugin aussetzen, alles, was ich verwenden könnte, um dies zu erreichen?
- stackoverflow.com/questions/17275461/...
- Das Q&A über Ressourcen von
strings.xml
. Meine Ressource erstellt, mitresValue
. - Ist
app_name
verwendet in der app neben der manifest? - Nope..
- Es ist ein Weg, können Sie es mit manifest-Platzhalter, siehe meine Antwort unten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nur versuchen, die App-Label (oder andere manifest-Werte) lösen Sie dieses mit manifest Platzhalter.
Dann in Ihrem Android-Manifest-Sie verwenden einfach beide Platzhalter für Ihre app-name (oder andere Werte)
Diese erlauben Ihnen die Installation alle 4 Varianten nebeneinander auf einem einzigen Gerät sowie geben Ihnen verschiedene Namen in den app-drawer /launcher.
manifestPlaceholders.appNameSuffix = ".Debug"
eher alsmanifestPlaceholders = [ appNameSuffix:".Debug"]
.Können Sie die build-Varianten wie diese
Definieren Sie Werte in gradle
Und der Zugriff auf diese Werte mithilfe von build-Varianten:
Oder
Haben, eine alternative version einer Ressource in debug-builds, können Sie die debug-Quelle eingestellt.
strings.xml
finden Sie unter dem folgenden Pfadsrc/main/res/values
, was bedeutet, dass es in der Hauptquelle eingestellt. Wenn Sie ein neues Verzeichnis erstellensrc/debug/res/values
Sie können eine neuestrings.xml
Datei mit Werten, die überschrieben werden, in debug-builds. Zum Beispiel:Wird dadurch ersetzt, was Wert
app_name
hat in der main-Datei. Sie müssen nicht zu duplizieren, werden alle Zeichenfolgen, die in hier - diejenigen, die Sie nicht hier sind einfach nur ergriffen von der Haupt-Datei.strings.xml
. Ich Schaffe es mitresValue
weil ich davon die Anzahl von build-Varianten * Produkt-Aromen zu wachsen, und ich möchte vermeiden, die Notwendigkeit der Schaffung einesstrings.xml
für jede Kombination.resValue
dann müssen Sie nicht haben, um es zu Lesen zurück von Ressourcen. Sie haben bereits den Wert in Ihrembuild.gradle
Skript. Weisen Sie einfach es zu einer lokalen variable und verwenden Sie es, um eine Ressource zu erstellen, die für jede Variante.android
Umfang. Alle Produkt-Aromen führen Sie vor jedem build geben, so dass jeder build-Typ sieht, der zugewiesene Wert in der letzten Produkt-Geschmack.