React Native 错误类型 3:Activity 类 {...} 不存在

问题描述 投票:0回答:2

我接手了一个用React Native写的项目,但是这个项目有点奇怪,我可以生成apk来安装,但是使用

npx react-native run-android
会得到
Error: Activity class {com.xxx.xxx/com.xxx.xxx.MainActivity} does not exist.

其实这个文件不存在,我也查了一些资料,但是对我没有帮助,然后我用

npx react-native run-android --appId com.ooo.ooo
,结果就会出现
Error: Activity class {com.ooo.ooo/com.xxx.xxx.MainActivity} does not exist.

即使之前的id是正确的,仍然会导致MainActivity不存在。

javascript android reactjs react-native mobile
2个回答
0
投票

如果项目使用具有不同 appId 或后缀的风味/变体,那么(我在经过大量惊愕+研究后才了解到)需要在启动命令中加以考虑。

例如,如果

applicationId="com.example.myapp"
(大概在 RN 0.70+ 中,你也有
namespace="com.example.myapp"
),再加上
android/app/build.gradle

    flavorDimensions "build"
    productFlavors {
        dev {
            dimension "build"
            applicationIdSuffix ".dev"
        }
    }

那么您将看到的错误并不能解释默认的

react-native run-android
命令,该命令将显示如下内容:

Error type 3 
Error: Activity class
{com.example.myapp/com.example.myapp.MainActivity} does not exist.

我本以为使用

react-native run-android --variant 'devDebug'
的变体选项可以解决这个问题,但显然不是。

因此只需修改您的命令/脚本以将其称为

react-native run-android --variant 'devDebug' --appIdSuffix 'dev'
,然后它应该启动并成功响应:

Starting: Intent { cmp=com.example.myapp.dev/com.example.myapp.MainActivity }

当然,根据您的具体配置进行调整。

哈!希望我几个小时前就意识到这个问题了。


0
投票

谢谢格雷格·海古德。就是这样!

关于我的案例:我将react-native从0.71升级到0.73.4。现在没有选择

--variant
。建议使用
--mode
代替。所以构建成功了,但后来我遇到了同样的错误

错误类型3 错误:活动类 {com.example/com.example.myapp.MainActivity} 不存在。

现在我用

-mode flavourDebug --appIdSuffix 'flavoursuffix'
来调用它,它工作得很好

© www.soinside.com 2019 - 2024. All rights reserved.