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

卸载react-native-navigation后React Native安卓项目编译报错求助

React Native卸载react-native-navigation后安卓编译错误解决方案

问题现象

卸载react-native-navigation npm包后,运行安卓项目出现编译错误,核心报错如下:

S:\Collab\ReactNative\Edesign\android\app\src\main\java\com\edesign\MainActivity.java:4: error: package com.reactnativenavigation does not exist
import com.reactnativenavigation.NavigationActivity;
                                ^
S:\Collab\ReactNative\Edesign\android\app\src\main\java\com\edesign\MainActivity.java:7: error: cannot find symbol
public class MainActivity extends NavigationActivity {
                                  ^
  symbol: class NavigationActivity
...(其他类似找不到com.reactnativenavigation相关类的错误)

问题原因

仅通过npm卸载包无法还原安卓原生代码中对react-native-navigation的修改——安装该包时,会自动修改MainActivity.java和MainApplication.java,继承特定的导航类并导入相关包,卸载后这些修改残留导致编译失败。

解决步骤

  • 还原MainActivity.java
    打开android/app/src/main/java/com/edesign/MainActivity.java(替换为你的项目实际包路径):

    1. 删除import com.reactnativenavigation.NavigationActivity;语句
    2. 将类声明从public class MainActivity extends NavigationActivity改为public class MainActivity extends ReactActivity
    3. 修正onCreate方法为React Native默认实现:
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
      }
      

    (如果项目原本有自定义的ReactActivityDelegate逻辑,保留即可)

  • 还原MainApplication.java
    打开android/app/src/main/java/com/edesign/MainApplication.java:

    1. 删除所有com.reactnativenavigation开头的导入语句
    2. 将类声明从public class MainApplication extends NavigationApplication改为:
      public class MainApplication extends Application implements ReactApplication {
      
    3. 替换NavigationReactNativeHost为默认的ReactNativeHost实现:
      private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
          @Override
          public boolean getUseDeveloperSupport() {
              return BuildConfig.DEBUG;
          }
      
          @Override
          protected List<ReactPackage> getPackages() {
              List<ReactPackage> packages = new PackageList(this).getPackages();
              // 移除之前添加的NavigationPackage相关代码
              return packages;
          }
      
          @Override
          protected String getJSMainModuleName() {
              return "index";
          }
      };
      
      @Override
      public ReactNativeHost getReactNativeHost() {
          return mReactNativeHost;
      }
      
  • 清理安卓构建缓存
    进入项目的android目录,执行:

    # Windows系统
    gradlew.bat clean
    
    # macOS/Linux系统
    ./gradlew clean
    
  • 重新运行项目
    返回项目根目录,执行:

    npm install
    npx react-native run-android
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 14:24:53