CircleCI中react-native-reanimated的buildCMakeRelWithDebInfo任务超时排查
解决CircleCI上React Native Reanimated构建卡住的问题
针对你遇到的Android构建卡在react-native-reanimated:buildCMakeRelWithDebInfo[arm64-v8a][reanimated,worklets]的问题,试试以下几个实用方案:
1. 提升CircleCI构建资源
Reanimated的CMake编译对CPU和内存要求较高,CircleCI默认资源可能不足以支撑。在你的.circleci/config.yml里给Android构建job配置更大的资源类:
jobs: build-android: machine: image: cimg/android:2025.03-node resource_class: large # 或xlarge,根据实际情况选择 steps: # 你的现有构建步骤
2. 强制多线程编译并调整优化级别
修改Reanimated的CMake编译参数,开启多线程并降低优化等级来加快构建速度:
在android/app/build.gradle中添加以下配置:
project.ext.reanimated = [ cmakeFlags: "-DCMAKE_BUILD_PARALLEL_LEVEL=4 -DCMAKE_CXX_FLAGS=-O2" ]
CMAKE_BUILD_PARALLEL_LEVEL设置为对应资源类的CPU核心数,large资源一般是4核,所以设为4即可。
3. 清理缓存避免损坏 artifacts
CircleCI的缓存可能残留了损坏的编译文件,导致构建卡住。在构建步骤中加入缓存清理:
steps: - run: name: Clean Gradle and build artifacts command: | ./gradlew clean rm -rf ~/.gradle/caches/modules-2/files-2.1/com.facebook.react/react-native/ rm -rf android/app/build/intermediates
或者在fastlane lane里先执行clean任务:
lane :build_android do gradle(task: "clean", project_dir: "android") gradle(task: "assembleRelease", project_dir: "android") end
4. 调整Reanimated版本兼容性
当前使用的3.17.1可能和RN 0.78.1存在兼容性问题,试试降级到经过验证的兼容版本,比如3.15.0:
"react-native-reanimated": "^3.15.0"
调整后记得重新安装依赖并清理缓存。
5. 确认Ninja路径配置
虽然已经安装Ninja,但要确保CMake能正确找到它。在CircleCI步骤中添加验证和路径配置:
- run: name: Verify Ninja setup command: | ninja --version # 如果Ninja不在默认PATH,添加路径 if ! command -v ninja &> /dev/null; then export PATH="$PATH:/usr/local/bin" fi
内容的提问来源于stack exchange,提问作者Mees Maas
相关产品推荐
相关产品推荐

