Je n'ai qu'à changer le nom de la version à un seul endroit. Le code est également simple.
Les exemples ci-dessous créeront des fichiers apk nommés MyCompany-MyAppName-1.4.8-debug.apk ou MyCompany-MyAppName-1.4.8-release.apk en fonction de la variante de construction sélectionnée.
Notez que cette solution fonctionne à la fois sur les fichiers APK et sur les bundles d'applications (fichiers .aab) .
Voir aussi: Comment changer le nom du fichier de mappage proguard dans le projet gradle pour Android
Solution pour le plugin Gradle récent
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")
}
}
La solution ci-dessus a été testée avec les versions suivantes du plug-in Android Gradle:
- 3.5.2 (novembre 2019)
- 3.3.0 (janvier 2019)
- 3.1.0 (mars 2018)
- 3.0.1 (novembre 2017)
- 3.0.0 (octobre 2017)
- 2.3.2 (mai 2017)
- 2.3.1 (avril 2017)
- 2.3.0 (février 2017)
- 2.2.3 (décembre 2016)
- 2.2.2
- 2.2.0 (septembre 2016)
- 2.1.3 (août 2016)
- 2.1.2
- 2.0.0 (avril 2016)
- 1.5.0 (12/11/2015)
- 1.4.0-bêta6 (05/10/2015)
- 1.3.1 (11/08/2015)
Je mettrai à jour ce post au fur et à mesure que de nouvelles versions sortiront.
Solution testée uniquement sur les versions 1.1.3-1.3.0
La solution suivante a été testée avec les versions suivantes du plug-in Android Gradle:
fichier de gradle d'application:
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
au nom? Je sais que ce n'est pas vraiment lié à la configuration par défaut, mais j'essaie de comprendre comment supprimer l'variantOutput.getAssemble()
avertissement obsolèteCela a résolu mon problème: utiliser
applicationVariants.all
au lieu deapplicationVariants.each
Mettre à jour:
Il semble donc que cela ne fonctionne pas avec les versions 0.14+ du plugin android studio gradle.
Cela fait l'affaire (référence de cette question ):
la source
versionName
définie dansAndroidManifest.xml
au lieu de gradle? Ça me donnemyapp-release-null.apk
maintenant.each
enall
etoutput.outputFile
enoutputFileName
. Si quelqu'un confirme que cela fonctionne, il peut être modifié dans la réponse :)Error:(34, 0) Cannot set the value of read-only property 'name'
(MODIFIÉ pour fonctionner avec Android Studio 3.0 et Gradle 4)
Je cherchais une option de changement de nom de fichier apk plus complexe et j'ai écrit celle-ci dans l'espoir qu'elle soit utile pour quelqu'un d'autre. Il renomme l'apk avec les données suivantes:
Il m'a fallu un peu de recherche dans les classes Gradle et un peu de copier / coller d'autres réponses. J'utilise gradle 3.1.3 .
Dans le build.gradle:
Si vous compilez aujourd'hui (13-10-2016) à 10:47, vous obtenez les noms de fichiers suivants en fonction de la saveur et du type de construction que vous avez choisis:
Remarque: le nom apk de la version non alignée est toujours celui par défaut.
la source
each
enall
etoutput.outputFile
enoutputFileName
" - cet article fournit quelques détails à ce sujet: stackoverflow.com/a/44265374/2162226Pour résumer, pour ceux qui ne savent pas comment importer un package dans
build.gradle
(comme moi), utilisez ce qui suitbuildTypes
,===== MODIFIER =====
Si vous définissez votre
versionCode
etversionName
dans votrebuild.gradle
fichier comme ceci:Vous devriez le définir comme ceci:
====== MODIFIER avec Android Studio 1.0 ======
Si vous utilisez Android Studio 1.0, vous obtiendrez une erreur comme celle-ci:
Vous devriez changer la
build.Types
pièce en ceci:la source
Si vous ne spécifiez pas versionName dans le bloc defaultConfig,
defaultConfig.versionName
cela entraîneranull
pour obtenir versionName à partir du manifeste, vous pouvez écrire le code suivant dans build.gradle:
la source
Dans mon cas, je voulais juste trouver un moyen d'automatiser la génération de différents
apk
nomsrelease
etdebug
variantes. J'ai réussi à le faire facilement en mettant cet extrait de code en tant qu'enfant deandroid
:Pour le nouveau plugin Android gradle 3.0.0, vous pouvez faire quelque chose comme ça:
Cela produit quelque chose comme:
My_nice_name_3.2.31_dbg.apk
la source
Une autre alternative consiste à utiliser ce qui suit:
Cela définira "appname-1.0.0" sur toutes vos sorties apk.
la source
No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
6e année et plus
J'utilise maintenant ce qui suit dans Android Studio 4.0 et Gradle 6.4:
Gradle 4
La syntaxe a un peu changé dans Gradle 4 (Android Studio 3+) (de
output.outputFile
àoutputFileName
, l'idée de cette réponse est maintenant:la source
La bonne façon de renommer apk, selon @Jon answer
Ou une autre façon d'obtenir les mêmes résultats avec
la source
Il existe de nombreuses réponses correctes soit dans leur intégralité, soit après quelques modifications. Mais je vais quand même ajouter le mien car j'avais le problème avec tous parce que j'utilisais des scripts pour générer dynamiquement VersionName et VersionCode en m'accrochant à la
preBuild
tâche.Si vous utilisez une approche similaire, c'est le code qui fonctionnera:
Pour expliquer: Puisque je remplace le code et le nom de la version dans la première action de,
preBuild
je dois ajouter le changement de nom du fichier à la fin de cette tâche. Donc ce que gradle fera dans ce cas est:Injecter le code / le nom de la version-> faire des actions de pré-construction -> remplacer le nom pour apk
la source
la source
Dans mon cas, je résous cette erreur de cette façon
ajouter un SUFFIXE à la version de débogage, dans ce cas j'ajoute le texte "-DEBUG" à mon déploiement de débogage
la source
versionNameSuffix
basé sur la branche GIT? Par exemple, si ce n'est pas sur "master", ayez toujours un suffixe, même s'il s'agit d'une versionPour les dernières versions de Gradle, vous pouvez utiliser l'extrait suivant:
Définissez d'abord l'emplacement du manifeste de votre application
Et plus tard dans build.gradle
Ajustez si vous avez différents manifestes par type de build. mais depuis que j'ai le seul - fonctionne parfaitement pour moi.
la source
Depuis Android Studio 1.1.0, j'ai trouvé que cette combinaison fonctionnait dans le corps Android du
build.gradle
fichier. C'est si vous ne pouvez pas comprendre comment importer les données du fichier manifeste xml. J'aimerais qu'il soit plus pris en charge par Android Studio, mais jouez simplement avec les valeurs jusqu'à ce que vous obteniez la sortie de nom apk souhaitée:la source