You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native安卓模拟器启动报错:Activity类.MainActivity不存在

解决React Native安卓模拟器启动时Activity类不存在的问题

报错信息

Starting: Intent { cmp=com.companyname.companynameapp/.MainActivity }
Error type 3
Error: Activity class {com.companyname.companynameapp/com.companyname.companynameapp.MainActivity} 
does not exist.

开发的React Native应用在iOS模拟器运行正常,但安卓模拟器启动时触发上述错误,已尝试网上常见调试方案无效,推测是之前修改过应用名称导致,这是首次尝试在安卓模拟器启动该应用。

已检查的相关文件

  • android/settings.gradle

    rootProject.name = 'companyname'
    include ':app'
    
  • android/src/main/AndroidManifest.xml
    怀疑此处存在问题,发现<data>条目里的应用简称(例如公司名是Proctor and Gamble,简称PG)和其他位置拼写不一致:

    <application
        android:name=".MainApplication"
        android:label="@string/app_name"
        ...
        <activity
           android:name=".MainActivity"
           android:label="@string/app_name"
           ...
           <intent-filter>
               <action android:name="android.intent.action.MAIN"
               ...
               <data android:scheme="shortedcompanyname-app" />
    
  • android/app/build.gradle

    ...
    android {
        ...
    
        namespace "com.companyname.companynameapp"
        defaultConfig {
            applicationId "com.companyname.companynameapp"
            ...
            manifestPlaceholders = ['appAuthRedirectScheme' : 'shortenedcompanyname-app']
    
  • android/app/src/main/res/values/strings.xml

    <resources>
        <string name="app_name">companyname</string>
    </resources>
    
  • android/src/main/java/com/companyname/MainActivity.java

    package com.companyname.companynameapp;
    ...
    public class MainActivity extends ReactActivity {
        ...
        @Override
        protected String getMainComponentName() {
            return "companyname";
        }
    

针对性解决步骤

  1. 统一包名与Activity路径
    报错显示系统尝试启动的Activity路径是com.companyname.companynameapp/com.companyname.companynameapp.MainActivity,但从代码看,包名是com.companyname.companynameapp,Activity类名是MainActivity,正确路径应为com.companyname.companynameapp/.MainActivity。请:

    • 确认AndroidManifest.xml中<activity>的android:name属性为.MainActivity(相对包名的简写),或完整路径com.companyname.companynameapp.MainActivity;
    • 检查MainActivity.java的文件路径是否与包名匹配:应放在android/src/main/java/com/companyname/companynameapp/目录下,若之前修改过应用名称,可能文件路径未同步更新。
  2. 统一应用标识与Scheme拼写
    你提到的<data>标签里的scheme存在拼写错误(shortedcompanyname-app vs build.gradle中的shortenedcompanyname-app),这会导致Intent匹配失败:

    • 将AndroidManifest.xml里的<data android:scheme="shortedcompanyname-app" />改为shortenedcompanyname-app,与build.gradle中的appAuthRedirectScheme值保持一致;
    • 确保strings.xml的app_name、settings.gradle的rootProject.name、MainActivity中getMainComponentName的返回值完全一致。
  3. 清理项目缓存并重建
    执行以下命令彻底清理缓存后重新构建:

    # 进入安卓目录清理gradle缓存
    cd android && ./gradlew clean
    # 返回根目录清理React Native缓存
    cd .. && npx react-native clean
    # 重新启动安卓项目
    npx react-native run-android
    
  4. 卸载模拟器中的旧应用
    模拟器中残留的旧版本应用可能导致启动冲突:

    • 在安卓模拟器的应用列表中找到该应用并卸载;
    • 或使用adb命令卸载:adb uninstall com.companyname.companynameapp,之后重新运行项目。

内容的提问来源于stack exchange,提问作者physicsboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 19:55:36