You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级com.google.firebase:firebase-firestore:16.0.0后遇InvalidPackage lint错误求助

解决Firebase Firestore 16.0.0更新后的Lint InvalidPackage错误

这个问题我之前碰到过好几次,本质是grpc依赖里的DnsNameResolver.JndiResolver类引用了Android SDK不包含的javax.naming相关包,而Lint的InvalidPackage规则会把这种跨平台的包引用标记为错误。下面给你几个实用的解决办法:

方法一:禁用grpc的JndiResolver(推荐)

Android环境下grpc根本用不上JndiResolver,我们可以直接让它不加载这个类,从根源避免lint报错。只需要在你的AndroidManifest.xml里添加一行meta-data:

<meta-data
    android:name="io.grpc.internal.DnsNameResolver.disable_jndi"
    android:value="true" />

这样grpc会自动切换到Android兼容的DNS解析实现,完全不影响功能,还能保留Lint的其他检查规则。

方法二:在Lint配置中忽略特定错误

如果不想修改Manifest,也可以针对性地忽略这个InvalidPackage错误,既可以全局禁用,也可以精准只忽略grpc相关的问题:

方式1:通过build.gradle全局禁用

在app模块的build.gradle里添加Lint配置:

android {
    lintOptions {
        // 全局忽略InvalidPackage错误(简单粗暴,但会错过其他合法的InvalidPackage提示)
        disable 'InvalidPackage'
        // 或者只在Release构建时忽略(如果Debug模式不想关闭检查)
        checkReleaseBuilds false
    }
}

方式2:通过lint.xml精准忽略

在app/src/main目录下创建lint.xml文件,只忽略grpc那个类的包引用问题:

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <issue id="InvalidPackage">
        <ignore path="**/io/grpc/internal/DnsNameResolver$JndiResolver.class"/>
    </issue>
</lint>

这种方式不会影响其他地方的InvalidPackage检查,比全局禁用更严谨。

方法三:升级Firebase Firestore版本

如果项目允许的话,直接把Firebase Firestore升级到17.0.0及以上版本,后续的Firebase版本已经调整了grpc依赖,不会再触发这个Lint错误。不过如果因为兼容性问题不能升级,前面两种方法更合适。

内容的提问来源于stack exchange,提问作者Sam Stern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:46:21