Ho un file build.gradle nella mia app androide con queste impostazioni:Override Android Gradle forma versionCode riga di comando
android {
...
defaultConfig {
applicationId "some.app.id"
versionName '1.2'
versionCode 3
...
}
...
}
mio AndroidManifest.xml non contiene versionCode e non contengono versionName.
Ora voglio creare questa app su Jenkins e passare BUILD_NUMBER come versionCode per app, in modo che ogni build abbia una versione superiore.
Così nel lavoro che hava una chiamata:
./gradlew -PversionCode=$BUILD_NUMBER clean build
Quando uso "versionCode" rinominare "app-release.apk" valore versionCode è lo stesso che è passato da riga di comando:
applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace("app-release.apk", "MyApp_" + "_v" + versionName + "." + versionCode + ".apk"))
}
}
Sommario
quindi ho un valore predefinito di "versionCode" impostato su 3, ma quando si costruisce sul Jenkins voglio ignorare dal comando linea.
Il problema
Il problema è che in AndroidManifest all'interno accumulo .apk applicazione è versionCode impostato a 3 invece di valore da BUILD_NUMBER. ho controllato con "discarica aapt badging"
La domanda
Può questo valore "versionCode" dal defaultconfig android essere sovrascritte dal parametro di riga di comando?
lo so, potrei usare una funzione come spiegato in: http://robertomurray.co.uk/blog/2013/gradle-android-inject-version-code-from-command-line-parameter/ ma io preferisco il modo più pulito di semplice sostituzione, ma non posso farlo funzionare.
Oh, andiamo ... dovrebbe essere ovvio ... 'versionCode' param non è uguale a' andro id.defaultConfig.versionCode' ... usa 'versionCode versionCode' invece' versionCode 3' (non so se funzionerebbe, se no, poi leggere come usare i parametri del progetto) ...modifica: anche il modo in cui il link è più pulito – Selvin
@Selvin Sto postando su StackOverflow dopo 2 giorni di ricerche e provando diverse versioni di parametri, quindi ho fatto alcuni dei miei compiti :) Se nessuno usa versionCode come ho descritto, allora forse non funzionerà. Ma sto guardando qualcuno che ha provato questo e forse ha più fortuna di me. – ljader
... e? Non ho detto che non hai cercato .. link sembra bello e, nei tuoi panni, lo userei ... ti punto solo che non è la stessa variabile ... quello dalla linea di comando è un variabile di progetto e android.defaultConfig.versionCode è in una classe diversa ... hai provato 'versionCode versionCode' o' versionCode project.versionCode'? – Selvin