Compose学习 - 环境配置及compose、kotlin插件、gradle、AndroidStudio版本对应关系

最近学习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")
	 }
}

码字不易,如有帮助到大家请点赞收藏,谢谢。

相关推荐
indexsunny14 分钟前
互联网大厂Java面试实战:Spring Boot与微服务在电商场景的应用解析
java·spring boot·redis·微服务·kafka·gradle·maven
stevenzqzq1 小时前
trace和Get thread dump的区别
java·android studio·断点
stevenzqzq3 小时前
Android Studio 断点调试异常相关选项总结
android·ide·android studio
stevenzqzq1 天前
Android Studio 断点调试核心技巧总结
android·ide·android studio
stevenzqzq1 天前
androidstudio断点调试技巧1
android·android studio·断点
冬奇Lab1 天前
【Kotlin系列01】Kotlin快速入门:环境搭建与Hello World
android·kotlin·android studio
zhanglb122 天前
Gradle 全局配置使用
gradle·android studio·intellij idea
stevenzqzq2 天前
Android Studio Logcat 基础认知
android·ide·android studio·日志
朝花不迟暮2 天前
使用Android Studio生成apk,卡在Running Gradle task ‘assembleDebug...解决方法
android·ide·android studio
我命由我123452 天前
Kotlin 面向对象 - 装箱与拆箱
android·java·开发语言·kotlin·android studio·android jetpack·android-studio