前言

在被指定为Android的官方语言后,Kotlin逐渐取代了Java,成为现今Android开发人员的首选,它让Android开发更加轻松和快捷。
Java和Kotlin语言的相似之处颇多,因此Java开发人员转用Kotlin比较容易。但也正因如此,开发人员很容易忽略Kotlin的独特性及其惯用方法,这可能导致编写的Kotlin代码与Java的代码类似。
之前项目使用Kotlin都是不太满意kotlin的编译速度,想着早点优化早点享受的原则(主要后面项目还得自己搞)对Kotlin的编译速度进行优化。
优化步骤:
1.优化gradle配置:
在项目根目录创建一个gradle.properties文件
//开启gradle并行编译,开启daemon,调整jvm内存大小
org.gradle.daemon=true
org.gradle.configureondemand=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
//开启gradle缓存
org.gradle.caching=true
android.enableBuildCache=true
//开启kotlin的增量和并行编译
kotlin.incremental=true
kotlin.incremental.java=true
kotlin.incremental.js=true
kotlin.caching.enabled=true
kotlin.parallel.tasks.in.project=true //开启kotlin并行编译
//优化kapt
kapt.use.worker.api=true //并行运行kapt1.2.60版本以上支持
kapt.incremental.apt=true //增量编译 kapt1.3.30版本以上支持
kapt.include.compile.classpath=false //kapt avoiding 如果用kapt依赖的内容没有变化,会完全重用编译内容,省掉最上图中的:app:kaptGenerateStubsDebugKotlin的时间
在上面的配置中,我们首先调整了gradle的配置,然后开启了缓存和kotlin和kapt的增量编译。
如果项目中使用了kapt请使用最新版本的kapt,当前写该文章时kapt的最新版本为1.3.31
2.优化app的build.gradle
1.在项目的app目录中的build.gradle文件中修改:
//如果有用到kapt添加如下配置
kapt {
useBuildCache = true
javacOptions {
option("-Xmaxerrs", 500)
}
}
//在Android代码块中添加如下配置:(可优化最上图中transformClassDexBuilderForDebug的时间)
android {
dexOptions {
preDexLibraries true
maxProcessCount 8
}
}
2.其他不太重要的优化,好像对时间影响不算特别大
优化版本号的配置,如果是debug版本不要使用动态版本号
//原配置
defaultConfig {
...
minSdkVersion 19
targetSdkVersion 28
versionCode gitVersionCode()
versionName currentName()
...
}
//修改为
defaultConfig {
...
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0.0"
...
}
applicationVariants.all { variant ->
...
if (variant.buildType.name == "release") {
versionName = currentName()
versionCode = gitVersionCode()
}
...
}
以前我们的配置上versionCode是使用的git的提交次数作为版本号的,在本地debug状态的时候其实最好是写死版本号,如果版本号变化会导致需要重新生成Manifest文件以及完整的编译应用,导致InstantRun无法使用(PS其实我们一直没用InstantRun)。所以修改为写死版本号,然后在applicationVariants中判断如果是release才使用正常的版本号。然后还有一个就是使用依赖版本的时候,尽量不要使用+号的版本依赖,使用固定版本号速度会更快。
最后
其实一些东西的优化项目经验多了就会了(被逼的),自己找找资料,积累积累就好了。这里我还有一些整理的资料就发给大家,有需要的扫码领取!
Kotlin入门教程指南,全家桶学习资料(含高级Kotlin强化和Kotlin协程入门进阶实战)
Kotlin 是一种新型的静态类型编程语言,有超过 60% 的专业 Android 开发者在使用,它有助于提高工作效率、开发者满意度和代码安全性。不仅可以减少常见代码错误,还可以轻松集成到现有应用中。
在这里为了方便大家系统的学习Kotlin,这里特意联合了阿里P7架构师和谷歌技术团队共同整理了一份Kotlin全家桶学习资料。
内容概要:Kotlin 入门教程指南、高级Kotlin强化实战和史上最详Android版kotlin协程入门进阶实战 。
内容特点:条理清晰,含图像化表示更加易懂。
由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Android中高级面试必知必会 完整文档的可扫描下方卡片免费获取!
《Kotlin入门教程指南》
第一章 Kotlin 入门教程指南
● 前言

第二章 概述
● 使用 Kotlin 进行服务器端开发
● 使用 Kotlin 进行 Android 开发
● Kotlin JavaScript 概述
● Kotlin/Native 用于原生开发
● 用于异步编程等场景的协程
● Kotlin 1.1 的新特性
● Kotlin 1.2 的新特性
● Kotlin 1.3 的新特性

第三章 开始
● 基本语法
● 习惯用法
● 编码规范

第四章 基础
● 基本类型
● 包
● 控制流:if、when、for、while
● 返回和跳转

第五章 类与对象
● 类与继承
● 属性与字段
● 接口
● 可见性修饰符
● 扩展
● 数据类
● 密封类
● 泛型
● 嵌套类与内部类
● 枚举类
● 对象表达式与对象声明
● Inline classes
● 委托
委托属性

第六章 函数与 Lambda 表达式
● 函数
● 高阶函数与 lambda 表达式
● 内联函数

第七章 其他
● 解构声明
● 集合:List、Set、Map
● 区间
● 类型的检查与转换“is”与“as”
● This 表达式
● 相等性
● 操作符重载
● 空安全
● 异常
● 注解
● 反射
● 类型安全的构建器
● 类型别名
● 多平台程序设计
● 关键字与操作符

第八章 Java 互操作与 JavaScript
● 在 Kotlin 中调用 Java 代码
● Java 中调用 Kotlin
● JavaScript 动态类型
● Kotlin 中调用 JavaScript
● JavaScript 中调用 Kotlin
● JavaScript 模块
● JavaScript 反射
● JavaScript DCE

第九章 协程
● 协程基础
● 取消与超时
● 通道 (实验性的)
● 组合挂起函数
● 协程上下文与调度器
● 异常处理
● select 表达式(实验性的)
● 共享的可变状态与并发

第十章 工具
● 编写 Kotlin 代码文档
● Kotlin 注解处理
● 使用 Gradle
● 使用 Maven
● 使用 Ant
● Kotlin 与 OSGi
● 编译器插件
● 不同组件的稳定性

第十一章 常见问题总结
● FAQ
● 与 Java 语言比较
● 与 Scala 比较【官方已删除】

《高级Kotlin强化实战 》
第一章 Kotlin 入门教程
● Kotlin 概述
● Kotlin 与 Java 比较
● 巧用 Android Studio
● 认识 Kotlin 基本类型
● 走进 Kotlin 的数组
● 走进 Kotlin 的集合
● 完整代码
● 基础语法

第二章 Kotlin 实战避坑指南
● 方法入参是常量,不可修改
● 不要 Companion、INSTANCE?
● Java 重载,在 Kotlin 中怎么巧妙过渡一下?
● Kotlin 中的判空姿势
● Kotlin 复写 Java 父类中的方法
● Kotlin “狠”起来,连TODO都不放过!
● is、as` 中的坑
● Kotlin 中的 Property 的理解
● also 关键字
● takeIf 关键字
● 单例模式的写法

第三章 项目实战《Kotlin Jetpack 实战》
● 从一个膜拜大神的 Demo 开始
● Kotlin 写 Gradle 脚本是一种什么体验?
● Kotlin 编程的三重境界
● Kotlin 高阶函数
● Kotlin 泛型
● Kotlin 扩展
● Kotlin 委托
● 协程“不为人知”的调试技巧
● 图解协程:suspend

《史上最详Android版kotlin协程入门进阶实战 》
第一章 Kotlin协程的基础介绍
● 协程是什么
● 什么是Job 、Deferred 、协程作用域
● Kotlin协程的基础用法

第二章 kotlin协程的关键知识点初步讲解
● 协程调度器
● 协程上下文
● 协程启动模式
● 协程作用域
● 挂起函数

第三章 kotlin协程的异常处理
● 协程异常的产生流程
● 协程的异常处理

第四章 kotlin协程在Android中的基础应用
● Android使用kotlin协程
● 在Activity与Framgent中使用协程
● ViewModel中使用协程
● 其他环境下使用协程

第五章 kotlin协程的网络请求封装
● 协程的常用环境
● 协程在网络请求下的封装及使用
● 高阶函数方式
● 多状态函数返回值方式

第六章 深入kotlin协程原理(一)
● suspend的花花肠子
● 藏在身后的-Continuation
● 村里的希望-SuspendLambda

第七章 深入kotlin协程原理(二)
● 协程的那些小秘密
● 协程的创建过程
● 协程的挂起与恢复
● 协程的执行与状态机

第八章 Kotlin Jetpack 实战
● 从一个膜拜大神的 Demo 开始
● Kotlin 写 Gradle 脚本是一种什么体验?
● Kotlin 编程的三重境界
● Kotlin 高阶函数
● Kotlin 泛型
● Kotlin 扩展
● Kotlin 委托
● 协程“不为人知”的调试技巧
● 图解协程原理

第九章 Kotlin + 协程 + Retrofit + MVVM优雅的实现网络请求
● 项目配置
● 实现思路
● 协程实现
● 协程 + ViewModel + LiveData实现
● 后续优化
● 异常处理
● 更新Retrofit 2.6.0

由于文章内容比较多,篇幅有限,资料已经被整理成了PDF文档,有需要 Android中高级面试必知必会 完整文档的可以加微信可免费领取!(承诺:100%免费)
更有更多资料,加微信免费领取


665

被折叠的 条评论
为什么被折叠?



