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
相关产品推荐
相关产品推荐

