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

React Native构建APK报错:找不到RNGestureHandlerPackage等类

React Native Android构建失败:无法找到RNGestureHandlerPackage与RNScreensPackage类

问题场景

使用React Native 0.72.1开发应用,通过yarn add react-native-gesture-handler@2.12.1 react-native-screens@3.24.0安装依赖并完成Android端额外配置后,构建APK时出现以下错误:

> Task :app:compileDebugJavaWithJavac FAILED
E:\projects\scannget-v2.1\scannget-mobile-v21\android\app\build\generated\rncli\src\main\java\com\facebook\react\PackageList.java:19: error: cannot find symbol
import com.swmansion.gesturehandler.RNGestureHandlerPackage;
                                   ^
  symbol:   class RNGestureHandlerPackage
  location: package com.swmansion.gesturehandler
E:\projects\scannget-v2.1\scannget-mobile-v21\android\app\build\generated\rncli\src\main\java\com\facebook\react\PackageList.java:27: error: cannot find symbol
import com.swmansion.rnscreens.RNScreensPackage;
                              ^
  symbol:   class RNScreensPackage
  location: package com.swmansion.rnscreens
E:\projects\scannget-v2.1\scannget-mobile-v21\android\app\build\generated\rncli\src\main\java\com\facebook\react\PackageList.java:77: error: cannot find symbol
      new RNGestureHandlerPackage(),
          ^
  symbol:   class RNGestureHandlerPackage
  location: class PackageList
E:\projects\scannget-v2.1\scannget-mobile-v21\android\app\build\generated\rncli\src\main\java\com\facebook\react\PackageList.java:81: error: cannot find symbol
      new RNScreensPackage(),
          ^
  symbol:   class RNScreensPackage
  location: class PackageList
4 errors

原因分析

React Native 0.70+版本后,react-native-gesture-handler和react-native-screens的Android端已改用Kotlin实现,若项目未正确配置Kotlin环境或自动链接机制失效,会导致编译时无法找到对应的类。

解决方案

1. 完善Kotlin环境配置

  • 打开Android根目录下的build.gradle(非app子目录下的文件),添加Kotlin插件依赖:
    buildscript {
        ext {
            kotlinVersion = "1.8.22" // 与RN 0.72.1兼容的版本
        }
        dependencies {
            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
        }
    }
    
  • 打开app/build.gradle,在文件顶部添加Kotlin插件引用:
    apply plugin: 'kotlin-android'
    

2. 清理缓存并重新触发链接

执行以下命令清理构建缓存、重新安装依赖并触发链接:

# 清理Android构建缓存
cd android && ./gradlew clean
# 返回项目根目录重新安装依赖
cd .. && yarn install
# 手动触发依赖链接(RN 0.70+虽支持自动链接,手动触发可修复异常)
npx react-native link react-native-gesture-handler react-native-screens

3. 删除自动生成的构建文件后重新构建

若自动生成的PackageList.java存在异常,删除构建目录后重新构建:

rm -rf android/app/build
npx react-native run-android

4. 手动配置依赖包(自动链接失效时)

如果上述步骤无效,可手动在应用入口类中添加依赖包:

  • 若项目使用Kotlin的MainApplication.kt:
    import com.swmansion.gesturehandler.react.RNGestureHandlerPackage
    import com.swmansion.rnscreens.RNScreensPackage
    
    override fun getPackages(): List<ReactPackage> {
        return PackageList(this).packages.apply {
            add(RNGestureHandlerPackage())
            add(RNScreensPackage())
        }
    }
    
  • 若项目使用Java的MainApplication.java:
    import com.swmansion.gesturehandler.react.RNGestureHandlerPackage;
    import com.swmansion.rnscreens.RNScreensPackage;
    
    @Override
    protected List<ReactPackage> getPackages() {
        List<ReactPackage> packages = new PackageList(this).getPackages();
        packages.add(new RNGestureHandlerPackage());
        packages.add(new RNScreensPackage());
        return packages;
    }
    

5. 验证依赖版本兼容性

确认使用的依赖版本与RN 0.72.1兼容,当前使用的react-native-gesture-handler@2.12.1和react-native-screens@3.24.0是兼容的;若仍有问题,可尝试降级到稳定兼容版本(如gesture-handler@2.10.0、screens@3.20.0)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:17:29