Wie definieren und verwenden einer Konstante in den Gradle-build-Skript (Android)?
Ich arbeite an einer Applikation für Android-mit Gradle als seine build-system.
Mein Ziel ist es, einen Wert (einen Paketnamen) als applicationId
:
productFlavors {
orange {
applicationId "com.fruits.android.orange"
//...
Aber auch zu entlarven, die es über BuildConfig
so dass Java-code aus Zugriff darauf hat.
Dieser Zugang muss von außen den Geschmack (nämlich die Kostenlose version der app muss wissen, den Namen des Pakets der kostenpflichtigen version, so dass Sie können Benutzer auffordern, für eine Aktualisierung im Play store).
So, ich würde gerne so etwas machen:
productFlavors {
orange {
applicationId orangeProPackage
//...
buildConfigField 'String', 'ORANGE_PRO_PACKAGE', "$orangeProPackage" //?
Nur ich bin mir nicht sicher, wie Sie Sie definieren orangeProPackage
so, dass es sichtbar in der gesamten bauen.gradle und nicht brechen Sie das Skript.
Da gibt es einige verschiedene Varianten, am besten wäre es wenn ich irgendwie könnte alle diese Konstanten, wie das (denke ich?):
def proPackages = [
orange: "..."
apple: "..."
banana: "..."
]
dann finden Sie Sie in eine saubere und anschauliche Art und Weise, wie proPackages.orange
etc.
Ist die Frage, wie das zu schaffen?
Dies ist kein Duplikat von Ist es möglich eine variable zu deklarieren, die in Gradle nutzbar in Java?
Habe ich gesehen, dass die Frage (und ein paar andere). Ich weiß, wie zu erklären, buildConfigFields, ich habe bereits viel. Meine Frage ist über Wiederverwendung den gleichen Wert wie ein buildConfigField
und applicationId
.
- Möglich, Duplikat der Ist es möglich eine variable zu deklarieren, die in Gradle nutzbar in Java?
- es ist nicht doppelt. Ich habe gesehen, dass die Frage (und ein paar andere). Ich weiß, wie zu erklären, buildConfigFields, ich habe bereits viel. Meine Frage ist über die Wiederverwendung der gleichen Wert wie ein
buildConfigField
undapplicationId
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man es in
gradle.properties
im Projekt-root. Wie andere.properties
Dateien, es ist nur ein Schlüssel-Wert-Speicher:Dann siehe es einfach als eine Globale string-variable (
ORANGE_PRO_PACKAGE
) in Ihrembuild.gradle
:Alles was mit
.properties
Dateien nicht kümmern. Es schaut vielleicht auf die Definition globals in der top-level -build.gradle
Datei einfach in plain-Groovy-code oder so etwas.buildConfigField 'String', 'ORANGE_PRO_PACKAGE', '"' + ORANGE_PRO_PACKAGE + '"'
oder sonst der Wert nicht erzeugt, wenn ein string-literal in der BuildConfig und der build bricht. Aber anders als das - es funktioniert, danke für den Tipp..properties
- Datei für jeden Geschmack? Ein Vorteil wird sein, dass man auf diese Weise behalten die gleichen Schlüssel (in gradle.Eigenschaften) über die Aromen. Auf der Grundlage der Geschmack, da würde die Datei ändern, werden die Werte dieser Tasten wäre anders. Wenn Sie mit der gleichengradle.properties
- Datei, die eine Zeichenfolge, deren Wert von änderungen basierend auf Geschmack, bräuchten wir unterschiedliche keys im gleichen.properties
- Datei, die härter Laufe der Zeit zu halten.