2013-11-01 18 views
18

Desidero modificare il nome della versione per i sapori dell'app ma solo se è una build di debug.Android - modifica il nome della versione di sapore in base al tipo di build

(ad esempio, le versioni di debug avranno versioni come 1.0.1 D (DEBUG) 555 o 1.0.1 P (DEBUG) 555, tuttavia voglio che le versioni di build abbiano solo la versione 1.0.1) Come posso ottenere Questo?

Fondamentalmente ho questi costruiscono tipi:

buildTypes { 


    debug { 
     versionNameSuffix " (DEBUG) " + mBuild 

    } 
    release { 
     runProguard true 
     proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), file('proguard-project.txt') 
     signingConfig signingConfigs.release 
    } 
} 

e questi sapori (per l'ambiente api diversa):

productFlavors { 
    dev { 
     versionName = android.defaultConfig.versionName + " D" 
    } 
    prod { 
     versionName = android.defaultConfig.versionName + " P" 
    } 
} 

Esiste un modo come fare build di rilascio senza cambiare i sapori dei prodotti versione nome ?

Ho cercato di impostare il nome della versione in modo dinamico tramite

buildTypes.each { buildType -> 
    if(buildType.name == 'debug') { 
     productFlavors.dev.versionName = android.defaultConfig.versionName + " D" 
    } 
} 

ma questo si traduce in

Impossibile trovare immobili 'dev' sul contenitore GroupableProductFlavorDsl.

+0

Accetta la propria risposta, per favore. Quindi è chiaro per la comunità, che il problema è stato risolto. –

+0

"Puoi accettare la tua risposta domani" – martinpelant

risposta

29

Dopo ore di ricerca sono riuscito a rimuovere tutte le modifiche apportate al nome della versione per il build di rilascio utilizzando questo codice

applicationVariants.all { variant -> 
    if (variant.buildType.name == 'release') { 
     variant.mergedFlavor.versionName = android.defaultConfig.versionName; 
    } 
} 
+0

questa notazione (android.defaultConfig.versionName) ha funzionato per me fino ad oggi ho aggiornato da AndroidStudio 0.5.5 a 0.8.1. Qualche idea su cosa dovrebbe essere usato ora? – Gavriel

+2

I ottenere un errore '' Impossibile trovare la proprietà 'applicationVariants' nel progetto: ... ' – Alf

+2

usa applicationVariants.each invece di applicationVariants.all – San

3

Build Type deve ignorare lo Product Flavor. Prova il prossimo.

buildTypes { 

    release { 
     versionName = android.defaultConfig.versionName 
    } 
} 
+5

L'ho già provato. Il problema è che il tipo di build non ha la proprietà versionName, solo versionNameSuffix. Il codice sopra riportato in 'Creazione di proprietà su richiesta (a.k.a. proprietà dinamiche) è stato de .0. Si prega di leggere http://gradle.org/docs/current/dsl/org.gradle.api.plu sulla sostituzione delle proprietà dinamiche. Proprietà dinamica deprecata: "versionName" su "BuildTypeDsl_Decorated" – martinpelant

Problemi correlati