Android Studio引入firebase-auth触发compileSdkVersion版本报错
firebase-auth存在传递依赖,会自动拉取androidx.browser:browser:1.4.0组件,该版本的AAR元数据强制要求compileSdkVersion必须大于等于31,你当前项目配置的compileSdk为29,不满足版本要求才会触发编译报错。
你之前引入的firebase-database、Firestore组件不会拉取这个高版本的browser依赖,所以不会触发同类错误,这也是为什么注释掉firebase-auth依赖后编译就能恢复正常的原因。不管是用BOM自动匹配版本,还是手动指定firebase-auth:21.0.6,都会拉到符合版本规则的1.4.0版browser,所以两种引入方式都会报同样的错。
根据你项目的实际适配需求二选一即可:
方案1:升级compileSdk版本(官方推荐,无兼容隐患)
直接修改app模块build.gradle中的compileSdk配置,将版本从29提升到31及以上(当前稳定版可选33),这是最稳妥的处理方式,不会出现依赖版本冲突问题。
修改配置参考:
android { compileSdkVersion 31 // 可替换为更高的稳定版本 // 其余原有配置保持不变即可 }
单纯升级compileSdk不会影响应用在低版本安卓系统上的运行兼容性,只是编译时使用更高版本的SDK校验,不需要改动业务代码逻辑。
方案2:强制锁定低版本browser依赖(临时适配方案,无需改compileSdk)
如果短期内没有升级compileSdk的计划,可以在依赖配置中强制指定browser组件的版本为不要求compileSdk 31的低版本,阻断高版本browser的传递拉取。
只需要在dependencies块中添加一行配置即可:
implementation 'androidx.browser:browser:1.3.0'
添加完成后同步Gradle,构建时就会使用1.3.0版本的browser组件,不会再触发compileSdk版本校验报错,该版本和你当前使用的firebase-auth版本兼容性正常,不会影响授权相关功能的使用。
注意:如果后续要升级Firebase相关组件到更新的版本,建议还是同步升级compileSdk到对应要求的版本,避免其他依赖出现同类的AAR元数据校验问题。
内容的提问来源于stack exchange,提问作者VondeTaconadis

