2014-07-09 10 views

risposta

26

nel file build.gradle, si dovrebbe cambiare/aggiungere buildTypes come questo:

buildTypes { 
     release { 
     signingConfig signingConfigs.release 
     applicationVariants.all { variant -> 
      def file = variant.outputFile 
      def date = new Date(); 
      def formattedDate = date.format('yyyyMMddHHmmss') 
      variant.outputFile = new File(
            file.parent, 
            file.name.replace("-release", "-" + formattedDate) 
            ) 
     } 
    }  
} 


====== EDIT con Studio Android 1.0 ======

Se utilizzano Android Studio 1.0, si otterrà un errore come questo:

Error:(78, 0) Could not find property 'outputFile' on com.and[email protected]67e7625f. 

si dovrebbe cambiare il build.Types parte a questo:

buildTypes { 
     release { 
      signingConfig signingConfigs.releaseConfig 
      applicationVariants.all { variant -> 
       variant.outputs.each { output -> 
        def date = new Date(); 
        def formattedDate = date.format('yyyyMMddHHmmss') 
        output.outputFile = new File(output.outputFile.parent, 
              output.outputFile.name.replace("-release", "-" + formattedDate) 
              ) 
       } 
      } 
     } 
    } 
+0

Avete qualche buon sito Web di tutorial su come utilizzare Gradle può essere fornito :)? – LoGary

+0

@LoGary http://tools.android.com/tech-docs/new-build-system/user-guide Questo è un buon sito per cominciare. E puoi sempre cercare su StackOverflow – Wesley

0

Si dovrebbe cambiare qualcosa di simile. Fare dinamicamente.

project.archivesBaseName = {app_name}{yyyymmddhis};

Ma ho letto che questo sta per essere deprecato.

La creazione di proprietà su richiesta (a.k.a. proprietà dinamiche) è stata dichiarata obsoleta e pianificata per essere rimossa in Gradle 2.0. Proprietà dinamica deprecata: "archivesBaseName" in "root project 'myapp'", valore: "AnotherName".

8

Come nota a margine, vorrei davvero sapere dove le persone si strutture oggetti di oggetti di build Gradle.

per costruire questo ho usato un po 'di tentativi ed errori, un po' di usare Google, e this (che non è aggiornato)

android { 
    ... 

    buildTypes { 
     debug { 
      signingConfig signingConfigs.debug 
     } 
     release { 
      signingConfig signingConfigs.release 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
     applicationVariants.all { variant -> 
      variant.outputs.each { output -> 
       def flavor = "default"; 
       if (variant.productFlavors.size() > 0) 
        flavor = variant.productFlavors.get(0); 

       def initials = "DefaultFlavor"; 
       if (flavor.name == "flavor1") 
        initials = "F1"; 
       else if (flavor.name == "flavor2") 
        initials = "F2"; 

       def build = "Debug"; 
       if (variant.buildType.name == "release") 
        build = "Release" 
       def finalName = variant.versionCode + "-" + initials + "-" + build + "-v" + flavor.versionName + "-MyAppName.apk"; 
       output.outputFile = new File(output.outputFile.parent, finalName) 
      } 
     } 
    } 
    ... 
} 

ok, così come nota a margine, se si desidera determinare i nomi del tuo progetto di libs qui è uno script veloce, assicurati di inserirlo in ciascuno dei tuoi file di build gradle della libreria.

android { 
    ... 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 16 
     versionCode 1 
     versionName "1.0.4" 
     project.version = versionName 
    } 

    libraryVariants.all { variant -> 
     variant.outputs.each { output -> 
      def outputFile = output.outputFile 
      if (outputFile != null && outputFile.name.endsWith('.aar')) { 
       def fileName = "${archivesBaseName}-v${version}.aar" 
       output.outputFile = new File(outputFile.parent, fileName) 
      } 
     } 
    } 

    ... 
} 
Problemi correlati