2015-09-08 19 views
7

Android studio genererà il nome apk predefinito come app- (release | debug) .apk.
Come generare il nome del file apk uguale al nome del pacchetto dell'app come com.example-debug.apk.Genera nome apk come nome del pacchetto in Android Studio

+2

questo collegamento può aiutare http://stackoverflow.com/questions/22126299/change-apk-name-with-gradle/22126638#22126638 –

+0

il collegamento precedente è utile –

risposta

4

provare a mettere questo in build.gradle del modulo

applicationVariants.all { variant -> 
    variant.outputs.each { output -> 
     def file = output.outputFile 
     def appId = android.defaultConfig.applicationId 
     def fileName = appId + "-" variant.buildType.name +".apk" 
     output.outputFile = new File(file.parent, fileName) 
    } 
} 
+0

Grazie per l'aggiornamento suo funzionamento. – Bangaram

+0

Questo sputa solo un APK per me e non sputa un APK per ogni variante di build. – Subby

+0

Ovviamente no, se vuoi l'apk per un'altra variante, devi prima modificare la variante di build. Oppure usa un comando per costruire tutte le versioni. Questo codice cambia solo il nome dell'apk, niente di più. – slezadav

1

si può vedere questo link. o opzione illogica per rinominare il tuo release|debug.apk con nome quello che vuoi nel browser di file.

questo codice può essere utile per voi:

buildTypes { 
release { 
    minifyEnabled false 
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      def formattedDate = new Date().format('yyyyMMddHHmmss') 
      def newName = output.outputFile.name 
      newName = newName.replace("app-", "$rootProject.ext.appName-") //"MyAppName" -> I set my app variables in the root project 
      newName = newName.replace("-release", "-release" + formattedDate) 
      //noinspection GroovyAssignabilityCheck 
      output.outputFile = new File(output.outputFile.parent, newName) 
     } 
    } 
} 
    debug { 
    } 
} 

godono il codice :)

0

Creare un file denominato customname.gradle nel livello di directory superiore del project.Put questo codice in esso.

android.applicationVariants.all { variant ->; 
def appName 
//Check if an applicationName property is supplied; if not use the name of the parent project. 
if (project.hasProperty("applicationName")) { 
    appName = applicationName 
} else { 
    appName = parent.name 
} 

variant.outputs.each { output ->; 
    def newApkName 
    //If there's no ZipAlign task it means that our artifact will be unaligned and we need to mark it as such. 
    if (output.zipAlign) { 
     newApkName = "${appName}-${output.baseName}-${variant.versionName}.apk" 
    } else { 
     newApkName = "${appName}-${output.baseName}-${variant.versionName}-unaligned.apk" 
    } 
    output.outputFile = new File(output.outputFile.parent, newApkName) 
}} 

Poi, nel Gradle del modulo App Aggiungi questo codice

apply from: "../customname.gradle" 
15

È possibile farlo senza usare altri compiti, l'impostazione del archivesBaseName.

Ad esempio:

defaultConfig { 
     .... 
     project.ext.set("archivesBaseName", "MyName-" + defaultConfig.versionName); 

    } 

uscita:

MyName-1.0.12-release.apk 

Nel tuo caso:

project.ext.set("archivesBaseName", "com.example"); 
+0

Potresti essere in grado di accedere al nome rootProject e usarlo in questo modo: 'project.ext.set (" archivesBaseName ", rootProject.getName() + "-" + defaultConfig.versionName); ' –

+0

sfortunatamente non si scala quando si lavora con varianti come archivi. NomeBase è globale per tutti loro – Ewoks

0

Questo può aiutare. Questo codice creerà il nome dell'app come applicationId-release.apk o applicationId-debug.apk in cui applicationId può essere il nome del pacchetto.

buildTypes { 

    applicationVariants.all { variant -> 
     variant.outputs.each { output -> 
      def newName = output.outputFile.name 
      newName = newName.replace("app-", applicationId) 
      output.outputFile = new File(output.outputFile.parent, newName) 
     } 
    } 
} 
Problemi correlati