Flutter: обновите код версии для игрового магазина

Я опубликовал в play store приложение с флаттером, теперь хочу загрузить новую версию приложения. Я пытаюсь изменить код версии с помощью:

flutter build apk --build-name=1.0.2 --build-number=3

или изменив local.properties, как это

 flutter.versionName=2.0.0
 flutter.versionCode=2
 flutter.buildMode=release

но каждый раз, когда я получаю ошибку в магазине игр

You must use a different version code for your APK or your Android App Bundle because code 1 is already assigned to another APK or Android App Bundle.

182
0
102 651
19

Ответы 19

Выяснил это. Документация не проста

в вашем pubspec.yaml поменяйте версию вот так

version: 1.0.2+2

где материал VER_NAME+VER_CODE

Я не могу поверить, что этого нет в официальная документация делпоймента. Так неприятно найти здесь ответ ...

Tokenyet 22.05.2019 15:36

Стратегия здесь правильная, но целое число после + - это код версии, а не имя версии.

Daniel Allen 11.10.2019 14:54

Как ранее сказал @DanielAllen: versionName - это до, +, а versionCode - это после, +

Alex Semeniuk 28.10.2019 10:26

1.0.2 - это имя версии, а +2 - это код версии. Спасибо! Это мне очень помогло!

Renan Coelho 23.01.2020 23:26

В моем файле pubspec.yaml была версия: 1.0.0 + 1, я взял сборку и загрузил ее в игровой магазин. Но в игровом магазине код версии отображается как 2001. Позже я отредактировал в pubspec до версии: 1.0.0 + 2 и взял сборку, эта версия показывает код версии 2002 в игровом магазине. Как это произошло? В локальных свойствах android versionName = 1.0.0 и versionCode = 2

Vettiyanakan 08.08.2020 15:15

Вам нужно только обновить код версии, название версии не обязательно

Filippos Zofakis 23.10.2020 02:04

Решение:

Внутри pubspec.yaml добавьте это (возможно, после описания, тот же отступ, что и в описании, имени и т. д.):

version: 2.0.0+2

Затем пакеты попадают в локальный каталог flutter (не забудьте это сделать)

Объяснение:

Все, что до плюса - это название версии, а после - код версии. Итак, здесь код версии - 2, а имя - 2.0.0. Каждый раз, когда вы обновляете приложение flutter, обязательно меняйте код версии!

Дополнительная информация:

Всякий раз, когда создается приложение для Android, build.gradle внутри android / app / ищет код и имя версии. Обычно это находится в local.properties, который изменяется каждый раз, когда вы меняете flutter pubspec.yaml.

Первое изменение версии флаттера в pubspec.yaml пример `версия 1.0.3 + 4

В случае Android перейдите в local.properties, а затем измените имя и код версии так же, как код и имя версии flutter.

В случае iOS перейдите в файл generated.xcconfig, а не измените FLUTTER_BUILD_NAME = 1.0.3 FLUTTER_BUILD_NUMBER = 4`

не нужно менять local.properties и сгенерированный.config

Marcel Hofgesang 27.02.2020 11:35

version in pubspec.yaml file

Обновите version:A.B.C+X в pubspec.yaml.

Для Android:

A.B.C представляет собой versionName, такой как 1.0.0.

X (номер после +) представляет собой versionCode, такой как 1, 2, 3 и т. д.

Не забудьте для выполнения flutter build apk или flutter run после этого шага, потому что: Когда вы запускаете flutter build apk или flutter run после обновления этого version в файле pubspec, обновляются versionName и versionCode в local.properties, которые позже загружаются в build.gradle (app), когда вы создаете свой проект флаттера с помощью flutter build apk или flutter run, который в конечном итоге отвечает за установку versionName и versionCode для apk.

Для iOS:

A.B.C представляет собой CFBundleShortVersionString, такой как 1.0.0.

X (номер после +) представляет собой CFBundleVersion, такой как 1, 2, 3 и т. д.

Не забудьте для выполнения flutter build ipa или flutter run после этого шага

Это правильный ответ, и он должен быть принятым.

Daniel Allen 11.10.2019 14:54

Спасибо! для Android ключевым моментом является запуск flutter run после изменения pubspec.yaml, иначе студия Android создаст apk / aab со старым кодом версии на основе local.properties

Dika 27.11.2019 18:05

так что в какой-то момент приложение может выглядеть как 5.1.3+201, верно?

Chuck K 07.01.2020 10:19

Для каждого выпуска также должен быть изменен код версии. Например, вы не можете просто изменить название версии с 1.0.0 + 1 на 1.1.0 + 1. Его необходимо изменить на 1.1.0 + 2

akfaisel 25.09.2020 17:23

@ChuckK Правильно.

Rohan Taneja 09.10.2020 10:42

@akfaisel не могли бы вы подробнее объяснить название и код версии? Является ли код версии счетчиком выпуска для каждой версии? Следует ли обновлять код версии, даже если кто-то по какой-либо причине не применяет какие-то обновления или исправления и не публикует повторно?

Neail 06.10.2021 08:48

@Neail Да, код версии - это целое число или счетчик выпуска, как вы предлагаете. Код версии может быть назначен только одной сборке в PlayStore / AppStore. Поэтому, если вы уже загрузили сборку номер 1, вы никогда не сможете загрузить другую сборку с тем же номером, независимо от того, находится ли она на рассмотрении или опубликована. При желании вы можете оставить название версии прежним.

Rohan Taneja 06.10.2021 14:24

Документы говорят, что аргументы сборки должны переопределять pubspec.yml:

Both the version and the build number may be overridden in Flutter’s build by specifying --build-name and --build-number, respectively.

https://flutter.dev/docs/deployment/android#updating-the-apps-version-number

Обновление номера версии приложения Номер версии приложения по умолчанию - 1.0.0. Чтобы обновить его, перейдите к файлу pubspec.yaml и обновите следующую строку:

версия: 1.0.0 + 1

Номер версии - это три числа, разделенных точками, например 1.0.0 в приведенном выше примере, за которым следует необязательный номер сборки, например 1 в приведенном выше примере, разделенный знаком +.

И версию, и номер сборки можно переопределить в сборке Flutter, указав --build-name и --build-number соответственно.

В Android имя сборки используется как имя версии, а номер сборки - как код версии. Дополнительные сведения см. В разделе «Версия приложения» в документации Android.

Вот ссылка на официальную документацию по развертыванию: Обновление номера версии приложения

Ahmad Payan 08.08.2020 12:45

Проверять

android{
//....
  defaultConfig {
  //....
  version code:2
  }
}

на android> app> Build.gradle из корневой папки вашего проекта

У меня была такая же проблема, решаю перезапуском Android Studio.

Для Android

«X.Y.Z + n» здесь «x.y.z» представляет ИМЯ ВЕРСИИ, а «n» представляет НОМЕР ВЕРСИИ. Необходимо внести следующие изменения:

  1. В pubspec.yaml измените номер вашей версии.
  2. Обновите свой local.properties, выполнив команду flutter pub get.
  3. Теперь создайте свой apk или пакет приложений, выполнив команду flutter build apk или flutter build appbundle.

Номер версии приложения по умолчанию - 1.0.0. Чтобы обновить его, перейдите к файлу pubspec.yaml и обновите следующую строку:

version: 1.0.0+1

Просто измените эту версию на (в соответствии с вашими потребностями)

version: 1.0.1+2

Номер версии - это три числа, разделенных точками, например 1.0.0 в приведенном выше примере, за которым следует необязательный номер сборки, например 1 в приведенном выше примере, разделенный знаком +.

И версию, и номер сборки можно переопределить в сборке Flutter, указав --build-name и --build-number соответственно.

В Android имя сборки используется как имя версии, а номер сборки - как код версии. Для получения дополнительной информации см. Версия вашего приложения.

После обновления номера версии в pubspec file запустите flutter pub get из верхней части проекта или используйте кнопку Pub get в вашей среде IDE. Это обновляет versionName и versionCode в файле local.properties, которые позже обновляются в файле build.gradle, когда вы перестраиваете приложение Flutter.

  • в pubspec.yml version: 1.0.0+1
  • поменять на version: 1.0.0+2
  • flutter build ios --release-name --release-number обновит версию в ios
  • flutter pub get && flutter run обновит версию для android (android / local.properties)

Дополнительный балл, просто трепыхание паба не исправить. Хорошо поймал.

Johnathan Awma 12.11.2021 21:16

Вы по-прежнему можете заниматься своими делами, перезаписав в android / app / build.gradle:

  • def flutterVersionCode
  • def flutterVersionName

к вашим собственным ценностям.

Ни одно из решений не помогло мне с App Bundle, я перешел на APK и никаких проблем с версией.

Хотя непонятно почему.

это работает для меня! Я узнал это первое приложение как Default Название версии 1.0.0 Номер версии 1 так это означает 1.0.0 + 1

Я обновил свое приложение после того, как написал как 1.0.0 + 2 в pubspec.yaml.

Если вы уже изменили versionCode, это может быть связано с тем, что Play Console уже приняла вашу сборку.

Вместо того, чтобы нажимать на загрузку, нажмите Выбрать из библиотеки и выберите уже отправленную сборку.

Этот сработал для меня ... после того, как я уже пытался загрузить с 5 разными номерами версий. Действительно глупо.

kk_ 09.08.2021 17:30

Это может сработать, если вы хотите, чтобы ваша старая сборка была показана публике, которая была загружена ранее и принята Google. Но если вы внесли изменения и хотите новый, вы должны изменить код версии, как указано в некоторых ответах, и Google не должен показывать это предупреждение, тогда только вы уверены, что ваша новая сборка загружена и принята.

Ajeet Singh 11.10.2021 04:32

вы можете обновить файл local.properties,

Я не думаю, что кто-то на самом деле ответил на этот вопрос. Многие предложения обновляют версию в pubspec. Но в зависимости от вашего развертывания вы можете не использовать эти значения.

сборка флаттера --build-number = Икс --build-name = Y

Икс используется как ваш код версииY используется как ваш название версии

Для тестирования просто запустите build и проверьте local.properties

Все эти ответы отражают официальную документацию, и именно так я настраиваю свои versionName и versionCode. Но когда я загружаю свою сборку, я получаю ту же ошибку, о которой сообщил автор сообщения.

Код моей предыдущей версии в магазине воспроизведения показан как 4 (0.0.2) ... Я привык к работе iOS, поэтому мне это показалось странным. Число в скобках должно быть номером build/code, а основное число - фактическим номером version. Увеличение номера сборки при необходимости без необходимости нажимать на version (поскольку нет значительных изменений).

Поэтому, когда я попытался загрузить 0.0.3+1 с новым номером сборки для увеличения для этой новой версии, он пожаловался, что 1 уже использовался.

Итак, как это работает в магазине Play? Я тоже в замешательстве.

Я столкнулся с той же проблемой / неразберихой. Затем я понял, как указано в лучший ответ от Рохана Танеджи - после того, как вы сделаете обновление в pubspec.yaml, 1) запустите pub get, 2) затем запустите сборку до завершения. Затем я вижу, что значения обновляются в local.properties, и GPlay принимает загрузку. Сначала я не понимал, что это критическая деталь / шаг, который несколько раз повторяется в комментариях к этому ответу

Gene Bo 12.10.2021 03:16

Что-то, что может быть полезно для других, которые попадают сюда, Play Store рассматривает versionCode только изолированно. Итак, если вы обновили свой versionNumber, например, с 1.0.0 + 1 до 1.1.0 + 1, Play Store выдаст ошибку, что versionCode не изменился. Итак, независимо от того, какой у вас versionNumber, вы также должны изменить свой versionCode - например, с 1.0.0 + 1 на 1.1.0 + 2.

Другие вопросы по теме