Flutter编译时出现第三方依赖Deprecated Apis警告该如何消除?
问题告警日志
Note: C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-1.6.0\android\src\main\java\io\flutter\plugins\firebase\core\FlutterFirebaseCorePlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\flutter\.pub-cache\hosted\pub.dartlang.org\cloud_firestore-2.5.1\android\src\main\java\io\flutter\plugins\firebase\firestore\FlutterFirebaseFirestorePlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\flutter\.pub-cache\hosted\pub.dartlang.org\cloud_firestore-2.5.1\android\src\main\java\io\flutter\plugins\firebase\firestore\streamhandler\TransactionStreamHandler.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. Note: C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-3.1.0\android\src\main\java\io\flutter\plugins\firebase\auth\FlutterFirebaseAuthPlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. C:\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_storage-10.0.3\android\src\main\java\io\flutter\plugins\firebase\storage\FlutterFirebaseStoragePlugin.java:38: warning: [deprecation] Registrar in PluginRegistry has been deprecated public static void registerWith(PluginRegistry.Registrar registrar) { ^ 1 warning Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. Note: C:\flutter\.pub-cache\hosted\pub.dartlang.org\geocoding-2.0.1\android\src\main\java\com\baseflow\geocoding\GeocodingPlugin.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: C:\flutter\.pub-cache\hosted\pub.dartlang.org\image_picker-0.8.4\android\src\main\java\io\flutter\plugins\imagepicker\ImagePickerDelegate.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.
这些警告均来自第三方Flutter依赖的Android原生层代码,属于依赖包本身的代码兼容问题,而非本地项目代码错误。升级依赖后仍存在警告可按以下步骤操作:
方法1:清理pub缓存与项目构建缓存
- 清理全局pub缓存,执行命令:
flutter pub cache clean - 进入你的Flutter项目根目录,删除以下文件/文件夹:
pubspec.lock依赖锁定文件.dart_tool项目dart临时构建目录
- 重新拉取项目依赖:
flutter pub get - 进入项目android子目录,清理Android构建缓存:
Windows系统执行:gradlew clean
Mac/Linux系统执行:./gradlew clean - 重新编译项目,检查警告是否消除。
方法2:清理缓存后警告仍存在的处理方案
如果清理后警告仍然存在,说明是对应依赖包的当前版本本身就存在废弃API调用问题,并非缓存导致,你可以通过配置gradle临时屏蔽这类不影响运行的编译警告:
打开项目android/build.gradle文件,在allprojects配置块中添加如下配置:
allprojects { // 保留原有其他配置不变,新增以下内容 gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs += "-Xlint:-deprecation" options.compilerArgs += "-Xlint:-unchecked" } } }
保存后重新编译即可消除这类警告输出。如果需要彻底修复问题,需要等待对应依赖的官方发布修复了废弃API兼容问题的版本再升级。
内容的提问来源于stack exchange,提问作者Rafik Frtas
相关产品推荐
相关产品推荐

