2015-09-08 18 views
7

Android studio, app- (release | debug) .apk olarak varsayılan apk adını üretecektir.
apk dosya adı, com.example-debug.apk gibi uygulamanın paket adıyla aynı şekilde nasıl oluşturulur. senin modülün build.gradle bu koyarakAndroid Studio'da paket adı olarak apk adı oluştur

+2

bu bağlantıyı http://stackoverflow.com/questions/22126299/change-apk-name-with-gradle/22126638#22126638 yardımcı olabilir –

+0

yukarıdaki bağlantı güncelleştirme onun çalışma için yararlı –

cevap

4

deneyin

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

teşekkürler olduğunu. – Bangaram

+0

Bu sadece benim için bir APK yayınlıyor ve her bir derleme varyantı için bir APK çıkarmıyor. – Subby

+0

Elbette, başka bir varyant için apk istiyorsanız, önce yapı varyantını değiştirmeniz gerekir. Veya tüm sürümleri oluşturmak için bir komut kullanın. Bu kod sadece apk'nin ismini değiştirir, başka bir şey değil. Terminalde './gradlew assemble' kullanan – slezadav

1

bu link görebilirsiniz. veya Mantıksız seçenek release|debug.apk dosya adında ne istediğinizi adlandırmak için yeniden adlandırın.

bu kodu sizin için yararlı olabilir:

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 { 
    } 
} 

kodunuzu :) keyfini

0

içine bu kodu project.Put üst düzey dizininde customname.gradle adlı bir dosya oluşturun.

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) 
}} 

Ardından uygulama modülünün gradle içinde archivesBaseName ayarı, başka görevleri kullanmadan bu kodu

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

Yapabilirsin ekleyin. Örneğin

:

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

    } 

Çıktı: Senin durumunda

MyName-1.0.12-release.apk 

:

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

için './gradlew assembleRelease' veya './gradlew assembleDebug' komutunu kullanabilirsiniz. RootProject adına erişebilir ve bu şekilde kullanabilirsiniz: "project.ext.set (" archivesBaseName "), rootProject.getName() + "-" + defaultConfig.versionName); ' –

+0

, ne yazık ki arşivler varyantlarıyla çalıştığınızda ölçeklenmiyorBaseName hepsi için global – Ewoks

0

Bu size yardımcı olabilir. Bu kod, uygulama adınızın paket adınız olabileceği applicationId-release.apk veya applicationId-debug.apk gibi uygulama adı oluşturacaktır.

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) 
     } 
    } 
} 
İlgili konular