问题
I want to use 2 productFlavors
for my Android App: live
and staging
.
In app/build.grandle
I defined them like this:
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"
}
}
}
Now when I run react-native run-android --variant=liveDebug
everything works just fine but when I try to run react-native run-android --variant=stagingDebug
i get the error:
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.
As the output says, the App was installed on the device but why does it say that MainActivity
does not exist ? I guess it is due to the different applicationId although it is correct according to this guide
How can I solve this?
Thanks in advance!
回答1:
I had the same issue and I solve by adding the appIdSuffix
to the react-native
run command.
react-native run-android --variant variantDebug --appIdSuffix suffix
回答2:
Add the --appId
on run command, so the react native will know where to find the Main Activity:
react-native run-android --variant=stagingDebug --appId com.some.id.staging
回答3:
There is a pull request pending for React Native that will fix this issue.
Until then you can simply replace /node_modules/react-native/local-cli/runAndroid/runAndroid.js
with the runAndroid.js file from the pull request.
回答4:
Try giving resValue
like this:
staging {
applicationId "com.some.id.staging"
resValue "string", "build_config_package", "com.some.id"
}
回答5:
Cause you change the applicationId in the productFlavors
, react-native-cli
can't recognize it. To fix, just add your changed appId when run start command
react-native run-android --variant=staging --appId com.some.id.staging
来源:https://stackoverflow.com/questions/39289591/react-native-productflavors-error-type-3-activity-class-does-not-exist