Как опубликовать и сохранить несколько версий приложения React Native? - PullRequest
0 голосов
/ 17 февраля 2019

Мне нужен совет, как с чем-то бороться:

У меня есть приложение, которое скоро будет опубликовано в App Store и Google Play, я хотел бы найти способ получить клонэто приложение с меньшим количеством функций, этот клон предназначен для того, чтобы дать представление о приложении пользователям, а также продавцу компании, чтобы продемонстрировать его, также я хотел бы, чтобы оба приложения были установлены на одном устройстве, поэтому в случаепродавец, они могли бы продемонстрировать с помощью этого «демо-приложения», а также использовать настоящее приложение для своих собственных целей.

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

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

Вариант, который я подумал: создать ветку и переименовать приложение в новую подпись, имя, значки и т. д.вытащите diff из ветви origin / master и опубликуйте его в магазинах, но это не сработало, так как xcode ломает приложение и выдает мне случайные ошибки, когда я это делаю.

Буду признателен за получение идейи обходные пути для этого.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

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

iOS

Самое простое решение для iOS состоит в том, чтобы иметь другое Bundle Identifiers.Это требует, чтобы у вас были разные профили обеспечения.Один профиль обеспечения для каждой среды разработки (если вы хотите поместить их на устройство для тестирования вне машины разработки, они должны быть дистрибуция профили) и один профиль для отправки в App Store.

XCode имеет возможность управлять различными средами с разными профилями обеспечения, однако это вызвало у меня серьезные проблемы при использовании CocoaPods, и я вынужден был остановить XCode от управления им.

Теперь я добавляю в свой рабочий процесс сценарий 2 , который вынуждает корректный идентификатор пакета для среды.Если я хочу создать локально, я просто вручную изменяю идентификатор пакета и профиль обеспечения (это занимает всего секунду)

Android

Для Android Я использую встроенный flavorsуправлять различными средами.Это действительно легко настроить.в моем app/build.gradle я добавил следующее:

flavorDimensions "version"
productFlavors {
    dev {
        dimension "version"
        applicationIdSuffix ".dev"
    }
    uat {
        dimension "version"
        applicationIdSuffix ".uat"
    }
    staging {
        dimension "version"
        applicationIdSuffix ".staging"
    }
    prod {
        dimension "version"
        applicationIdSuffix ".prod"
    }
}

Это добавляет applicationIdSuffix к вашим сборкам, что означает, что вы можете установить несколько типов на ваше устройство.Использование ароматов является действительно мощным способом управления вашими приложениями для Android.Вы можете прочитать больше об использовании ароматов здесь

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

Вместо использования react-native run-android Теперь я должен использовать react-native run-android --variant=devDebug.

Когда я хочу собрать его вместо использования ./gradlew assembleRelease, я должен использовать ./gradlew assembledevRelease (вы должны изменить это для каждого аромата , который вы используете)

Существует также небольшая ошибка с response-native, которая при использовании флага --variant не запускает приложение, поэтому вам просто нужно нажать на значок на устройстве.Но если вы запускаете его с Android Studio, он запускается просто отлично.

Так что, если вы запускаете свое приложение с Android Studio или добавляете соответствующие сценарии к вашему package.json, эти проблемы исчезают.


1 Я не использую Expo для своих производственных приложений, только для прототипирования, поэтому эти решения предназначены для полных react-native приложений с доступом к собственному коду.

2 Я использую Bitrise для сборки своих приложений, чтобы было легко добавлять сценарии bash или аналогичные процессу сборки.

0 голосов
/ 17 февраля 2019

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

Я недавно работал над проектом react native, и мы фактически обрабатывали staging и production приложений в одной ветке.Хотя мы не выпустили приложение staging в магазине Play, мы делились с помощью Google drive, и, поскольку оба приложения имели разные пакеты, можно было установить оба пакета вместе.

Чтобы изменить applicationId, вам нужно внести изменения в файл build.gradle приложения в Android.Просто добавьте .demo или .anything в конце вашего производства applicationId.А также измените конечную точку API и имя приложения и значки, если хотите.Так что через некоторое время это становится громоздким делом вручную, потому что вы должны переходить туда-сюда.Поэтому мы написали shell script, чтобы внести все эти изменения перед сборкой apk.

Нам фактически не нужно было устанавливать 2 версии на iPhone, поэтому мы ничего не делали с этим.Также я не знаком с разработкой для iOS, но, думаю, процесс будет несколько похожим.

Теперь нам не нужно отслеживать изменения от одной ветви к другой.Настройка (Shell scripts) займет некоторое время, но оно того стоит.

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