В настоящее время я могу установить четыре разные версии приложения, которое я разработал.Решение для этого действительно зависит от вашей настройки, но вот в настоящее время, как я это делаю 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 или аналогичные процессу сборки.