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
Другие вопросы по тегам