Holen Sie sich Produkt Geschmack oder Build-Variante in einer Android-App
Habe ich eine android-app mit einer Reihe von verschiedenen Produkt-Aromen konfiguriert in meinem build.gradle-Datei z.B.
productFlavors {
someFlavor {}
anotherFlavor {}
}
In meiner Anwendung code, ich möchte in der Lage zu bekommen halten Sie den Namen des aktuell kompilierten Geschmack (oder build-Variante). Eine Lösung ist diese:
productFlavors {
someFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = \"someFlavor\";"
}
anotherFlavor {
buildConfig "public static final String PRODUCT_FLAVOR = \"anotherFlavor\";"
}
}
Und dann in meine android-app call BuildConfig.PRODUCT_FLAVOR
.
Gibt es eine Möglichkeit, die ich bekommen kann gradle automatisch dazu? Oder gibt es eine andere API in android, die ich verwenden können, um das Produkt flavor Namen?
InformationsquelleAutor der Frage robd | 2013-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten: Dies geschieht nun automatisch, beginnend mit der version 0.7 von dem plugin.
BuildConfig.java
enthältFLAVOR
ist die kombinierte Aroma-Namen mit der alle Geschmack Dimensionen/Gruppen angewendet. Dann jede dimension ist verfügbar alsFLAVOR_<group name>
.Schließlich
BUILD_TYPE
enthält den Namen der verwendeten build-Typ.Wenn Sie ein einzelnes Aroma dimension, dann haben Sie nur die
FLAVOR
konstant.Dies ist der einzige Weg, es zu tun, gerade jetzt.Eine Sache, die Sie tun können, ist zu automatisieren. So konnte man etwas wie das hier tun:
auf Diese Weise Sie nicht haben, um manuell tun es für jeden Geschmack.InformationsquelleAutor der Antwort Xavier Ducrohet
Akzeptierte Lösung ist genial. Für einige Fälle, ein Stellvertreter kann nützlich sein wenn.
Können Sie eine config-Datei, sagen Sie 'Appconfig.java" zu Ihrer productFlavor bestimmten Quell-Ordner, d.h.
src/<productflavor>/java/<packagename>/Appconfig.java
; Sie können dannAppconfig.PRODUCT_FLAVOR
in Ihrer app. Der compiler hält Sie ehrlich und stellen Sie sicher, Sie fügen Sie diese, für alle Geschmacksrichtungen.Wie gesagt, in diesem speziellen Fall die akzeptierte Lösung ist wahrscheinlich besser, da Sie nicht sogar brauchen, um hinzuzufügen, was für neue productFlavors aber dieser Ansatz kann nützlich sein, für andere Fälle.
InformationsquelleAutor der Antwort Saad Farooq