Per Android-Gradle Umgebung bauen:Individuellen Aktiv Geschmack spezifische gradle Aufgabe, die in Build-Prozess
ich zur Zeit meine Version-Code und Version Namen von einem lokalen version.properties Datei über eine "readVersions" gradle Aufgabe lesen. Ich bin dabei, meiner App Aromen hinzuzufügen. Diese Aromen würden verschiedene Versionen benötigen. Also habe ich darüber nachgedacht, zwei verschiedene version.properties-Dateien in geschmacksspezifische Verzeichnisse (z. B. one/version.properties, zwei/version.properties) neben den geschmacksspezifischen "res" - und "src" -Verzeichnissen zu setzen.
Ich habe eine readVersions Aufgabe:
task readVersions() {
def Properties versionProps = new Properties()
def versionPropsFile = file('version.properties')
if (versionPropsFile.exists())
versionProps.load(new FileInputStream(versionPropsFile))
def v_code = (versionProps['VERSION_CODE'] ?: "0").toInteger()
def v_name = versionProps['VERSION_NAME']
// Set
versionCode v_code
versionName v_name
}
project.afterEvaluate {
preBuild.dependsOn readVersions
}
Ich mag eine neue readVersions Aufgabe haben, die den Geschmack enthält, so dass ich es beim Zugriff auf die „version.properties“ Datei im „Geschmack“ verwenden kann, Verzeichnis.
Ich habe versucht:
android.productFlavors.all{ flavor ->
task ("${flavor.name}_readVersions")<<{
def versionPropsFile = file(flavor.name+'/version.properties')
...
Aber dann weiß ich nicht, wie nur der aktiven Geschmack bekommen die Aufgabe während der „Prebuild“ Schritt auszuführen.
Konzeptionell möchte ich dies:
project.afterEvaluate {
preBuild.dependsOn ${active_flavor}_readVersions
}
Denen, die einfacher Lösungen empfehlen reorganisieren und zu finden. Mein Buildprozess hat derzeit andere Abhängigkeiten von diesen version.properties-Dateien. Ich könnte definieren nur den Versionscode und Versionsnamen an zwei Stellen (zB in dem „Geschmack“ sowie innerhalb eines version.properties Datei Geschmacks, aber ich wirklich will DRY configs)
Es gibt keinen "aktiven Geschmack". Ihre Datei 'build.gradle' erstellt Ihre App nicht. Ihre Datei 'build.gradle' erstellt ein Objektmodell von * how * zum Erstellen Ihrer App. Erstellt Abarbeitung des Objektmodells. Sie müssen für beide Varianten "dependsOn" verwenden, wobei die entsprechenden geschmackspezifischen Aufgaben von Ihren benutzerdefinierten geschmackspezifischen Aufgaben abhängen. – CommonsWare
Ja, das verstehe ich. Deshalb habe ich versucht, diesen Teil in meinem "konzeptuellen" Deskriptor zu betonen. Verstehst du, was ich versuche zu tun? Weißt du, wie man ein Objektmodell baut, das das erreicht, was ich versuche? Ich kann versuchen, mein Ziel weiter zu definieren, wenn nicht. – FishStix
Ich zögere, eine Reihe von benutzerdefinierten "dependsOn" für Aromen zu erstellen, wobei die entsprechenden geschmacksspezifischen Aufgaben von Ihren benutzerdefinierten geschmacksspezifischen Aufgaben abhängen. Was passiert, wenn ich 10 oder 20 Geschmacksrichtungen bekomme? Ich möchte nur die lokale Version Code/Name aus der Datei $ {flavour.name} /version.properties greifen. Benötige ich wirklich 20 benutzerdefinierte Aufgaben, um dies zu erreichen? – FishStix