Я опубликовал в 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.
Выяснил это. Документация не проста
в вашем pubspec.yaml поменяйте версию вот так
version: 1.0.2+2
где материал VER_NAME+VER_CODE
Стратегия здесь правильная, но целое число после + - это код версии, а не имя версии.
Как ранее сказал @DanielAllen: versionName - это до, +, а versionCode - это после, +
1.0.2 - это имя версии, а +2 - это код версии. Спасибо! Это мне очень помогло!
В моем файле pubspec.yaml была версия: 1.0.0 + 1, я взял сборку и загрузил ее в игровой магазин. Но в игровом магазине код версии отображается как 2001. Позже я отредактировал в pubspec до версии: 1.0.0 + 2 и взял сборку, эта версия показывает код версии 2002 в игровом магазине. Как это произошло? В локальных свойствах android versionName = 1.0.0 и versionCode = 2
Вам нужно только обновить код версии, название версии не обязательно
Решение:
Внутри 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
Обновите 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 после этого шага
Это правильный ответ, и он должен быть принятым.
Спасибо! для Android ключевым моментом является запуск flutter run после изменения pubspec.yaml, иначе студия Android создаст apk / aab со старым кодом версии на основе local.properties
так что в какой-то момент приложение может выглядеть как 5.1.3+201, верно?
Для каждого выпуска также должен быть изменен код версии. Например, вы не можете просто изменить название версии с 1.0.0 + 1 на 1.1.0 + 1. Его необходимо изменить на 1.1.0 + 2
@ChuckK Правильно.
@akfaisel не могли бы вы подробнее объяснить название и код версии? Является ли код версии счетчиком выпуска для каждой версии? Следует ли обновлять код версии, даже если кто-то по какой-либо причине не применяет какие-то обновления или исправления и не публикует повторно?
@Neail Да, код версии - это целое число или счетчик выпуска, как вы предлагаете. Код версии может быть назначен только одной сборке в PlayStore / AppStore. Поэтому, если вы уже загрузили сборку номер 1, вы никогда не сможете загрузить другую сборку с тем же номером, независимо от того, находится ли она на рассмотрении или опубликована. При желании вы можете оставить название версии прежним.
Документы говорят, что аргументы сборки должны переопределять 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.
Вот ссылка на официальную документацию по развертыванию: Обновление номера версии приложения
Проверять
android{
//....
defaultConfig {
//....
version code:2
}
}
на android> app> Build.gradle из корневой папки вашего проекта
У меня была такая же проблема, решаю перезапуском Android Studio.
Для Android
«X.Y.Z + n» здесь «x.y.z» представляет ИМЯ ВЕРСИИ, а «n» представляет НОМЕР ВЕРСИИ. Необходимо внести следующие изменения:
pubspec.yaml измените номер вашей версии.local.properties, выполнив команду flutter pub get.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.
version: 1.0.0+1version: 1.0.0+2flutter build ios --release-name --release-number обновит версию в iosflutter pub get && flutter run обновит версию для android (android / local.properties)Дополнительный балл, просто трепыхание паба не исправить. Хорошо поймал.
Вы по-прежнему можете заниматься своими делами, перезаписав в android / app / build.gradle:
к вашим собственным ценностям.
Ни одно из решений не помогло мне с App Bundle, я перешел на APK и никаких проблем с версией.
Хотя непонятно почему.
это работает для меня! Я узнал это первое приложение как Default Название версии 1.0.0 Номер версии 1 так это означает 1.0.0 + 1
Я обновил свое приложение после того, как написал как 1.0.0 + 2 в pubspec.yaml.
Если вы уже изменили versionCode, это может быть связано с тем, что Play Console уже приняла вашу сборку.
Вместо того, чтобы нажимать на загрузку, нажмите Выбрать из библиотеки и выберите уже отправленную сборку.
Этот сработал для меня ... после того, как я уже пытался загрузить с 5 разными номерами версий. Действительно глупо.
Это может сработать, если вы хотите, чтобы ваша старая сборка была показана публике, которая была загружена ранее и принята Google. Но если вы внесли изменения и хотите новый, вы должны изменить код версии, как указано в некоторых ответах, и Google не должен показывать это предупреждение, тогда только вы уверены, что ваша новая сборка загружена и принята.
Я не думаю, что кто-то на самом деле ответил на этот вопрос. Многие предложения обновляют версию в 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 принимает загрузку. Сначала я не понимал, что это критическая деталь / шаг, который несколько раз повторяется в комментариях к этому ответу
Что-то, что может быть полезно для других, которые попадают сюда, 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.
Я не могу поверить, что этого нет в официальная документация делпоймента. Так неприятно найти здесь ответ ...