最近学习Compose,一开始学习的Compose版本是1.1.1,学习的过程中发现, LazyHorizontalGrid
这个方法只有在1.2.0以后版本才支持。
想着既然要升级,直接用最新的好了。后面按照官网建议,下载了最新的AndroidStudio,我目前下载的最新的是giraffe版本。然后直接新建了一个Compose项目这样会自动导入Compose相关依赖,在配置的过程遇到一系列的问题,这里记录下:
1、版本配置
官方推荐我们使用BOM(物料清单)来管理所有的compose依赖版本,以便于我们使用,它为我们整理了一个版本中一些相互关联的依赖,使我们在开发过程中不用担心依赖迭代和一些新特性。
kotlin
dependencies {
// 导入compose bom
implementation(platform("androidx.compose:compose-bom:2023.03.00"))
// 导入其他的没有版本号的compose依赖,让bom管理版本号
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.ui:ui-graphics")
implementation("androidx.compose.ui:ui-tooling-preview")
// 加上了版本号以覆盖material3的bom设置,使用alpha01版本
implementation ("androidx.compose.material3:material3:1.1.0-alpha01")
implementation("androidx.activity:activity-compose:1.7.0")
}
上例介绍了使用Bom的不同的两种场景,第一种就是在依赖后加上版本号从而不让Bom管理依赖版本,适用于体验新特性的时候,而第二种就是我们常用的用法,不加版本号,让Bom替我们管理依赖。
这里是Bom和库版本对应表链接 :BOM 与库版本对应表
值得注意的是Compose Kotlin 编译器扩展 (androidx.compose.compiler) 未关联到 Compose 库版本。相反,它会关联到 Kotlin 编译器插件的版本,并与 Compose 的其余部分分开发布,因此请务必使用与您的 Kotlin 版本兼容的版本。
Compose 编译器版本和Kotlin版本对应关系链接 :Compose 与 Kotlin 的兼容性对应关系
因为Kotlin插件的版本和Gradle版本之间也是有一定的对应关系,因此,升级Kotlin版本后注意Gradle版本的升级。
Gradle版本和Kotlin版本对应关系链接 Compatibility Matrix
如果你升级了Gradle,这个时候如果你的AndroidStudio版本低的话也会提醒升级AndroidStudio。
Android Studio 版本和AGP(Android gradle 插件版本)版本关系链接 :Android Gradle 插件和 Android Studio 兼容性
这里再补充两个对应关系:
Gradle版本和Java版本对应关系链接 Compatibility Matrix
Gradle和Gradle插件对应关系链接:Android Gradle 插件版本说明
上面的截图都是目前我去官网看的时候最新对应关系,截图中没有大家需要的话,就去后面附带的链接里去找,官网上会有更新。
2、配置出现问题
- 问题1:Failed to find Build Tools revision 33.0.3
参考文章【Android Bug】Failed to find Build Tools revision 30.0.3
依照上面文章,我看了下本地的 Build Tools版本,我的最大的可选择下载版本是33.0.2,没法下载33.0.3。如果大家也遇到这个问题,可以这样解决:File -> Project Structure -> Modules -> 右侧在Build Tools revision 中选择33.0.2,你的最大版本,可解决这个问题。
- 问题2:Plugin [id: 'com.android.application', version: '8.1.1', apply: false] was not found in any of the following sources
默认新建项目Gradle版本是8.0,插件8.1.1死活拉不下来,我是用的aliyun的镜像,配置的是没问题的,为解决这个问题,把版本降低到8.0.1,配置如下:
kotlin
id("com.android.application") version "8.0.1" apply false
id("org.jetbrains.kotlin.android") version "1.8.10" apply false
然后又报错;sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
证书又有问题了,然后导入了google和jcenter的证书,命令大家可以参考下:
kotlin
keytool -import -alias jcenter -file "C:\Program Files\Android\Android Studio1\jbr\lib\security\jcenter.cer" -keystore "C:\Program Files\Android\Android Studio1\jbr\lib\security\cacerts"
keytool -import -alias google -file "C:\Program Files\Android\Android Studio1\jbr\lib\security\google.cer" -keystore "C:\Program Files\Android\Android Studio1\jbr\lib\security\cacerts"
然后终于可以跑通了。。。。
最新AndroidStudio版本Maven的引用和之前的方式也不一样,这里贴下部分引用:
kotlin
repositories {
maven {
url = uri("https://maven.aliyun.com/repository/central")
}
maven {
url = uri("https://maven.aliyun.com/repository/google")
}
maven {
url = uri("https://maven.aliyun.com/repository/gradle-plugin")
}
}
码字不易,如有帮助到大家请点赞收藏,谢谢。