Android con Gradle Release plugin

Voglio utilizzare il plugin di rilascio di Gradle nel Android Project .

L'ho configurato e tutto va bene, tranne una cosa:

  • Firebase Android: Come leggere da diversi riferimenti in sequenza
  • Come cambiare la faccia del carattere di Webview in Android?
  • Utilizzo di Android ReceachzerIntent con un auricolare Bluetooth
  • Quali versioni di Android supportno quali algoritmi di firma dei pacchetti?
  • formato audio per iOS e Android
  • L'applicazione Facebook è pubblica, ma fornisce l'errore "App non l'installazione" quando accede
  • Gradle Release Plugin cambia la versione di progetto nel file gradle.properties in una delle sue attività, ma questa modifica non influenza la versione di Android Project's , in quanto, come ho trovato, con l'utilizzo di println() gradi l'initialization prima di eseguire qualsiasi attività.

    C'è un modo per modificare il nome di versione di Android Project in qualche task di gradle dopo che è stato inizializzato?

    Ecco una parte del mio build.gradle

     android { compileSdkVersion 19 buildToolsVersion '19.1.0' defaultConfig { minSdkVersion 14 targetSdkVersion 19 versionCode 213 versionName version // to change it, please visit gradle.properties file println('Project version: ' + version) // this line executed BEFORE any gradle task :( } ... } 

    Posso vedere solo una soluzione: esecuzioni diverse gradel

    1. Cambierà la versione in gradle.properties
    2. Esegue il process di build, ma questo è un problema di soluzione particolarmente per il Gradle Release Plugin

  • Documentazione per l'elemento aapt in script Ant
  • Android: Aggiorna Listview dopo Thread carica i dati dalla networking
  • Collegamento attivo di URL di url in TextView
  • Come informare gli utenti di un aggiornamento di Android App?
  • Come applicare gli effetti alle immagini delle telecamere?
  • L'image errata viene visualizzata nelle righe di ListView
  • 3 Solutions collect form web for “Android con Gradle Release plugin”

    Dalla versione 2.1.0 il plugin di rilascio gradle sta eseguendo la build in un process separato. Ciò garantisce che la versione sia corretta durante il process di generazione e per tutti gli altri plugin che si affidano alla versione impostata dall'inizio.

    2.1.0

    COMUNE: Rifattura il process di generazione durante il rilascio per eseguire in un process separato. Ciò auspicherà risolvere tutti i problemi con alcuni altri plugin come il nuovo maven-publish o il plugin bintray.

    COMUNE: Aggiunto prima il hookReleaseBuild e afterReleaseBuild, entrambi eseguiti nello stesso process della build stessa.

    vedere il changelog completo

    Inserire queste funzioni nel build.gradle

     task('increaseVersionCode') << { def manifestFile = file("src/main/AndroidManifest.xml") def pattern = Pattern.compile("versionCode=\"(\\d+)\"") def manifestText = manifestFile.getText() def matcher = pattern.matcher(manifestText) matcher.find() def versionCode = Integer.parseInt(matcher.group(1)) def manifestContent = matcher.replaceAll("versionCode=\"" + ++versionCode + "\"") manifestFile.write(manifestContent) } task('incrementVersionName') << { def manifestFile = file("src/main/AndroidManifest.xml") def patternVersionNumber = Pattern.compile("versionName=\"(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)\"") def manifestText = manifestFile.getText() def matcherVersionNumber = patternVersionNumber.matcher(manifestText) matcherVersionNumber.find() def majorVersion = Integer.parseInt(matcherVersionNumber.group(1)) def minorVersion = Integer.parseInt(matcherVersionNumber.group(2)) def pointVersion = Integer.parseInt(matcherVersionNumber.group(3)) def buildVersion = Integer.parseInt(matcherVersionNumber.group(4)) def mNextVersionName = majorVersion + "." + minorVersion + "." + pointVersion + "." + (buildVersion + 1) def manifestContent = matcherVersionNumber.replaceAll("versionName=\"" + mNextVersionName + "\"") manifestFile.write(manifestContent) } tasks.whenTaskAdded { task -> if (task.name == 'generateReleaseBuildConfig') { task.dependsOn 'increaseVersionCode' task.dependsOn 'incrementVersionName' } } 

    Disclaimer: Ho creato questo aspetto.

    Il concetto completo. https://gist.github.com/ascariandrea/9991499

    Ecco una soluzione che ho usato che divide l'esecuzione di attività in esecuzioni a più gradi. Funziona per svn ma può essere adattato:

    https://stackoverflow.com/a/26659974/256770

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.