2015-09-08 13 views
7

Android studio wygeneruje domyślną nazwę apk jako app- (release | debug) .apk.
Jak wygenerować nazwę pliku APK tak samo jak nazwa pakietu aplikacji, np. com.example-debug.apk.Wygeneruj nazwę apk jako nazwę pakietu w Android Studio

+2

ten link może pomóc http://stackoverflow.com/questions/22126299/change-apk-name-with-gradle/22126638#22126638 –

+0

Powyższy link jest użyteczne –

Odpowiedz

4

spróbuj umieścić to w build.gradle modułu za

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

Dzięki za aktualizować swoją pracę. – Bangaram

+0

To tylko wypluwa jeden plik APK dla mnie i nie wypluwa pliku APK dla każdego wariantu kompilacji. – Subby

+0

Oczywiście, że nie, jeśli chcesz apk dla innego wariantu, najpierw musisz zmienić wariant kompilacji. Lub użyj polecenia, aby zbudować wszystkie wersje. Ten kod zmienia tylko nazwę apk, nic więcej. – slezadav

1

widać to link. lub Nielogiczna opcja zmiany nazwy release|debug.apk z nazwą, którą chcesz w przeglądarce plików.

ten kod może być przydatne dla Ciebie:

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

cieszyć kod :)

0

Utwórz plik o nazwie customname.gradle w głównym katalogu z project.Put ten kod do niego.

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

Następnie w Gradle swojej aplikacji modułu dodać ten kod

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

Można to zrobić bez użycia innego zadania, ustawiając archivesBaseName.

Na przykład:

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

    } 

wyjściowa:

MyName-1.0.12-release.apk 

W twoim przypadku:

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

Możesz mieć dostęp do nazwy rootProject i używać go w ten sposób: 'project.ext.set (" archivesBaseName ", rootProject.getName() + "-" + defaultConfig.versionName); ' –

+0

niestety nie skaluje się podczas pracy z wariantami, ponieważ archivesBaseName jest globalne dla wszystkich z nich – Ewoks

0

To może pomóc. Ten kod utworzy nazwę aplikacji, taką jak applicationId-release.apk lub applicationId-debug.apk, w której applicationId może być nazwą twojego pakietu.

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) 
     } 
    } 
} 
Powiązane problemy