2015-02-13 7 views

Antwort

62

ich ein ähnliches Problem aufgetreten, aber wollte nicht die version modifizieren, um die git schließen Hash. Wir wollten das als etwas wie 1.2.2 behalten, haben aber immer noch die Möglichkeit, den Git-Hash in der Benutzeroberfläche anzuzeigen.

Ich habe den Code von the other answer here geändert, um mithilfe der buildConfigField-Task einen BuildConfig.GitHash-Wert zu generieren, auf den im Java-Code verwiesen werden kann.

Fügen Sie diese über dem android Abschnitt build.gradle-Datei des Moduls:

def getGitHash = { -> 
    def stdout = new ByteArrayOutputStream() 
    exec { 
     commandLine 'git', 'rev-parse', '--short', 'HEAD' 
     standardOutput = stdout 
    } 
    return stdout.toString().trim() 
} 

dann die folgende Zeile in dem defaultConfig Schnitt des Abschnitts des build.gradle android hinzufügen, das heißt unter versionName:

buildConfigField "String", "GitHash", "\"${getGitHash()}\"" 

Dies erzeugt die folgende Zeile in der automatisch generierte BuildConfig.java Datei:

// Fields from default config. 
public static final String GitHash = "e61af97"; 

Jetzt können Sie den Git-Hash in Ihrem Java-Code mit BuildConfig.GitHash erhalten.

+0

HI, bekomme ich das Error: CreateProcess error = 2, Das System kann die angegebene Datei nicht finden ,, irgendwelche Leads meine Co-Debase ist auf GitLabs – Haroon

+0

@Haroon: Überprüfen Sie, ob der Pfad zu Git in Ihrer PATH-Umgebungsvariable ist . Überprüfen Sie dies, indem Sie eine neue Eingabeaufforderung/Terminal öffnen und "git --version" eingeben – Paul

+0

Dank @Paul genau das, was Sie geschrieben haben, tat ich, machte nur die Git zur Umgebungsvariable – Haroon

6

Eine ideale Lösung könnte die Version aus dem git Status des Projekts werden sich ziehen. Auf diese Weise verlässt sich die Versionierung nicht darauf, dass Sie sich daran erinnern, eine Variable zu erhöhen oder irgendeinen Text in den Gradle- oder Konfigurationsdateien zu ändern.

Sie können ein anschauliches Beispiel in http://ryanharter.com/blog/2013/07/30/automatic-versioning-with-git-and-gradle/

Die Idee ist immer die git Info mit der getVersionName Funktion, finden und diese Funktion im gradle Skript verwenden.

Ein weiterer Ansatz (basierend auch die Versionsinfos von git in immer) könnte dieser sein, als gradle Plugin: https://github.com/GeoNet/gradle-build-version-plugin

+2

Willkommen bei StackOverflow. Danke für deine Antwort! Dies ist ein guter Anfang, aber wenn Sie auch ein bisschen mehr Informationen von diesen Links in den Körper Ihrer Antwort enthalten (wenn es möglich ist, die Schlüsselinformationen hier zu destillieren), würde es Ihre Antwort noch besser machen.Denken Sie daran, dass, wenn alle Informationen in dem Link, aber nicht hier sind, Ihre Antwort ihren Wert verliert, wenn sich der Link ändert. –

4

Wenn Sie id nach version anhängen wollen verpflichten, sieht aus wie 1111-abcdefg

unten in Ihrer Anwendung hinzufügen/build.gradle über dem Android-Abschnitt (nicht die Wurzel build.gradle)

def getVersionName = { -> 
def stdout = new ByteArrayOutputStream() 
exec { 
commandLine 'git', 'rev-parse', '--short' , 'HEAD' 
standardOutput = stdout 
} 
return stdout.toString().trim() 
} 

unten in android hinzufügen {defaultConfig {HIER}}

versionNameSuffix '-'+getVersionName() 
0

auch wert auf grgit - Groovy/Gradle Git suchen, die Extraktion von Informationen vereinfachen können, einschließlich Git comm Es-Hashes, in einem Gradle-Skript.