Мне нужно выяснить, как получить или сделать номер сборки для моего приложения Android. Мне нужен номер сборки для отображения в пользовательском интерфейсе.
Должен ли я что-то делать с AndroidManifest.xml
?
android
android-emulator
android-manifest
Фахад Али Шейх
источник
источник
int versionCode = BuildConfig.VERSION_CODE;
и для получения названия версииString versionName = BuildConfig.VERSION_NAME;
Ответы:
Использование:
И вы можете получить код версии с помощью этого
источник
try... catch..
когдаgetPackageInfo()
BuildConfig.VERSION_**
как предложено здесь .Если вы используете плагин Gradle / Android Studio, начиная с версии 0.7.0 , код версии и название версии доступны статически в
BuildConfig
. Убедитесь, что вы импортировали пакет своего приложения , а не другойBuildConfig
:Не нужен объект Context!
Также не забудьте указать их в вашем
build.gradle
файле вместоAndroidManifest.xml
.источник
versionName
для своего приложения в своемbuild.gradle
файле.import com.yourapppackage.android.BuildConfig
Немного короче версия, если вы просто хотите название версии.
источник
Есть две части, которые вам нужны: Android: версия Код Android: версия Имя
versionCode - это число, и каждая версия приложения, которую вы отправляете в Маркет, должна иметь больший номер, чем последняя.
VersionName - это строка, которая может быть любой, какой вы хотите. Здесь вы определяете свое приложение как «1.0», «2.5» или «2 Alpha EXTREME!» или что угодно.
Пример:
Котлин:
Ява:
источник
android:versionCode
иandroid:versionName
его можно найти здесь: developer.android.com/tools/publishing/…this.getPackageName()
представляет собой0
то, что вы просто плюете, он понятия не имеет о значенииИспользование Gradle и BuildConfig
Получение VERSION_NAME от BuildConfig
Да, теперь это так просто.
Возвращается ли пустая строка для VERSION_NAME?
Если вы получаете пустую строку для,
BuildConfig.VERSION_NAME
то читайте дальше.Я продолжал получать пустую строку,
BuildConfig.VERSION_NAME
потому что я не устанавливалversionName
в своем файле сборки Grade (я мигрировал из ANT в Gradle). Итак, вот инструкции, чтобы убедиться, что вы настраиваетеVERSION_NAME
через Gradle.build.gradle
Примечание: это от мастерского Джейка Уортона .
Удаление
versionName
иversionCode
отAndroidManifest.xml
И так как вы установили
versionName
иversionCode
вbuild.gradle
файле сейчас, вы также можете удалить их из вашегоAndroidManifest.xml
файла, если они там есть.источник
versionName "1.2"
, аBuildConfig.VERSION_NAME
возвращаюсьempty
. API> 21versionCode
иversionName
, соответственно. Только потому, что некоторые инструменты, такие как Code Push, пытаются получить ваш номер версии, анализируя вашbuild.gradle
файл, и они не могут заполнить динамическое значение.Вот чистое решение , основанное на решении Скоттиаба (под редакцией Хави). Сначала показано, как получить контекст, если он не предоставлен вашим методом. Кроме того, он использует несколько строк вместо вызова нескольких методов на строку. Это облегчает отладку приложения.
Теперь, когда вы получили имя версии в String
myVersionName
, вы можете установить его в TextView или как угодно.источник
Throws PackageManager.NameNotFoundException if a package with the given name can not be found on the system.
. Однако я не мог представить себе сценарий для этого!Получить версию приложения или код сборки, который используется для идентификации apk по коду версии. Код версии используется для определения фактической конфигурации сборки во время обновления, публикации и т. Д.
Имя версии используется, чтобы показать пользователям или разработчикам последовательность разработки. Вы можете добавить любое название версии, как хотите
источник
Используйте класс BuildConfig
build.gradle (приложение)
источник
Если вы используете PhoneGap, создайте собственный плагин PhoneGap:
Создайте новый класс в пакете вашего приложения:
В plugins.xml добавьте следующую строку:
В ваше событие deviceready добавьте следующий код:
Затем вы можете получить атрибут versionName, выполнив:
Получено здесь и здесь .
источник
Котлин однострочник
Не забудьте импортировать
BuildConfig
в свой классисточник
Для пользователей xamarin используйте этот код, чтобы получить название и код версии
1) Название версии:
2) Код версии:
источник
Если вы хотите использовать его в XML, добавьте строку ниже в свой файл Gradle:
А затем используйте его на вашем xml следующим образом:
источник
Нет, вам не нужно ничего делать с AndroidManifest.xml
В основном название и код версии вашего приложения в файле gradle уровня приложения под тегом defaultConfig :
Примечание. Если вы хотите загрузить приложение в PlayStore, можно указать любое имя в качестве имени версии, но код версии должен отличаться от кода текущей версии, если это приложение уже находится в Play Store.
Просто используйте следующий фрагмент кода , чтобы получить код версии & название версии из любого места в приложении:
источник
для Api 28 PackageInfo.versionCode устарел, поэтому используйте следующий код:
источник
Всегда делайте это с
try catch
блоком:источник
Вот метод для получения кода версии:
источник
Я должен решить это с помощью класса предпочтений.
источник
Есть несколько способов получить
versionCode
иversionName
программно.PackageManager
. Это лучший способ для большинства случаев.BuildConfig.java
. Но обратите внимание, что если вы получите доступ к этим значениям в библиотеке, она вернет версию библиотеки, а не приложения, использующие эту библиотеку. Так что используйте только в небиблиотечных проектах!Есть некоторые детали, кроме использования второго способа в проекте библиотеки. В новом плагине для Android (3.0.0+) некоторые функциональные возможности удалены . Итак, на данный момент, т.е. установка разных версий для разных вкусов работает некорректно.
Неверный путь:
Приведенный выше код будет корректно устанавливать значения
BuildConfig
, ноPackageManager
вы получите0
и,null
если вы не указали версию вdefault
конфигурации. Таким образом, ваше приложение будет иметь0
код версии на устройстве.Существует обходной путь - установите версию для выходного
apk
файла вручную:источник
Этот код был упомянут выше по частям, но здесь он снова все включено. Вам нужен блок try / catch, потому что он может генерировать исключение NameNotFoundException.
Я надеюсь, что это упрощает вещи для кого-то в будущем. :)
источник
Однако тот, кому не нужна информация BuildConfig для пользовательского интерфейса приложения, хочет использовать эту информацию для настройки конфигурации задания CI или других, таких как я.
Существует автоматически сгенерированный файл, BuildConfig.java, в каталоге вашего проекта, если вы успешно строите свой проект.
{WORKSPACE} / сборки / генерироваться / источник / buildConfig / {отлаживать | выпуск} / {PACKAGE} /BuildConfig.java
Разделите нужную информацию с помощью скрипта Python или других инструментов. Вот пример:
Прошу прощения за мои ограниченные знания английского, но надеюсь, что это поможет.
источник
источник
Попробуй это:
источник
Первый:
и затем используйте это:
источник
источник
Пример использования внутреннего фрагмента.
источник
Пример Kotlin:
Не благодари :-)
источник
источник
Поскольку мне нужно было получить только код версии и проверить, обновлено ли приложение или нет, если да, мне пришлось запустить PlayStore, чтобы получить обновленный. Я так и сделал.
Затем я сохранил код версии, используя общие настройки, создав класс util.
источник
Как и в 2020 году: API 28 "versionCode" устарел, поэтому мы можем использовать "longVersionCode"
Пример кода в котлине
источник
Полезно для систем сборки: существует файл, сгенерированный с вашим apk,
output.json
который называется массивом информации для каждого сгенерированного APK, включая versionName и versionCode.например
источник