Схема номера мобильного приложения Xamarin на трех платформах

Вероятно, здесь есть несколько вопросов. Я пытаюсь придумать простую схему обновления номера версии для наших 3 мобильных приложений, построенных из одного решения xamarin.

То, что я ищу, - это простой способ сохранить все эти значения в синхронизации друг с другом, не обойтись и обновить их индивидуально.

  • Версия Windows Phone должна автоматически устанавливаться в AssemblyVersion или FileVersion.
  • Номер версии IOS должен быть установлен таким же. (не уверен, какой номер сборки должен быть)
  • Имя версии Android должно быть одинаковым.
  • Номер версии Android должен автоматически увеличиваться для каждой версии сборки.

Моя текущая настройка требует навигации по 4 местам, чтобы вручную синхронизировать номера версий.

  • Информация о глобальной сборке

У меня есть связанный файл, который содержит AssemblyVersion и AssemblyFileVersion, которые совместно используются всеми проектами PCL и Platform в решении со следующей информацией.

[assembly: AssemblyVersion("2.1.1.*")]
[assembly: AssemblyFileVersion("2.1.1.0")]
  1. Android

В рамках проекта андроида я должен вручную обновить имя версии и номер версии (int)

Version Name: 2.1.1
Version Number: 2
  1. IOS

На вкладке Приложения iOS у меня есть еще 2 поля.

Version Number: 2.1.1
Build Number: 0 //Not sure if I'm using this field correctly.
  1. Windows Phone

На вкладке "Упаковка" диалогового окна "Свойство WMAppManifest" я также должен указать номер версии.

Version Number: 2.1.1.0

Ответы

Ответ 1

Мы создали инструмент для синхронизации версий между ассемблиями, Android и iOS; Я только что нажал на наш репозиторий GitHub: https://github.com/soltechinc/soltechxf/. Если вы клонируете это репо и создаете UpdateVersionInfo, он должен делать то, что вы ищете.

UpdateVersionInfo.exe:
  -?                          Shows help/usage information.
  -v, --major=VALUE           A numeric major version number greater than zero.
  -m, --minor=VALUE           A numeric minor number greater than zero.
  -b, --build=VALUE           A numeric build number greater than zero.
  -r, --revision=VALUE        A numeric revision number greater than zero.
  -p, --path=VALUE            The path to a C# file to update with version
                              information.
  -a, --androidManifest=VALUE The path to an android manifest file to update
                              with version information.
  -t, --touchPlist=VALUE      The path to an iOS plist file to update with
                              version information.

Версия по умолчанию (т.е. версия, которую вы получите, если вы не укажете ни один из параметров) - 1.0.0.0.

Инструмент может использовать относительные или абсолютные пути к файлам, и моя рекомендация состоит в том, чтобы следовать подходу, который уже звучит так, как вы используете: иметь один файл version.cs, который вы включаете в качестве связанного файла (или в общий проект) и удалить атрибуты AssemblyInfo, которые содержатся в этом файле Version.cs.

Я должен добавить; инструмент в настоящее время предполагает, что вы будете обновлять iOS и проект Android вместе с кодом С#. (Я просто добавил сообщение для себя, чтобы сделать это необязательным.)

EDIT: Только что заметил, что прошлое - Энди уже заметил это и позаботился об этом (что является неожиданностью, я обычно кричу эпитеты в прошлом - Энди...). Если вы не укажете путь для манифеста Android или iOS Info.plist, он пропустит их.