Android Gradle build: переименование apk

Как я могу адаптировать мой build.gradle для изменения конечного базового имени apk (s)? (Без изменения суффиксов по умолчанию)

Solutions Collecting From Web of "Android Gradle build: переименование apk"

В Gradle 1.8, project.archivesBaseName работает, но он дает эту жалобу:

Создание свойств по требованию (иначе динамические свойства) устарело и планируется удалить в Gradle 2.0. Прочтите http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html информацию о замене динамических свойств. Устаревшее динамическое свойство: «archivesBaseName» в «корневом проекте» myapp », значение:« AnotherName ».

Чтобы избавиться от предупреждения (и чтобы избежать взлома сборки на Gradle 2.0), используйте это:

 project.ext.set("archivesBaseName", "AnotherName"); 

… как предложено в документации ExtraPropertiesExtension .

Обновление (Gradle plugin 1.1.0)

Плагин Android Gradle версии 1.1.0 представил ошибку, которая сломала archiveBaseName , как отметил friederbluemle . Но, к счастью, с тех пор это было исправлено (в версии 1.1.2 ).

Я нашел очень простое решение. Базовое имя apk – это свойство archivesBaseName определенное в проекте. Поэтому для переименования apks достаточно следующей строки:

 project.archivesBaseName = "AnotherName"; 

Начиная с версии 1.1.0 плагина Android Gradle, вы должны использовать

 archivesBaseName = "yourOtherName" 

Вместо project.ext.set("archivesBaseName", "yourOtherName") в build.gradle чтобы он работал.

Ниже было написано отлично для меня на v1.3.1 и только с APK:

 android { defaultConfig { archivesBaseName = "AnotherName" 

Опять же, это работает с плагином Android 1.3.1 (не 1.3.0), но нам все еще не удалось переименовать оба наших приложения (APK) и libs (AAR). Большая проблема, так как у нас есть 20+ проектная установка, где мы запираем, где развернутые двоичные файлы исходят, а не дублируют код в каждом подпроекте build.gradle.

Для нас работали:

Определите следующий метод (и плагин) в root build.gradle:

 ext.snapshotSuffix = "<sha>-<count>-SNAPSHOT" ext.nextVersion = "patch" apply plugin: 'com.cinnober.gradle.semver-git' def renameArtifact(variant) { variant.outputs.each { output -> def fullName = output.outputFile.name def projectName = fullName.substring(0, fullName.indexOf('-')) output.outputFile = new File( (String) output.outputFile.parent, (String) output.outputFile.name.replace(projectName, "drivecx-${projectName}-${project.version}")) } } 

Для приложений:

 apply plugin: 'com.android.application' android { ... // Rename all output artifacts to include version information applicationVariants.all { variant -> renameArtifact(variant) } } 

Для библиотек:

 apply plugin: 'com.android.library' android { ... // Rename all output artifacts to include version information libraryVariants.all { variant -> renameArtifact(variant) } } 

Теперь вы получаете несколько действительно хороших файлов с общим префиксом, именем проекта, git-describe-wth-sha1-buildflavor и расширением.

Пример OLD:

 androidauto-debug.apk 

НОВЫЙ пример:

 drivecx-androidauto-0.2.1-d1436b7-193-SNAPSHOT-debug.apk 

Бонус заключается в том, что он не переименовывает невыровненные апки.

Вы также можете переименовать подпроект (без переименования каталога), поместив в корневые settings.gradle :

 rootProject.children.each { it.name = ('app' == it.name ? 'MyAppName' : it.name) }