如何修复Flutter依赖库编译时的unchecked及废弃API警告?
你遇到的编译警告:
注:C:\Users\Gert\AppData\Local\Pub\Cache\hosted\pub.dev\cloud_firestore-4.5.0\android\src\main\java\io\flutter\plugins\firebase\firestore\FlutterFirebaseFirestoreMessageCodec.java 使用了未检查或不安全的操作。
注:请使用 -Xlint:unchecked 重新编译以获取详细信息。
注:C:\Users\Gert\AppData\Local\Pub\Cache\hosted\pub.dev\geocoding_android-2.1.0\android\src\main\java\com\baseflow\geocoding\Geocoding.java 使用或重写了已废弃的API。
注:请使用 -Xlint:deprecation 重新编译以获取详细信息。
注:C:\Users\Gert\AppData\Local\Pub\Cache\hosted\pub.dev\geolocator_android-4.1.7\android\src\main\java\com\baseflow\geolocator\location\FusedLocationClient.java 使用或重写了已废弃的API。
注:请使用 -Xlint:deprecation 重新编译以获取详细信息。
注:C:\Users\Gert\AppData\Local\Pub\Cache\hosted\pub.dev\location-4.4.0\android\src\main\java\com\lyokone\location\FlutterLocation.java 使用或重写了已废弃的API。
核心解决方案:更新第三方依赖包
这些警告全部来自你项目依赖的Flutter Android插件包,并非你自身代码问题,优先通过更新包到最新稳定版解决:
- 打开项目根目录的
pubspec.yaml文件,找到对应依赖项:cloud_firestore、geocoding、geolocator、location。 - 将这些依赖的版本号替换为当前最新稳定版(可通过pub.dev查询各包的最新版本),示例:
dependencies: cloud_firestore: ^4.17.0 geocoding: ^2.1.1 geolocator: ^10.1.0 location: ^5.0.3 - 执行命令更新依赖:
flutter pub get - 清理缓存并重新编译:
flutter clean flutter build apk # 按需替换为你的编译命令
备选方案:抑制编译警告
如果部分包最新版仍存在警告,或你暂时无法更新,可修改Android项目配置来屏蔽警告:
- 打开项目的
android/app/build.gradle文件,在android代码块中添加lintOptions配置:android { // 保留原有配置... lintOptions { disable 'unchecked' // 屏蔽未检查操作警告 disable 'deprecation' // 屏蔽废弃API警告 abortOnError false // 可选:设置lint不中断编译 } } - 重新编译项目即可。
补充说明
这些警告本身不会导致编译失败,仅提示第三方包存在代码规范问题。更新包是最彻底的解决方式,因为包维护者通常会在新版本中修复废弃API调用和不安全操作问题。
内容的提问来源于stack exchange,提问作者Eugene Ochako

