Flutter集成Firebase编译出现unchecked及NDK警告如何解决?
1. Cloud Firestore的unchecked/unsafe操作警告
编译时出现的警告:
Note: C:\Users\raul\AppData\Local\Pub\Cache\hosted\pub.dev\cloud_firestore-4.5.3\android\src\main\java\io\flutter\plugins\firebase\firestore\FlutterFirebaseFirestoreMessageCodec.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
为什么之前的配置无效?
你在app/build.gradle的compileOptions中添加-Xlint:unchecked,仅会作用于你的App模块代码,而这个警告来自cloud_firestore依赖库的Android源码,因此配置不会生效。
查看警告详情的方法
要获取具体的unchecked操作细节,需在项目根目录的build.gradle中添加全局编译参数,让所有Java编译任务(包括依赖库)启用该检查:
allprojects { gradle.projectsEvaluated { tasks.withType(JavaCompile) { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" } } }
重新编译后,控制台会输出具体的警告位置和内容。
消除警告的方案
由于问题来自第三方依赖库代码,你无法修改源码,可通过以下方式屏蔽警告:
在app/build.gradle中添加lint规则:
android { ... lintOptions { disable 'Unchecked' } }
是否影响程序运行?
不添加-Xlint:unchecked参数完全不会影响程序运行。该警告只是编译器提示第三方库存在未检查的类型转换等操作,属于代码规范层面的提示,Firebase官方库经过充分测试,不会导致运行时错误。
2. NDK缺失source.properties文件警告
编译时出现的警告:
[CXX1101] NDK at C:\Users\raul\AppData\Local\Android\sdk\ndk-bundle did not have a source.properties file
问题原因
ndk-bundle是旧版自动下载的NDK,现在Android官方推荐使用指定版本的NDK(Side by side),旧版ndk-bundle可能缺少必要的配置文件。
解决方法
- 打开Android Studio的SDK Manager,切换到
SDK Tools标签,勾选Show Package Details,找到NDK (Side by side),选择一个稳定版本(如25.2.9519653)安装。 - 在
app/build.gradle中指定安装的NDK版本:
android { ... ndkVersion "25.2.9519653" // 替换为你实际安装的版本号 }
- (可选)也可以在项目根目录的
local.properties文件中直接指定NDK路径:
ndk.dir=C:\\Users\\raul\\AppData\\Local\\Android\\sdk\\ndk\\25.2.9519653
重新编译后,该警告会消失。
内容的提问来源于stack exchange,提问作者rasal

