Flutter项目构建失败::rive_common:buildCMakeDebug[arm64-v8a]任务出错
Flutter应用构建失败,报错信息如下:
FAILURE: Build failed with an exception.
- 错误原因:
任务':rive_common:buildCMakeDebug[arm64-v8a]'执行失败。构建命令执行出错。
执行/home/toku/Android/Sdk/cmake/3.18.1/bin/ninja命令时出错,参数为{-C /home/toku/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rive_common-0.0.1/android/.cxx/Debug/2c2j2ru1/arm64-v8a rive_text}
ninja: 进入目录 `/home/toku/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rive_common-0.0.1/android/.cxx/Debug/2c2j2ru1/arm64-v8a'
[1/63] 编译CXX对象CMakeFiles/rive_text.dir/home/toku/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rive_common-0.0.1/ios/rive-cpp/src/rive_counter.cpp.o
编译失败:CMakeFiles/rive_text.dir/home/toku/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rive_common-0.0.1/ios/rive-cpp/src/rive_counter.cpp.o
从/home/toku/snap/flutter/common/flutter/.pub-cache/hosted/pub.dartlang.org/rive_common-0.0.1/ios/rive-cpp/src/rive_counter.cpp:5引入文件:
从../../../../../ios/rive-cpp/include/rive/rive_counter.hpp:8引入文件:
从../../../../../ios/rive-cpp/include/rive/rive_types.hpp:59引入文件:
/snap/flutter/current/usr/include/c++/9/memory:121:25: error: 将指针转换为更小的类型'uintptr_t'(别名'unsigned int')时丢失信息
const auto __intptr = reinterpret_cast<uintptr_t>(__ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
使用版本:
- Flutter 3.3.10
- rive: ^0.10.0
已执行操作:flutter clean、flutter pub cache repair
1. 升级rive依赖版本
旧版本的rive_common存在该编译兼容性问题,修改pubspec.yaml中的rive版本为较新的稳定版(如^0.11.0或更高),执行:
flutter pub get
2. 升级CMake版本
当前使用的CMake 3.18.1与rive-cpp的编译逻辑存在兼容性问题,通过Android Studio的SDK Manager将CMake升级到3.22.1及以上版本,之后重新构建项目。
3. 限制Android NDK目标架构
在android/app/build.gradle的defaultConfig中添加NDK架构过滤,避免不必要的架构编译:
android { defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } }
4. 彻底清理后重建
执行以下命令彻底清理缓存并重新构建:
flutter clean rm -rf .android .ios flutter pub get flutter run
内容的提问来源于stack exchange,提问作者ToKu404

