Мне нужно только изменить название версии в одном месте. Код тоже прост.
В приведенных ниже примерах будут создаваться файлы apk с именем MyCompany-MyAppName-1.4.8-debug.apk или MyCompany-MyAppName-1.4.8-release.apk в зависимости от выбранного варианта сборки.
Обратите внимание, что это решение работает как с APK, так и с пакетами приложений (файлы .aab) .
См. Также: Как изменить имя файла отображения Proguard в Gradle для проекта Android
Решение для недавних плагинов Gradle
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")
}
}
Вышеупомянутое решение было протестировано со следующими версиями плагина Android Gradle:
- 3.5.2 (ноябрь 2019 г.)
- 3.3.0 (январь 2019 г.)
- 3.1.0 (март 2018 г.)
- 3.0.1 (ноябрь 2017 г.)
- 3.0.0 (октябрь 2017 г.)
- 2.3.2 (май 2017 г.)
- 2.3.1 (апрель 2017 г.)
- 2.3.0 (февраль 2017 г.)
- 2.2.3 (декабрь 2016 г.)
- 2.2.2
- 2.2.0 (сентябрь 2016 г.)
- 2.1.3 (август 2016 г.)
- 2.1.2
- 2.0.0 (апрель 2016 г.)
- 1.5.0 (2015/11/12)
- 1.4.0-бета6 (2015/10/05)
- 1.3.1 (2015/08/11)
Я буду обновлять этот пост по мере выхода новых версий.
Решение протестировано только на версиях 1.1.3-1.3.0
Следующее решение было протестировано со следующими версиями плагина Android Gradle:
файл приложения Gradle:
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
к имени? Я знаю, что это не относится к конфигурации по умолчанию, но я пытаюсь выяснить, как удалить устаревшееvariantOutput.getAssemble()
предупреждениеЭто решило мою проблему: использование
applicationVariants.all
вместоapplicationVariants.each
Обновить:
Таким образом, кажется, что это не работает с 0.14+ версиями плагина для Android Studio Gradle.
Это делает трюк (ссылка на этот вопрос ):
источник
versionName
определенный вAndroidManifest.xml
вместо конфигурации gradle? Это дает мнеmyapp-release-null.apk
сейчас.each
на Gradle 4: измените наall
иoutput.outputFile
наoutputFileName
. Если кто-то подтвердит, что это работает, его можно отредактировать в ответ :)Error:(34, 0) Cannot set the value of read-only property 'name'
(ИЗМЕНЕНО для работы с Android Studio 3.0 и Gradle 4)
Я искал более сложную опцию переименования файлов apk, и я написал эту в надежде, что она будет полезна для всех остальных. Переименовывает apk со следующими данными:
Мне потребовалось немного исследований в классах Gradle и немного копирования / вставки из других ответов. Я использую Gradle 3.1.3 .
В build.gradle:
Если вы скомпилируете сегодня (13-10-2016) в 10:47, вы получите следующие имена файлов в зависимости от выбранной вами разновидности и типа сборки:
Примечание. Имя apk версии без выравнивания по-прежнему остается именем по умолчанию.
источник
each
наall
иoutput.outputFile
наoutputFileName
» - этот пост содержит некоторые подробности об этом: stackoverflow.com/a/44265374/2162226Подводя итог, для тех, кто не знает, как импортировать пакет
build.gradle
(как я), используйте следующееbuildTypes
,===== РЕДАКТИРОВАТЬ =====
Если вы установите свой
versionCode
иversionName
в вашемbuild.gradle
файле, как это:Вы должны установить это так:
====== РЕДАКТИРОВАТЬ с Android Studio 1.0 ======
Если вы используете Android Studio 1.0, вы получите такую ошибку:
Вы должны изменить
build.Types
часть на это:источник
Если вы не укажете versionName в блоке defaultConfig,
defaultConfig.versionName
это приведет кnull
чтобы получить versionName из манифеста, вы можете написать следующий код в build.gradle:
источник
В моем случае я просто хотел найти способ автоматизировать генерацию разных
apk
названийrelease
иdebug
вариантов. Мне удалось сделать это легко, поместив этот фрагмент в детствоandroid
:Для нового плагина Android Gradle 3.0.0 вы можете сделать что-то вроде этого:
Это производит что-то вроде:
My_nice_name_3.2.31_dbg.apk
источник
Другой альтернативой является использование следующего:
Это установит "appname-1.0.0" для всех ваших выходных apk.
источник
No such property: archivesBaseName for class: org.gradle.api.internal.project.DefaultProject_Decorated
Gradle 6+
Сейчас я использую следующее в Android Studio 4.0 и Gradle 6.4:
Gradle 4
Синтаксис немного изменился в Gradle 4 (Android Studio 3+) (от
output.outputFile
доoutputFileName
, идея из этого ответа теперь:источник
Правильный способ переименовать apk, как в ответе @Jon
Или другим способом вы можете достичь тех же результатов с
источник
Есть много ответов, которые являются правильными либо в полном объеме, либо после некоторых изменений. Но я все равно добавлю свой, поскольку у меня возникла проблема со всеми из них, потому что я использовал сценарии для динамического генерирования VersionName и VersionCode, подключившись к
preBuild
задаче.Если вы используете какой-то похожий подход, это код, который будет работать:
Объяснить: так как я переопределяю код версии и имя в первом действии,
preBuild
мне нужно добавить переименование файла в конец этой задачи. Так что Gradle будет делать в этом случае:Введите код версии / имя-> выполнить действия preBuild -> заменить имя для apk
источник
источник
В моем случае я решаю эту ошибку таким образом
добавив SUFFIX к версии Debug, в этом случае я добавляю текст "-DEBUG" в мое развертывание Debug
источник
versionNameSuffix
на основе ветки GIT? Например, если это не на «master», всегда есть суффикс, даже если этоДля последних версий Gradle вы можете использовать следующий фрагмент:
Сначала установите местоположение манифеста приложения
И позже в build.gradle
Отрегулируйте, если у вас есть разные манифесты для типа сборки. но так как у меня есть один - отлично работает для меня.
источник
Начиная с Android Studio 1.1.0, эта комбинация работала в теле андроида
build.gradle
файла . Это если вы не можете понять, как импортировать данные XML-файла манифеста. Хотелось бы, чтобы Android Studio больше его поддерживал, но просто поиграйте со значениями, пока не получите желаемый вывод имени apk:источник