Flutter升级后出现SqfliteFfiException动态库加载失败问题求助
解决Flutter升级后sqflite_ffi找不到libsqlite3.so的问题
核心原因分析
该错误是sqflite_ffi无法加载Android平台的sqlite3动态库导致的,通常和Flutter版本升级后依赖兼容性、Android构建配置变化或缓存异常有关。
排查与解决步骤
1. 适配sqflite_ffi版本
- 打开
pubspec.yaml,确认sqflite_ffi版本与当前Flutter版本兼容(比如Flutter 3.10+建议使用sqflite_ffi 2.0+)。 - 执行命令直接升级到最新兼容版本:
flutter pub upgrade sqflite_ffi
2. 检查Android构建配置
- 在
android/app/build.gradle中,确保minSdkVersion不低于21(sqflite_ffi对Android的最低要求)。 - 在
android/build.gradle的android块中确认NDK配置:ndkVersion = "25.1.8937393" // 可替换为与当前Flutter兼容的NDK版本
3. 彻底清理构建缓存
- 依次执行以下命令清除缓存并重建项目:
flutter clean rm -rf android/.gradle rm -rf ~/.gradle/caches flutter pub get flutter run --debug
4. 强制使用系统sqlite3(Android端)
- 在数据库初始化代码中,指定使用系统自带的sqlite库:
import 'package:sqflite_ffi/sqflite_ffi.dart'; import 'dart:io'; void initDatabase() { if (Platform.isAndroid) { sqfliteFfiInit(); // 强制切换为系统sqlite3实现 databaseFactory = databaseFactoryFfiAndroid; } // 后续数据库初始化逻辑 }
5. 配置R8混淆规则(若开启混淆)
- 在
android/app/proguard-rules.pro中添加规则,避免sqlite3相关代码被混淆移除:-keep class org.sqlite.** { *; } -keep class io.flutter.plugins.sqflite.** { *; }
6. 验证Flutter SDK完整性
- 执行
flutter doctor -v,检查Android相关组件(如NDK、CMake)是否缺失,按提示补全组件。
内容的提问来源于stack exchange,提问作者Shakhzod Bakhromov
相关产品推荐
相关产品推荐

