React Native打包APK遇com.swmansion.common.GestureHandlerStateManager重复定义错误
解决React Native Release打包Dex合并冲突(com.swmansion.common.GestureHandlerStateManager重复定义)
针对你遇到的Release打包时Dex合并失败、类重复定义的问题,可尝试以下几种解决方案:
1. 调整依赖版本适配React Native版本
你的React Native版本是0.70.7,而react-native-reanimated 3.x系列要求最低RN版本为0.71.0,版本不兼容可能是导致类重复定义的核心原因。建议降级reanimated到RN0.70.x兼容的版本:
- 执行命令卸载当前版本:
npm uninstall react-native-reanimated - 安装适配版本:
npm install react-native-reanimated@2.12.0 - 重新执行
npx pod-install(iOS端)和清理gradle缓存后再打包
2. 配置Gradle强制统一依赖或排除重复类
如果不想降级版本,可在Android项目中通过Gradle配置处理重复类:
方法A:强制统一依赖版本
在android/build.gradle的allprojects块中添加resolutionStrategy,强制指定两个库的版本:
allprojects { repositories { // 你的仓库配置 } configurations.all { resolutionStrategy { force 'com.swmansion.gesture-handler:gesture-handler:2.9.0' force 'com.swmansion.reanimated:reanimated:3.0.0' } } }
方法B:通过packagingOptions忽略重复类
在android/app/build.gradle的android块中添加packagingOptions,忽略重复的类文件:
android { // 其他配置 packagingOptions { pickFirst 'com/swmansion/common/GestureHandlerStateManager.class' } }
3. 彻底清理缓存后重新构建
有时候缓存残留也会导致这类问题,执行以下步骤:
- 清理node_modules:
rm -rf node_modules && npm install - 清理Android缓存:
cd android && ./gradlew clean && rm -rf .gradle && rm -rf build - 重新打包:
./gradlew assembleStagingRelease
内容的提问来源于stack exchange,提问作者Vaibhav Rathore
相关产品推荐
相关产品推荐

