Kotlin学习之旅(D14)-学习资料汇总

本文汇总了Kotlin学习的各种资源,包括官方文档、在线编程书籍、视频教程及实用项目,适合初学者和有经验的开发者,旨在提供全面的学习路径。

首先祝所有程序员1024节日快乐

我们也来到了Kotlin学习之旅的最后一天

今天的主题是:学习资料汇总

前言

Kotlin学习之旅(D1)-学习计划&基本语法

Kotlin学习之旅(D2)-基本语法

Kotlin学习之旅(D3)-类与继承

Kotlin学习之旅(D4)-函数与Lambda表达式

Kotlin学习之旅(D5)-高级语法

Kotlin学习之旅(D6)-Kotlin Idioms part 1

Kotlin学习之旅(D7)-Kotlin Idioms part 2

Kotlin学习之旅(D8)-From Java to Kotlin

Kotlin学习之旅(D9)-Android Extensions

Kotlin学习之旅(D10)- Unit Test with Kotlin

Kotlin学习之旅(D11)-第一个App之项目介绍

Kotlin学习之旅(D12)-第一个App之功能实现

Kotlin学习之旅(D13)-第一个App之功能完善

官方文档

俗话说得好,官方文档就是最好的入门教程,对于有其他语言基础的开发者来说,通过官方文档来学习是最好的了,因为结构清晰,解释准确,而且保证最新的(相对书籍和视频来说)。

因此建议大家可以通过官网来学习Kotlin,除了看理论基础,Kotlin还提供了在线编辑器和代码示例

文档类

在线编程

PS: Koans 还提供了Android Studio的插件,直接在Plugins里面搜索Kotlin Educational Plugin安装就可以了

书籍

如果是没有编程基础,或者觉得官方文档看完了还是不太懂的童鞋,我推荐你们去看看以下的书籍,因为书籍往往是作者的经验的总结,并且是通过一定的结构和顺序来组织的,不像官网文档是一个个零散的知识点,很多书籍在学习完理论以后,都会通过一个综合的Demo来运行书中学习到的知识点,这种方式更适合初学者。

《Kotlin in Action》

这本书就不多介绍了,豆瓣评分**9.1分 **,每个学习Kotlin的人都应该看一遍。建议看英文,中文版的名字是《Kotlin实战》

有需要英文版的童鞋请自行百度,我就不放电子版的链接了

《Kotlin for Android Developers》

这本书的作者是Antonio Leiva,一名Android开发者,因此从书名就可以知道,这本书就是教大家用Kotlin来开发一款Android App。由于章节讲解比较详细,因此很适合初学者。一步步从零开始,最后实现自己的第一个App,这个过程还是很有成就感的,推荐给Android开发者

因为这本书国内没有出版,而京东上原版的售价是366RMB,而且还要经常没货,所以还是自行百度吧。。

《Programming Kotlin》

这本书的作者是Stephen Samuel 和 Stefan Bocutiu。两名来自英国的小哥哥。本书主要的内容包括Kotlin语言的特性,例如lambda和higher-order functions,空安全和泛型等,如果想对Kotlin这门语言有更深入的了解,可以通过这本书来学习。

总结

按照我的情况来说,光靠看官网文档是不够的,最好买1-2本书一起看。我自己选择的是《Kotlin in Action》,有些官方文档写的比较简洁的知识点,可以在书中找到对应的章节,然后跟着作者的思路完成一些小例子,在实践中学习效果更好,效率也更高。

视频

Youtube - Kotlin Tutorial

Youtube上的这个视频,我就是看着它入门的。。Kotlin Tutorial

虽然英语不够好没有全听懂,但是up主一边讲解一边敲代码,在看完官方文档之后再来看这些例子就很容易理解了。每一个视频大概就是5-10分钟,讲解一个语法/特性,零碎时间也可以跟着学~

B站- 黑马Kotlin教程

B站地址:https://www.bilibili.com/video/av17644218/

如果是在校生,时间比较充裕的话可以看这个,但是还是推荐看Youtube的,因为通过比较国内(慕课网,网易云课堂)和国外(Pluralsight , Youtube)的教学特点,发现国外的废话比较少。。整节课讲的基本上都是干货,国内的在线课程很喜欢讲理论,而且比较空洞,一个知识点照着PPT念,一下子5分钟就过去了。

其他视频

Introduction to Kotlin

Google I/O 2017演讲致力于首次向人们介绍Kotlin,并提出如何改进他们的工作流程,他涵盖了许多的基础知识,并展示了一些很酷的Kotlin用法。

Life is Great and Everything Will Be Ok, Kotlin is Here

第二个Kotlin演讲也是来自于Google I/O,涵盖了更多高级话题,如涉及模式,最佳实践和其他常用原则,这也揭示了使用Kotlin在生产中的意义以及作为新的语言的挑战。

使用Kotlin和Gradle更好的开发Android应用

介绍了Kotlin如何适应典型的Android工作流程中现有的工具

Better Android Development with Kotlin & Gradle

一个非常好的8分钟教程,可以快速了解最重要的Kotlin功能,例如缩短的变量声明,lambdas和扩展功能等。

项目

Anko

Anko是Jetbrains官方提供的一个让Kotlin开发更快速简单的类库,旨在使代码书写更加清晰易懂,形式上为DSL编程。

KBinding

MVVM模板框架

android-topeka

google 官方 material design 示例应用

GankClient-Kotlin

用 Kotlin 实现的干货集中营客户端

总结

如果是初学者,建议学习顺序为 官方文档(遇到不懂的) -> Kotlin in Action -> 看视频/项目加深理解 -> 自己做项目

如果是老司机,建议直接看官方文档,了解基本语法和特性后就可以开始做项目了,因为很多语言特性都是想通的,只是语法上有所区别,直接上手敲代码,加深理解和巩固语法就OK了。

最最重要的一条建议: Practice make Prefect.

从10月7日国庆的最后一天,到10月24日程序员日,写下了14篇博客,记录下了自己的成长轨迹。

完成了整个Kotlin学习之旅,接下来也要继续加油~

如果这一系列文章对大家有帮助的话,那真的是我的荣幸~

Day 14 - Learn Kotlin Trip, Completed.


安卓报错Duplicate class org.jetbrains.org.objectweb.asm.util.CheckSignatureAdapter$State found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.Printer found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.Textifiable found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.Textifier found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.TraceAnnotationVisitor found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.TraceClassVisitor found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.TraceFieldVisitor found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.TraceMethodVisitor found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.TraceModuleVisitor found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10) Duplicate class org.jetbrains.org.objectweb.asm.util.TraceSignatureVisitor found in modules jetified-kotlin-compiler-embeddable-1.4.10 (org.jetbrains.kotlin:kotlin-compiler-embeddable:1.4.10) and jetified-kotlin-gradle-plugin-1.4.10 (org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.10)
04-01
<think>嗯,用户遇到了安卓项目中的重复类错误,涉及多个org.jetbrains.org.objectweb.asm.util下的类。首先,我需要理解这个问题的根本原因。错误信息显示,kotlin-compiler-embeddable和kotlin-gradle-plugin这两个依赖包含了相同的类,导致冲突。这可能是因为这两个库都依赖了不同版本的ASM库,或者它们内打包了相同类但不同版本。 接下来,我应该考虑常见的解决方法。通常,这类问题可以通过排除重复的依赖来解决。用户需要在构建文件中检查这两个模块的依赖关系,找出哪个模块引入了冲突的ASM类,然后排除掉其中一个。不过,用户提到这两个模块都是来自Kotlin的1.4.10版本,可能这时候需要确认Kotlin插件和Gradle版本是否兼容,或者是否需要升级到更高版本,因为旧版本可能存在已知的依赖冲突问题。 另外,可能需要检查项目中的其他依赖是否间接引入了不同版本的ASM库。使用Gradle的依赖树分析工具(如./gradlew app:dependencies)可以帮助识别冲突的来源。如果发现有多个版本的ASM,可以强制指定使用某个版本,或者排除其他版本。 还有可能是Gradle插件本身的问题,尤其是在使用旧版本的Kotlin插件时。查看官方文档或问题追踪系统,看看是否有相关的问题和解决方案。例如,升级到Kotlin 1.5或更高版本可能已经修复了这个问题,因为JetBrains可能在后续版本中调整了依赖管理。 用户还需要确认项目的Gradle配置是否正确,比如是否在多个地方重复声明了Kotlin插件,或者是否有第三方库强制覆盖了ASM的版本。有时候,插件之间的兼容性问题也会导致此类错误,需要逐一排查。 最后,如果排除依赖或升级版本无效,可能需要更深入分析依赖树,或者寻求社区和官方支持。提供详细的错误日志和构建文件配置会有助于更准确地定位问题。</think>这个错误是由于项目中存在重复的类定义导致的,具体涉及两个Kotlin相关模块中的ASM工具类冲突。以下是逐步分析和解决方案: **根本原因分析** 1. 冲突模块:`kotlin-compiler-embeddable`和`kotlin-gradle-plugin`都包含`org.jetbrains.org.objectweb.asm.util`包下的同名类 2. 典型触发场景:当使用较旧版本的Kotlin插件(如1.4.x)时,其内依赖的ASM库存在重复打包 **解决方案步骤** 1. **统一Kotlin版本** ```gradle // 在项目根build.gradle中确保所有Kotlin组件版本一致 buildscript { ext.kotlin_version = '1.8.22' // 推荐使用1.7.20+ dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ``` 2. **排除重复依赖** ```gradle // 在app模块的build.gradle中添加排除规则 configurations { all*.exclude group: 'org.jetbrains.org.objectweb.asm', module: 'asm-util' all*.exclude group: 'org.jetbrains', module: 'kotlin-compiler-embeddable' } ``` 3. **强制使用统一ASM版本** ```gradle // 在项目根build.gradle中添加全局约束 configurations.all { resolutionStrategy { force 'org.ow2.asm:asm:9.4' force 'org.ow2.asm:asm-util:9.4' } } ``` 4. **清理构建缓存** ```bash ./gradlew cleanBuildCache ./gradlew --stop rm -rf $HOME/.gradle/caches/ ``` **验证方法** 1. 查看依赖树: ```bash ./gradlew :app:dependencies --configuration runtimeClasspath ``` 2. 确认输出中不再出现`Duplicate classes`警告 **升级建议** - 若项目允许,建议升级到Kotlin 1.8.x+,该问题在较新版本中已通过优化依赖管理得到解决 - 检查Android Gradle Plugin版本是否与Kotlin版本兼容(参考官方兼容性文档) **技术背景** 该问题源于Kotlin编译器内使用的ASM库(Java节码操作框架)在多个子模块中的重复打包。在构建时,Gradle的依赖解析器会发现同一类的多个实例,违反JVM的类唯一性原则。通过依赖排除和版本强制可以确保类加载器只获取单一版本。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值