Выпуск мобильных (React Native) артефактов с помощью файла конфигурации - PullRequest
0 голосов
/ 22 мая 2018

Вдохновляясь Приложение с двенадцатью факторами: V. Сборка, выпуск, запуск , я работаю над обновлением нашего конвейера CI / CD с учетом этих трех отдельных шагов для приложения, которое создается с react-native-web .

В частности, я хочу:

  1. Сборка: создание независимого от среды артефакта кода для каждой платформы (web, android), ios)
  2. Выпуск: взять артефакт и файл конфигурации (URL-адреса API, ключи API, настройки отладки и т. д.) и выпустить для каждой платформы

Это тривиально для вебЭто то, что Приложение из двенадцати факторов имело в виду.У меня вопрос как мне прочитать файл конфигурации на мобильных платформах и как я могу объединить это с артефактами сборкиact-native-web?Должен ли мой артефакт содержать весь исходный код и зависимости, чтобы я мог извлечь конфигурацию во время выпуска и затем собрать?

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

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

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Это похоже на Android.После создания двоичного файла сборки он остается неизменным.Так что, к сожалению, это отрицает вариант № 1.Мы ничего не можем сделать с двоичным файлом, как только мы его построим.

Я думаю, что для второго варианта - лучший подход.По сути, вам нужно будет создавать приложения во время выпуска, когда вы решите, какими должны быть ваши настройки.Это позволяет избежать каких-либо накладных расходов на загрузку содержимого во время выполнения в варианте № 3 и по-прежнему хорошо соответствует Twelve Factor.У вас все еще будет мобильный двоичный файл, который соответствует конфигурации вашего типа выпуска.

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

ОБНОВЛЕНИЕ:

Все, что делает iOS, мы можем сделать (почти также)

Текущие инструменты сборки компилируют весь код в байт-код classes.dex и сжимают все ресурсы в resrouces.arcно res/raw остался нетронутым.Это дает нам место для внедрения наших файлов.Оттуда приложение сможет читать и анализировать во время выполнения.

0 голосов
/ 23 мая 2018

Для iOS процесс сборки и выпуска (не из App Store) работает следующим образом на высоком уровне:

  1. Архивируйте свой проект в Xcode, что приводит к артефакту .xcarchive.
  2. Экспортируйте свой архив, который подписывает и генерирует файл .ipa.
  3. Либо разместите этот файл .ipa самостоятельно (с некоторыми дополнительными файлами метаданных), либо загрузите его в службу, например HockeyApp, для распространения.

Существует несколько способов управления конфигурацией внутри проекта XCode.Один из наиболее распространенных и простых способов - использовать файл info.plist для хранения пользовательских ключей и значений.Затем приложение может искать и использовать эти значения во время выполнения.

В описываемом вами сценарии кажется, что вы хотите иметь возможность вводить определенные значения конфигурации после шага 2, но до шага 3. К счастью, *Файл 1017 *, созданный на шаге 2, может быть извлечен, что приведет к обнаружению папки Payload, содержащей файл .app.Этот файл можно проверить, и внутри вы увидите, среди прочего, приложение Info.plist.Изменение этого файла позволит вводить любые значения конфигурации, которые вы хотите установить.

Это избавит от необходимости управлять конфигурациями внутри проекта Xcode и создавать отдельный архив для каждой конфигурации приложения.Однако то, что это не не решает, - это шаг 3. Вам все еще нужно будет распространять каждый настроенный файл .ipa отдельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...