Android Studio Hedgehog编译时Android 34为何不等同于UpsideDownCake?
我已将Android Studio版本更新至:
Android Studio Hedgehog | 2023.1.1 Canary 7 Build #AI-231.9011.34.2311.10238683, built on June 1, 2023 Runtime version: 17.0.6+0-17.0.6b829.9-10027231 x86_64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. macOS 12.6.1 GC: G1 Young Generation, G1 Old Generation Memory: 2048M Cores: 12 Metal Rendering is ON Registry: external.system.auto.import.disabled=true debugger.new.tool.window.layout=true ide.text.editor.with.preview.show.floating.toolbar=false ide.experimental.ui=true ide.images.show.chessboard=true
并将Android应用的gradle文件重构为:
android { namespace 'com.xxxxxxx.xxxxxxxxx' compileSdk 34 buildToolsVersion = "34.0.0" defaultConfig { applicationId 'com.xxxxxxx.xxxxxxxxx' minSdk 26 targetSdk 34 versionCode 7 versionName "3.0.4" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary true } } }
随后更新gradle依赖,引入版本:
com.google.android.material:material:1.10.0-alpha03
编译失败,错误信息显示依赖com.google.android.material:material:1.10.0-alpha03要求编译目标为Android API代号"UpsideDownCake",但当前应用编译目标为android-34。请问为何Android 34和UpsideDownCake不等效,该如何解决这个编译失败问题?
为什么Android 34和UpsideDownCake不等效?
Android API 34对应的是Android 14 Beta版,而UpsideDownCake是Android 14的开发代号。在com.google.android.material:material:1.10.0-alpha03发布时,Android 14还处于早期预览阶段,Google当时只用开发代号指代这个版本,正式的API等级34还没被该版本的Material库纳入识别范围,所以会出现两者不等效的判断。
解决方法
方法1:切换为开发代号编译
在gradle配置里,把compileSdk和targetSdk的值从34改成"UpsideDownCake",同时要确保你的Android Studio已经安装了UpsideDownCake对应的SDK组件:
android { namespace 'com.xxxxxxx.xxxxxxxxx' compileSdk "UpsideDownCake" buildToolsVersion = "34.0.0" defaultConfig { applicationId 'com.xxxxxxx.xxxxxxxxx' minSdk 26 targetSdk "UpsideDownCake" // 其他配置保持不变 } }
方法2:升级Material组件库版本
改用更高版本的com.google.android.material:material库,后续发布的正式版或更新的预览版会适配已确定的API 34标识。比如可以尝试1.10.0正式版(如果已发布),或者更新到后续的alpha/beta版本,这些版本通常会支持compileSdk 34的配置。
内容的提问来源于stack exchange,提问作者Hector

