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

news/2024/5/20 1:53:54 标签: composer, android studio, gradle

最近学习Compose,一开始学习的Compose版本是1.1.1,学习的过程中发现, LazyHorizontalGrid这个方法只有在1.2.0以后版本才支持。

想着既然要升级,直接用最新的好了。后面按照官网建议,下载了最新的AndroidStudio,我目前下载的最新的是giraffe版本。然后直接新建了一个Compose项目这样会自动导入Compose相关依赖,在配置的过程遇到一系列的问题,这里记录下:

1、版本配置

官方推荐我们使用BOM(物料清单)来管理所有的compose依赖版本,以便于我们使用,它为我们整理了一个版本中一些相互关联的依赖,使我们在开发过程中不用担心依赖迭代和一些新特性。

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,配置如下:

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的证书,命令大家可以参考下:

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的引用和之前的方式也不一样,这里贴下部分引用:

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")
	 }
}

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


http://www.niftyadmin.cn/n/4990048.html

相关文章

重要公告 | Moonbeam又发Grants,3家项目获得支持

在充满活力的Moonbeam社区的支持下,第二批生态系统Grant已正式获得批准,资金分配将在近期开始。这些Grants标志着Moonbeam生态发展开启新篇章,展现了对促进Moonbeam生态系统内创新、协作和增长的承诺。请查看下方Grant的详细信息,…

SAP MM学习笔记26- SAP中 振替转记(转移过账)和 在库转送(库存转储)4- Plant间在库转送 之 在库转送Order(有出荷)

SAP 中在库移动 不仅有入库(GR),出库(GI),也可以是单纯内部的转记或转送。 1,振替转记(转移过账) 2,在库转送(库存转储) 1&#xff…

二进制安全虚拟机Protostar靶场 安装,基础知识讲解,破解STACK ZERO

简介 pwn是ctf比赛的方向之一,也是门槛最高的,学pwn前需要很多知识,这里建议先去在某宝上买一本汇编语言第四版,看完之后学一下python和c语言,python推荐看油管FreeCodeCamp的教程,c语言也是 pwn题目大部…

vue3性能提升表现具体在哪里(简洁版)

总的来说,vue3的效率提升的原因就是对一些静态的东西做了各种优化: 静态的节点会被缓存 连续多个的静态节点会被编译成字符串 静态的事件处理函数也会被缓存 dom树对比的时候只对比动态的节点,.因为vue3将每个dom上的动态节点都以数组的形式保存在block 节点中,对比只需要循…

[国产MCU]-W801开发实例-高速SPI控制器

高速SPI控制器 文章目录 高速SPI控制器1、SPI控制器介绍2、SPI驱动API介绍3、SPI驱动使用1、SPI控制器介绍 W801的高速SPI控制器兼容SPI物理协议,通过约定与主机交互的数据格式,主机可以对设备进行高速访问,最高支持工作频率为50MHz。 高速SPI控制器有如下特性: 兼容通用…

KNN(k邻近)

给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的 k 个实例,这 k 个实例的多数属于某个类,就把该输入实例分为这个类。 优点: 精度高、对异常值不敏感、无数据输入假定 缺点: 计算复杂度高、空间复杂度高 …

upload-labs靶场通关详解

文章目录 Pass-01Pass-02Pass-03Pass-04Pass-05Pass-06Pass-07Pass-08Pass-09Pass-10Pass-11Pass-12Pass-13Pass-14Pass-15Pass-16Pass-17Pass-18Pass-19Pass-20方法一(文件夹名欺骗绕过)方法二(%00截断攻击) Pass-21 Pass-01 绕过…

leetcode分类刷题:易混题辨析一、209. 长度最小的子数组 vs 560. 和为K的子数组

1、刷题慢慢积累起来以后,遇到相似的题目时,会出现算法思路混淆了 2、这两道题都是对连续子数组加和进行考察,细节区别在于数组元素在209. 长度最小的子数组为正整数(窗口增加元素递增,减少元素递减)&#…