React-Native productFlavors (тип ошибки 3: класс активности не существует)
Я хочу использовать 2 productFlavors
для моего приложения для Android: live
а также staging
,
В app/build.grandle
Я определил их так:
defaultConfig {
applicationId "com.some.id"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
splits {...}
buildTypes {
release {
minifyEnabled enableProguardInReleaseBuilds
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
debug {
debuggable true
minifyEnabled false
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
}
productFlavors {
live {
applicationId "com.some.id"
}
staging {
applicationId "com.some.id.staging"
}
}
}
Теперь, когда я бегу react-native run-android --variant=liveDebug
все работает просто отлично но когда пытаюсь запустить react-native run-android --variant=stagingDebug
я получаю ошибку:
Installed on 1 device.
BUILD SUCCESSFUL
Total time: 11.824 secs
Starting the app on 192.168.56.101:5555 (/usr/local/opt/android-sdk/platform-tools/adb -s 192.168.56.101:5555 shell am start -n com.somepackage/.MainActivity)...
Starting: Intent { cmp=com.somepackage/.MainActivity }
Error type 3
Error: Activity class {com.somepackage/com.somepackage.MainActivity} does not exist.
Как видно из вывода, приложение было установлено на устройстве, но почему оно говорит, что MainActivity
не существует? Я предполагаю, что это из-за другого applicationId, хотя это правильно в соответствии с этим руководством
Как я могу решить это?
Заранее спасибо!
6 ответов
У меня была та же проблема, и я решаю, добавив appIdSuffix
к react-native
Команда запуска.
react-native run-android --variant variantDebug --appIdSuffix suffix
Добавить --appId
при запуске, так что реагирующий будет знать, где найти основное действие:
react-native run-android --variant=stagingDebug --appId com.some.id.staging
Удалите приложение с устройства, используя:
cd android && ./gradlew uninstallAll
Затем снова запустите приложение, используя:
react-native start
react-native run-android
React Native ожидает запроса извлечения, который решит эту проблему.
До тех пор вы можете просто заменить /node_modules/react-native/local-cli/runAndroid/runAndroid.js
с файлом runAndroid.js из запроса извлечения.
Попробуй дать resValue
как это:
staging {
applicationId "com.some.id.staging"
resValue "string", "build_config_package", "com.some.id"
}
Потому что вы изменили applicationId в productFlavors
, react-native-cli
не могу распознать. Чтобы исправить, просто добавьте измененный appId при запуске команды запуска
react-native run-android --variant=staging --appId com.some.id.staging