【问题标题】:React-Native productFlavors (Error type 3: Activity class does not exist)React-Native productFlavors(错误类型 3:Activity 类不存在)
【发布时间】:2017-01-10 09:42:02
【问题描述】:

我想为我的 Android 应用使用 2 个productFlavorslivestaging

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 是正确的

我该如何解决这个问题?

提前致谢!

【问题讨论】:

标签: gradle react-native react-native-android android-build-flavors


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    添加--appId on run 命令,这样react native 就会知道在哪里可以找到Main 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 - 的活动
    【解决方案3】:

    使用以下方法从设备上卸载应用程序:

    cd android && ./gradlew uninstallAll
    

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

    react-native start
    react-native run-android
    

    【讨论】:

      【解决方案4】:

      有一个pull request pending for React Native 可以解决这个问题。

      在此之前,您只需将/node_modules/react-native/local-cli/runAndroid/runAndroid.js 替换为runAndroid.js file from the pull request

      【讨论】:

        【解决方案5】:

        尝试像这样给resValue

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

        【讨论】:

          【解决方案6】:

          因为你改了productFlavors中的applicationId,react-native-cli无法识别。要修复,只需在运行启动命令时添加更改的 appId

          react-native run-android --variant=staging --appId com.some.id.staging
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-05-09
            • 2022-11-19
            • 1970-01-01
            • 1970-01-01
            • 2021-02-28
            • 1970-01-01
            • 2020-02-01
            相关资源
            最近更新 更多