Unity 3D: что такое версия пакета Android и код версии и как они связаны?

a) Что означает версия пакета Android и код версии?

b) В чем разница между версией пакета и кодом версии?

i) Предположим, у меня есть пакетная версия 0.137, как к этому относится код версии? Может ли код версии быть просто 137?

ii) Что произойдет, когда я выпущу следующую версию пакета 1.0? Могу ли я просто назвать код версии 10?

в) Как они связаны? Как правильно нумеровать версии пакетов?


Н.Б. Кажется, в поиске нет источника, объясняющего разницу. Я очень бессистемно нумеровал свои пачки до сих пор, но я хотел бы выяснить, как сделать это правильно.

Эти обозначения относятся к Unity, но я не уверен, понимаю ли я, что такое параметры примерно даже с той страницы...


person ina    schedule 15.03.2012    source источник
comment
вы говорите об android:versionCode и android:versionName ?   -  person dymmeh    schedule 15.03.2012
comment
Что такое пакетная версия? Я не знаю ни одной концепции в Android с таким названием.   -  person CommonsWare    schedule 15.03.2012
comment
на самом деле это может быть вопрос, специфичный для Unity... unity3d.com/support/documentation /Компоненты/   -  person ina    schedule 16.03.2012


Ответы (3)


Нет никакой "комплектной версии". Это термин для iOS/Mac. Встроенные приложения для Android называются пакетами.

В Android есть два места, где указывается версия: название версии (android:versionName в манифесте) и код версии (android:versionCode). Они не обязательно должны быть коррелированы, но на практике это обычно так. Google Market использует код версии (а не имя), когда вы публикуете обновление, чтобы убедиться, что ваше обновление является более поздним, чем пакет, опубликованный в данный момент.

Имя версии — это то, что видят конечные пользователи. Нет ограничений на его формат; это строка произвольного текста, хотя подавляющее большинство приложений придерживаются шаблонов 1.2 или 1.2.3.

То, как вы сопоставляете имя версии и код версии, зависит от вас. Вы можете использовать последовательные коды версий или использовать формулу major*10000 + minor*100 + build — это то, что Google делает со своими приложениями, поэтому версия 4.10.3 будет иметь код 41003.

person Seva Alekseyev    schedule 16.03.2012
comment
Хороший ответ, но ОП спрашивал настройки проигрывателя Unity. Bundle Version будет использоваться для заполнения android:versionName. См. эту запись в блоге для подробного объяснения - person Kay; 08.07.2015

Обновлять

В новых версиях Unity Версия пакета стала просто Версия. Код версии пакета все еще существует. Документацию по этим значениям можно найти в документации Unity для настроек проигрывателя Android (Настройки проигрывателя Android › Другие настройки › Идентификация): https://docs.unity3d.com/Manual/class-PlayerSettingsAndroid.html#Identification

  • Версия. Введите номер версии сборки пакета, который идентифицирует итерацию (выпущенную или невыпущенную) пакета. Версия указывается в общем формате строки, содержащей числа, разделенные точками (например, 4.3.2). (Общий доступ для iOS и Android.)

  • Код версии пакета: внутренний номер версии. Этот номер используется только для определения того, является ли одна версия более поздней, чем другая, причем более высокие числа указывают на более поздние версии. Это не тот номер версии, который показывается пользователям; это число задается атрибутом versionName. Значение должно быть задано как целое число, например «100». Вы можете определить его по своему усмотрению, если каждая последующая версия имеет более высокий номер.

    Например, это может быть номер сборки. Или вы можете преобразовать номер версии в формате «x.y» в целое число, закодировав «x» и «y» отдельно в младших и старших 16 битах. Или вы можете просто увеличивать число на единицу каждый раз, когда выпускается новая версия.

    Держите это число ниже 100 000, если включено Разделить APK по целевой архитектуре. Каждый APK должен иметь уникальный код версии, поэтому Unity добавляет 100 000 к номеру для ARMv7 и 200 000 для ARM64.

Оригинальный ответ

У Unity есть ответ на странице «Руководство по настройкам проигрывателя»: http://docs.unity3d.com/Manual/class-PlayerSettings.html (Обновление: эта ссылка больше не содержит приведенную ниже информацию):

  • Версия пакета. Указывает номер версии сборки пакета, который идентифицирует итерацию (выпущенную или невыпущенную) пакета. Версия указывается в общем формате строки, содержащей числа, разделенные точками (например, 4.3.2). (Это совместно используется iOS и Android.)

  • Код версии пакета: внутренний номер версии. Этот номер используется только для определения того, является ли одна версия более поздней, чем другая, причем более высокие числа указывают на более поздние версии. Это не тот номер версии, который показывается пользователям; это число задается атрибутом versionName. Значение должно быть задано как целое число, например «100». Вы можете определить его по своему усмотрению, если каждая последующая версия имеет более высокий номер. Например, это может быть номер сборки. Или вы можете преобразовать номер версии в формате «x.y» в целое число, закодировав «x» и «y» отдельно в младших и старших 16 битах. Или вы можете просто увеличивать число на единицу каждый раз, когда выпускается новая версия.

person ArianJM    schedule 02.06.2014

Это не касается напрямую вопроса, но связано (и связано с ответом ArianJM).

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

Содержимое указанной страницы руководства Unity от ArianJM изменилось и (по крайней мере, для версии 5.4) больше не содержит никакой информации о версии пакета или коде версии пакета.

В Unity 5.4:

Версия пакета теперь называется Версия. Это поле идентифицируется магазином приложений Amazon как Имя версии.

Код версии пакета по-прежнему Код версии пакета. Amazon Appstore определяет это поле как Код версии. В этом поле можно указывать только числа.

Я загружаю новую версию в магазин приложений Amazon, и хотя я обновил версию в Unity до 1.1, код версии пакета не был обновлен и в результате был отклонен магазином приложений Amazon, поскольку он был таким же, как и предыдущий. Код версии пакета (код версии в Amazon Appstore).

С тех пор я обновил код версии пакета в Unity, но не смог обновить его до 1.1 или 1_1, потому что поле строго числовое, поэтому вместо этого обновил его до 2.

Что, как мне кажется, возвращает нас к одной части первоначального вопроса: Есть ли правильный способ нумерации версий пакета?

Хотя произвольно менять его на 2 в моем случае явно не очень схема - оно и другое и выше предыдущего числа и как таковое работает.

Это не очень большой план, но отсутствие текущей документации Unity, касающейся этих полей, и похожие, но разные имена полей в Unity и Amazon Appstore, похоже, приводят к этим специальным решениям.

person Drew Crecente    schedule 05.08.2016
comment
Примечание. В настройках проигрывателя есть две версии. Верхний вариант рядом с названием вашей компании изменит версию Android ниже. Код версии пакета является важным. То, что Google Play Console называет кодом версии, Unity называет номером версии пакета. - person st4rdog; 27.11.2020