2016-01-22 5 views
14

Meine Gradle genannt Blicke auf eine Umgebungsvariable bauen BUILD_NUMBER bauen läuft die Version zu bestimmen, zu meinem Android-Anwendung zuordnen wie folgt:Wie kann ich in Android Studio eine Umgebungsvariable gesetzt, bevor es meine gradle

def buildNumber = System.getenv("BUILD_NUMBER") ?: "local" 

So solange die Umgebungsvariable gesetzt ist, wird die Build-Nummer in defaultConfig wie folgt verwendet:

versionName "1.4.0."+buildNumber 

Normalerweise rufen Jenkins diese Gradle bauen und die BUILD_NUMBER Umgebungsvariable liefern.

Wenn ich die Gradle bauen von meiner Eingabeaufforderung ausführen, ich weiß, ich BUILD_NUMBER = x einstellen.

Allerdings, wenn ich Android Studio bauen mit, Wie kann ich die BUILD_NUMBER Umgebungsvariable durch Android Studio selbst?

+0

Vielleicht hilft das: http://stackoverflow.com/questions/22605947/how-do-set-environment-variable-in-gradle-via-task –

+0

Danke, aber ich habe gelesen, dass Post und ein paar andere es mögen Leider muss jeder Entwickler in der Lage sein, seine eigene Build-Nummer für die lokale Umgebung festzulegen (er ändert sich, wenn es sich um einen offiziellen Build auf unserem CI-Server handelt). Daher möchte ich die Build-Nummer nicht in die Build-Datei selbst schreiben. – dleerob

Antwort

5

ich folgend in meinem build.gradle am Ende mit:

def buildNumber = System.getenv("BUILD_NUMBER") 
if (buildNumber == null) { 
    Properties properties = new Properties() 
    properties.load(project.rootProject.file('local.properties').newDataInputStream()) 
    buildNumber = properties.getProperty('buildNumber')?:"NoBuildNumberFound" 
} 

Da die local.properties Datei auf Ihre Quellcode-Repository begangen wird nicht angenommen wird, verwaltet jeder Entwickler ihre eigene Kopie.

Also, wenn sie die buildnumber auf ihrem lokalen Android Studio festlegen möchten, sie fügen Sie einfach folgendes ihre local.properties:

buildNumber=7 

So auf einem lokalen Entwickler-Maschine, wird die Build-Nummer gesetzt werden was auch immer sie in ihre local.properties Datei, sondern auf unsere Jenkins Server, wird die Umgebungsvariable BUILD_NUMBER

unser Jenkins Server setzt die BUILD_NUMBER Umgebungsvariable

10

Eine Möglichkeit ist die Verwendung von gradle Eigenschaften zu machen, die durch Umgebungsvariablen außer Kraft gesetzt werden kann. Sie können here darüber lesen.

Wenn die Umgebungsvariable Name sieht aus wie ORG_GRADLE_PROJECT _ prop = somevalue, dann Gradle eine Stütze Eigenschaft auf Ihrem Projektobjekt, mit dem Wert von somevalue festgelegt wird.

Was dies bedeutet, ist, dass man

  1. gesetzt BUILD_NUMBER=42 in Ihrem .properties-Datei (Projekt oder global), wie Sie normalerweise tun würde,
  2. und in Ihrem CI würden Sie die Umgebungsvariable nennen ORG_GRADLE_PROJECT_BUILD_NUMBER, Überschreiben oder Einstellung BUILD_NUMBER in Ihrem CI-Build.

Hinweis: Verwenden gradle.properties in Ihrem Projekt Stammverzeichnis, und ändern Sie nicht local.properties.

+0

Danke, das hat mir geholfen, zu meiner Lösung zu kommen. Leider werden die Eigenschaften in der Datei local.properties nicht automatisch in build.gradle zur Verfügung gestellt. Daher musste ich die Datei local.properties in meinem Skript build.gradle manuell lesen. – dleerob

+0

@dleerob Froh, dass ich helfen könnte. 'local.properties' werden generiert und verwendet von android studio/android plugin. Die "lokalen" Eigenschaften befinden sich in der Datei "gradle.properties" im Projektstammverzeichnis. Es ist verwirrend:/ –

-1

Diese nur Umgebungsvariable sind verwenden s.

Wenn unter Windows, gehen Sie zum Betriebssystem-Systemsteuerung und geben Sie "Umwelt" in das Suchfeld oben rechts ein. Klicken Sie dann auf "Umgebungsvariablen für Ihr Konto bearbeiten", sehr benutzerfreundlich und ohne Administratorrechte. Starten Sie das Android Studio nach der Bearbeitung neu.

Bearbeiten Sie unter Linux die Datei .bashrc in Ihrem Benutzerordner (vi ~/.bashrc oder mit einem anderen Editor). Umgebungsvariablen können dort eingestellt werden. source ~/.bashrc (oder Logout/Login) und starten Sie das Android Studio nach der Bearbeitung neu.

+0

Das ist richtig und funktioniert. Ich verstehe nicht, was du hier mit diesem Downvote sagen willst. – h22

Verwandte Themen