React-Native产品口味(错误类型3:活动类不存在)

18

我想在我的Android应用中使用2个productFlavorslivestaging

app/build.gradle文件中,我这样定义它们:

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导致的,尽管根据此指南是正确的。
我该如何解决这个问题?
提前致谢!

请参考此链接:https://dev59.com/8prga4cB1Zd3GeqPkUad#43736188 - Anima-t3d
6个回答

21

我遇到了同样的问题,通过在react-native运行命令中添加appIdSuffix来解决了问题。

react-native run-android --variant variantDebug --appIdSuffix suffix

添加 --appIdSuffix=mySufix 对我很有效。 - Ëuclïdës Ďŕÿ'C

12
在运行命令中添加--appId,这样React Native就会知道在哪里找到主Activity: react-native run-android --variant=stagingDebug --appId com.some.id.staging

由于某种原因,这对我不起作用。我在每个“productFlavors”中都有一个“applicationId”。它尝试启动错误的应用程序ID的活动:“react-native-cli: 2.0.1-react-native: 0.59.8 -” - Gianfranco P.

7

使用以下步骤从设备中卸载应用程序:

cd android && ./gradlew uninstallAll

然后使用以下命令再次运行应用程序:

react-native start
react-native run-android

1
该命令只是在设备上卸载了应用程序,但根本没有解决问题。 - Ëuclïdës Ďŕÿ'C

1

0

尝试像这样提供resValue

staging { applicationId "com.some.id.staging" resValue "string", "build_config_package", "com.some.id" }


我应该在哪里添加resValue? - Ëuclïdës Ďŕÿ'C

0
因为你在productFlavors中更改了applicationId,所以react-native-cli无法识别它。要解决这个问题,只需在运行启动命令时添加你更改后的应用程序ID即可。
react-native run-android --variant=staging --appId com.some.id.staging

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接