what - onde fica o apk gerado no android studio




“App-release.apk” como alterar esse nome do apk gerado padrão (8)

Adicione o seguinte código em build.gradle (Módulo: app)

android {
    ......
    ......
    ......
    buildTypes {
        release {
            ......
            ......
            ......
            /*The is the code fot the template of release name*/
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def formattedDate = new Date().format('yyyy-MM-dd HH-mm')
                    def newName = "Your App Name " + formattedDate
                    output.outputFile = new File(output.outputFile.parent, newName)
                }
            }
        }
    }
}

E o nome da versão do release será Seu nome do aplicativo 2018-03-31 12-34

Sempre que eu gerar um apk assinado no Android Studio, por padrão, ele recebe o nome de app-release.apk ...

Podemos fazer as configurações para que ele solicite e me pergunte o nome que precisa ser atribuído ao apk (da mesma forma que no eclipse)

O que eu faço é - renomeie o apk depois que ele foi gerado. Isso não gera erros, mas existe alguma maneira genuína para que eu possa fazer alterações nas configurações para obter um prompt.

Nota::

ao gerar o apk, o android studio está me dando uma solicitação para selecionar o local (apenas)


Aqui está uma maneira muito mais curta:

defaultConfig {
    ...
    applicationId "com.blahblah.example"
    versionCode 1
    versionName "1.0"
    setProperty("archivesBaseName", applicationId + "-v" + versionCode + "(" + versionName + ")")
    //or so
    archivesBaseName = "$applicationId-v$versionCode($versionName)"
}

Ele fornece o nome com.blahblah.example-v1 (1.0) -debug.apk (no modo de depuração)

O Android Studio adiciona versionNameSuffix por nome do tipo de compilação por padrão; se você deseja substituir isso, faça o seguinte:

buildTypes {
    debug {
        ...
        versionNameSuffix "-MyNiceDebugModeName"
    }
    release {
        ...
    }
}

Saída no modo de depuração: com.blahblah.example-v1 (1.0) -MyNiceDebugModeName.apk


Eu escrevi uma solução mais universal com base na resposta @Fer.

Também deve funcionar com a configuração baseada em tipo e compilação de applicationId , versionName , versionCode .

No build.gradle:

android {
    ...
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def appId = variant.applicationId
            def versionName = variant.versionName
            def versionCode = variant.versionCode
            def flavorName = variant.flavorName // e. g. free
            def buildType = variant.buildType // e. g. debug
            def variantName = variant.name // e. g. freeDebug

            def apkName = appId + '_' + variantName + '_' + versionName + '_' + versionCode + '.apk';
            output.outputFile = new File(output.outputFile.parentFile, apkName)
        }
    }
}

Exemplo do nome do apk: com.example.app_freeDebug_1.0_1.apk

Para obter mais informações sobre variáveis variant , consulte BaseVariant interfaces BaseVariant e BaseVariant .


Modifiquei a resposta do @Abhishek Chaubey para alterar o nome completo do arquivo:

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        applicationVariants.all { variant ->
            variant.outputs.each { output ->
                project.ext { appName = 'MyAppName' }
                def formattedDate = new Date().format('yyyyMMddHHmmss')
                def newName = output.outputFile.name
                newName = newName.replace("app-", "$project.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 {
    }
}

Isso produz um nome de arquivo como: MyAppName-release20150519121617.apk


Primeiro renomeie seu módulo de app para ie SurveyApp

Segundo, adicione-o ao seu nível superior do projeto (projeto raiz). Está trabalhando com o Gradle 3.0

//rename apk for all sub projects
subprojects {
    afterEvaluate { project ->
        if (project.hasProperty("android")) {
            android.applicationVariants.all { variant ->
                variant.outputs.all {
                    outputFileName = "${project.name}-${variant.name}-${variant.versionName}.apk"
                }
            }
        }
    }
}

Você pode obter o erro com o mais recente plugin do Android Gradle ( 3.0 ):

Não é possível definir o valor da propriedade somente leitura 'outputFile'

De acordo com o guia de migração , devemos usar a seguinte abordagem agora:

applicationVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${applicationName}_${variant.buildType.name}_${defaultConfig.versionName}.apk"
    }
}

Nota 2 principais alterações aqui:

  1. all é usado agora, em vez de each para iterar sobre as saídas variantes.
  2. outputFileName propriedade outputFileName é usada em vez de alterar uma referência de arquivo.

(EDITADO para funcionar com o Android Studio 3.0 e Gradle 4)

Eu estava procurando por uma opção de renomeação de nome de arquivo apk mais complexa e escrevi esta solução que renomeia o apk com os seguintes dados:

  • sabor
  • tipo de construção
  • versão
  • encontro

Você obteria um apk como este: myProject_dev_debug_1.3.6_131016_1047.apk .

Você pode encontrar a resposta completa aqui . Espero que ajude!

No build.gradle:

android {

    ...

    buildTypes {
        release {
            minifyEnabled true
            ...
        }
        debug {
            minifyEnabled false
        }
    }

    productFlavors {
        prod {
            applicationId "com.feraguiba.myproject"
            versionCode 3
            versionName "1.2.0"
        }
        dev {
            applicationId "com.feraguiba.myproject.dev"
            versionCode 15
            versionName "1.3.6"
        }
    }

    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def project = "myProject"
            def SEP = "_"
            def flavor = variant.productFlavors[0].name
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def version = variant.versionName
            def date = new Date();
            def formattedDate = date.format('ddMMyy_HHmm')

            def newApkName = project + SEP + flavor + SEP + buildType + SEP + version + SEP + formattedDate + ".apk"

            outputFileName = new File(newApkName)
        }
    }
}

Minha solução também pode ser útil para alguém.

Testado e funciona no IntelliJ 2017.3.2 com Gradle 4.4

Cenário:

Eu tenho dois sabores no meu aplicativo e, portanto, queria que cada release fosse nomeado adequadamente de acordo com cada sabor.

O código abaixo será colocado no arquivo de construção do módulo, encontrado em:

{app-root}/app/build.gradle

Código Gradle a ser adicionado ao bloco android{ } :

android {
    // ...

    defaultConfig {
        versionCode 10
        versionName "1.2.3_build5"
    }

    buildTypes {
        // ...

        release {
            // ...

            applicationVariants.all { 
                variant.outputs.each { output ->
                    output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(output.outputFile.name, variant.flavorName + "-" + defaultConfig.versionName + "_v" + defaultConfig.versionCode + ".apk"))
                }
            }

        }
    }

    productFlavors {
        myspicyflavor {
            applicationIdSuffix ".MySpicyFlavor"
            signingConfig signingConfigs.debug
        }

        mystandardflavor {
            applicationIdSuffix ".MyStandardFlavor"
            signingConfig signingConfigs.config
        }
    }
}

A descrição acima fornece os seguintes APKs encontrados em {app-root}/app/ :

myspicyflavor-release-1.2.3_build5_v10.apk
mystandardflavor-release-1.2.3_build5_v10.apk

Espero que possa ser útil para alguém.

Para mais informações, consulte outras respostas mencionadas na pergunta





android-studio