我想在我的Android应用中使用2 productFlavors
: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,尽管根据this guide
我该如何解决这个问题?
提前致谢!
答案 0 :(得分:3)
我遇到了同样的问题,我通过将appIdSuffix
添加到react-native
run命令来解决。
react-native run-android --variant variantDebug --appIdSuffix suffix
答案 1 :(得分:2)
使用以下方法从设备卸载应用程序:
cd android && ./gradlew uninstallAll
然后使用以下命令再次运行应用程序:
react-native start
react-native run-android
答案 2 :(得分:1)
有pull request pending for React Native可解决此问题。
在此之前,您只需将next
替换为runAndroid.js file from the pull request。
答案 3 :(得分:1)
添加运行时的--appId
命令,这样react native就会知道在哪里可以找到Main Activity:
react-native run-android --variant=stagingDebug --appId com.some.id.staging
答案 4 :(得分:0)
尝试像这样给resValue
:
staging {
applicationId "com.some.id.staging"
resValue "string", "build_config_package", "com.some.id"
}
答案 5 :(得分:0)
由于您在productFlavors
中更改了applicationId,react-native-cli
无法识别它。要解决此问题,只需在运行启动命令时添加更改的appId
react-native run-android --variant=staging --appId com.some.id.staging