Eu só tenho que mudar o nome da versão em um só lugar. O código também é simples.
Os exemplos abaixo criarão arquivos apk chamados MyCompany-MyAppName-1.4.8-debug.apk ou MyCompany-MyAppName-1.4.8-release.apk, dependendo da variante de compilação selecionada.
Observe que esta solução funciona nos pacotes APK e App (arquivos .aab) .
Consulte também: Como alterar o nome do arquivo de mapeamento proguard em gradle para o projeto Android
Solução para o plugin Gradle recente
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.company.app"
minSdkVersion 13
targetSdkVersion 21
versionCode 14 // increment with every release
versionName '1.4.8' // change with every release
setProperty("archivesBaseName", "MyCompany-MyAppName-$versionName")
}
}
A solução acima foi testada com as seguintes versões do Android Gradle Plugin:
- 3.5.2 (novembro de 2019)
- 3.3.0 (janeiro de 2019)
- 3.1.0 (março de 2018)
- 3.0.1 (novembro de 2017)
- 3.0.0 (outubro de 2017)
- 2.3.2 (maio de 2017)
- 2.3.1 (abril de 2017)
- 2.3.0 (fevereiro de 2017)
- 2.2.3 (dezembro de 2016)
- 2.2.2
- 2.2.0 (setembro de 2016)
- 2.1.3 (agosto de 2016)
- 2.1.2
- 2.0.0 (abril de 2016)
- 1.5.0 (12/11/2015)
- 1.4.0-beta6 (05/10/2015)
- 1.3.1 (11/08/2015)
Vou atualizar este post à medida que novas versões forem lançadas.
Solução testada apenas nas versões 1.1.3-1.3.0
A solução a seguir foi testada com as seguintes versões do Android Gradle Plugin:
arquivo gradle do aplicativo:
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.company.app"
minSdkVersion 13
targetSdkVersion 21
versionCode 14 // increment with every release
versionName '1.4.8' // change with every release
archivesBaseName = "MyCompany-MyAppName-$versionName"
}
}
variant.buildType.name
ao nome? Eu sei que isso não configuração realmente padrão é relacionado, mas eu estou tentando descobrir como remover o obsoletovariantOutput.getAssemble()
avisoIsso resolveu meu problema: usar em
applicationVariants.all
vez deapplicationVariants.each
Atualizar:
Parece que isso não funciona com as versões 0.14+ do plugin android studio gradle.
Isso faz o truque (referência desta pergunta ):
fonte
versionName
definida emAndroidManifest.xml
vez de gradle? Isso me dámyapp-release-null.apk
agora.each
paraall
eoutput.outputFile
paraoutputFileName
. Se alguém confims funciona este pode ser editado na resposta :)Error:(34, 0) Cannot set the value of read-only property 'name'
(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 na esperança de que seja útil para qualquer outra pessoa. Renomeia o apk com os seguintes dados:
Levei um pouco de pesquisa nas aulas de graduação e um pouco de copiar / colar de outras respostas. Estou usando o gradle 3.1.3 .
No build.gradle:
Se você compilar hoje (13-10-2016) às 10:47, obterá os seguintes nomes de arquivo, dependendo do tipo e tipo de construção que você escolheu:
Nota: o nome do apk da versão desalinhada ainda é o nome padrão.
fonte
each
paraall
eoutput.outputFile
paraoutputFileName
" - esta postagem fornece alguns detalhes sobre isso: stackoverflow.com/a/44265374/2162226Para resumir, para quem não sabe importar pacote
build.gradle
(como eu), use o seguintebuildTypes
,===== EDIT =====
Se você definir seu
versionCode
eversionName
em seubuild.gradle
arquivo assim:Você deve configurá-lo assim:
====== EDITAR com o Android Studio 1.0 ======
Se você estiver usando o Android Studio 1.0, você receberá um erro como este:
Você deve alterar a
build.Types
parte para isso:fonte
Se você não especificar versionName no bloco defaultConfig,
defaultConfig.versionName
resultará emnull
Para obter versionName do manifesto, você pode escrever o seguinte código em build.gradle:
fonte
No meu caso, eu só queria encontrar uma maneira de automatizar a geração de
apk
nomesrelease
edebug
variantes diferentes. Consegui fazer isso facilmente colocando esse snippet como filho deandroid
:Para o novo Android gradle plugin 3.0.0, você pode fazer algo assim:
Isso produz algo como:
My_nice_name_3.2.31_dbg.apk
fonte
Outra alternativa é usar o seguinte:
Isso definirá "appname-1.0.0" para todas as suas saídas apk.
fonte
No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
Gradle 6+
Agora estou usando o seguinte no Android Studio 4.0 e Gradle 6.4:
Gradle 4
A sintaxe mudou um pouco no Gradle 4 (Android Studio 3+) (de
output.outputFile
paraoutputFileName
, a idéia desta resposta agora é:fonte
A maneira certa de renomear o apk, de acordo com a resposta do @Jon
Ou outra maneira de obter os mesmos resultados com
fonte
Existem muitas respostas corretas na íntegra ou após algumas modificações. Mas vou adicionar o meu de qualquer maneira, pois estava tendo o problema com todos eles porque estava usando scripts para gerar VersionName e VersionCode dinamicamente, conectando-me à
preBuild
tarefa.Se você estiver usando alguma abordagem semelhante, este é o código que funcionará:
Para explicar: Como estou substituindo o código e o nome da versão na primeira ação de
preBuild
, tenho que adicionar o arquivo renomeado ao final desta tarefa. Então, o que o gradle fará neste caso é:Injetar código de versão / nome-> executar ações de pré-construção -> substituir nome para apk
fonte
fonte
No meu caso, resolvo esse erro dessa maneira
adicionando um SUFIXO à versão Debug, neste caso, adicionando o texto "-DEBUG" à minha implantação de Debug
fonte
versionNameSuffix
base no ramo GIT? Por exemplo, se não estiver no "master", sempre tenha um sufixo, mesmo que seja uma versão de lançamentoPara as versões mais recentes do gradle, você pode usar o seguinte snippet:
Defina primeiro o local do manifesto do aplicativo
E mais tarde no build.gradle
Ajuste se você tiver manifestos diferentes por tipo de construção. mas desde que eu tenho o single - funciona perfeitamente para mim.
fonte
No Android Studio 1.1.0, encontrei essa combinação no corpo do arquivo android
build.gradle
. Isto é, se você não conseguir descobrir como importar os dados do arquivo xml do manifesto. Eu gostaria que fosse mais suportado pelo Android Studio, mas brinque com os valores até obter a saída desejada do nome do apk:fonte