首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Kotlin 开发遇到坑(持续更新)

= -1){ //做一些操作 } 上面代码看上去很简单,定义了一个 User类型属性mUser,是可以为null。在if条件通过判断年级是否等于-1 来做一下操作。...对于 Null 检查是 Kotlin 特点之一。强制你在编码过程中考虑变量是否可为 null,因此可以避免很多在 Java 隐藏 NullPointerException。!!...3.2、使用 lateinit 有些情况我们不能使用 val,比如,在 Android 某些属性需要在 onCreate() 方法初始化。...: ""   } } 5、Arouter中使用kotlin编写Interceptor不生效问题 问题原因在于kotlin文件@Interceptor注解没有被正确处理,因此没有将自定义Interceptor...加入到Interceptor集合,解决方法为在modulebuild.gradle文件: 第一:加入 apply plugin: 'kotlin-kapt' 第二:使用 kapt {    arguments

4.3K02

构建配置从 Groovy 迁移到 KTS

KTS:是指 Kotlin 脚本,这是 Gradle 在构建配置文件中使用一种 Kotlin 语言形式。Kotlin 脚本是可从命令行运行 Kotlin 代码。...Groovy和KTS对比 类型 Kotlin Groovy 自动代码补全 支持 不支持 是否类型安全 是 不是 源码导航 支持 不支持 重构 自动关联 手动修改 优点: 可以使用Kotlin, 开发者可能对这个语言更熟悉更喜欢...有两个关键最佳实践可以更轻松地在 Kotlin DSL 静态上下文中工作: 使用plugins {}块 将本地构建逻辑放在构建buildSrc目录 该plugins {}块是关于保持您构建脚本声明性...implementation (group="",name="splibrary",ext = "aar") 构建变体 显式和隐式 buildTypes 在 Kotlin DSL 某些 buildTypes...,往往会抽取一个version_config.gradle来作为全局变量控制,而ext扩展函数则是必须要使用到,而在我们Gradle Kotlin DSL,如果想要使用全局控制,则需要建议使用buildSrc

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

构建配置从 Groovy 迁移到 KTS

KTS:是指 Kotlin 脚本,这是 Gradle 在构建配置文件中使用一种 Kotlin 语言形式。Kotlin 脚本是可从命令行运行 Kotlin 代码。...有两个关键最佳实践可以更轻松地在 Kotlin DSL 静态上下文中工作: 使用plugins {}块 将本地构建逻辑放在构建buildSrc目录 该plugins {}块是关于保持您构建脚本声明性...implementation (group="",name="splibrary",ext = "aar") 构建变体 显式和隐式 buildTypes 在 Kotlin DSL 某些 buildTypes...,往往会抽取一个version_config.gradle来作为全局变量控制,而ext扩展函数则是必须要使用到,而在我们Gradle Kotlin DSL,如果想要使用全局控制,则需要建议使用buildSrc...复杂构建逻辑通常很适合作为自定义任务或二进制插件进行封装。自定义任务和插件实现不应存在于构建脚本。buildSrc则不需要在多个独立项目之间共享代码,就可以非常方便地使用该代码了。

3.4K00

IntelliJ IDEA 2022.3 发布,全新 UI 太震撼了!

现在有针对类型变量类型推断,类型变量会被正确解析以用于模式匹配目的。...构建工具 针对 Groovy 项目中 build.gradle 文件操作改进 IntelliJ IDEA 2022.3 为 Groovy 构建脚本 Gradle 版本目录提供了代码补全和导航。...运行 / 调试 增强了 Java 调试器数据流分析辅助 我们改进了 Java 调试器数据流分析 (DFA) 功能。DFA 辅助已经预测了某些表达式未来值。...现在,当分析器可以预测代码某个分支不会被执行时,它会灰显对应代码部分。 排除覆盖注解新选项 IntelliJ IDEA 2022.3 引入了一个选项来控制项目中哪些注解应从覆盖统计信息中排除。...| 构建、执行、部署 | 覆盖)并将注解添加到 Exclude annotations(排除注解)列表。

5.9K40

船新 IDEA 2022.3 正式发布,新特性真香!

现在有针对类型变量类型推断,类型变量会被正确解析以用于模式匹配目的。...构建工具 针对 Groovy 项目中 build.gradle 文件操作改进 IntelliJ IDEA 2022.3 为 Groovy 构建脚本 Gradle 版本目录提供了代码补全和导航。...运行 / 调试 增强了 Java 调试器数据流分析辅助 我们改进了 Java 调试器数据流分析 (DFA) 功能。DFA 辅助已经预测了某些表达式未来值。...现在,当分析器可以预测代码某个分支不会被执行时,它会灰显对应代码部分。 排除覆盖注解新选项 IntelliJ IDEA 2022.3 引入了一个选项来控制项目中哪些注解应从覆盖统计信息中排除。...| 构建、执行、部署 | 覆盖)并将注解添加到 Exclude annotations(排除注解)列表。

3.1K20

使用 Kotlin 重写 AOSP 日历应用

在这次转换,我们沿袭了同 AOSP 桌面时钟转换过程类似的技术,充分利用了 Kotlin 与 Java 语言互操作性,对代码文件一一进行了转换,并在过程中使用独立构建目标将 Java 代码文件替换为对应...因为团队中有两个人在进行此项工作,所以我们在 Android.bp 文件为每个人创建了一个 exclude_srcs 属性,这样两个人就可以在减少代码合并冲突前提下,都能够同时进行重构并推送代码。...在转换任意给定文件时,我们一开始先使用 Android Studio Kotlin 插件中提供 从 Java 到 Kotlin 自动转换工具。...然而,即使子类变量同父类变量类型不同,也仍然要添加 override 修饰符。在某些情况下,添加 override 仍不能解决问题,尤其是当子类类型完全不同时候。...此外,由于 Kotlin 是一种更为安全有效编程语言,我们可以认为完整构建时间较慢问题可以忽略不计。

1.1K10

ApacheCN 安卓译文集 20211225 更新

七、Kotlin 变量、运算符和表达式 八、Kotlin 决策和循环 九、Kotlin 函数 十、面向对象编程 十一、Kotlin 继承 十二、将我们 Kotlin 连接到用户界面和可空性 十三、...通过构建安卓应用学习 Kotlin 零、前言 一、为安卓开发做准备 二、为 Kotlin 配置您环境 三、数据类型、变量和常量 四、类和对象 五、类型检查和空安全 六、函数和 Lambdas 七、开发基于位置警报...精通 Kotlin 安卓开发 零、前言 一、从安卓开始 二、构建和运行 三、屏幕 四、连接屏幕流 五、外观和体验 六、权限 七、使用数据库 八、安卓偏好设置 九、安卓系统并发 十、安卓服务 十一、...、小心连线 Android Studio 秘籍 零、前言 一、欢迎来到 Android Studio 二、使用基于后端应用 三、材质设计 四、安卓穿戴设备 五、尺寸很重要 六、捕获和共享 七、内容供应器和观察者...四、从安卓设备逻辑提取数据 五、从安卓设备物理提取数据 六、从安卓设备恢复删除数据 七、安卓应用取证分析 八、安卓取证工具概述 精通 Android Studio3 零、前言 一、工作空间结构

7.1K20

使用新 Android Gradle 插件加速您应用构建

非传递性 R 类 启用非传递性 R 类 (non-transitive R-class) 后,您应用 R 类将只会包含在子项目中声明资源,依赖项资源会被排除在外。...△ 新 Build Analyzer 工具面板 我们在 Android Studio Arctic Fox 版本添加了 Build Analyzer 工具来帮助您检查构建是否兼容配置缓存。...在我们例子,这个 HTML 文件会包含图中内容: △ 配置缓存错误报告 您可以从这些内容中找到各个出错点对应堆栈跟踪信息。如示例构建脚本第 5 和第 11 行导致了这些问题。...回看源文件,您会发现第一个问题是因为返回输出文件位置函数中使用了 project.buildDir 方法;第二个问题是因为 TaskAction 中使用了 project 变量,这是由于启用配置缓存后...Android Gradle 插件在 7.0 版本引入了新 API,让您可以访问到这些变体对象和一些中间工件。这样一来,开发者就可以在不操作构建任务前提下改变构建行为。

2.6K30

又一巨头从Java迁移到Kotlin:关键应用全部开始切换、安卓代码库超过千万行Kotlin代码

开发人员调查,其受欢迎程度高于 Java,”他还指出,由于近年来 Kotlin 已成为 Android 开发流行语言,“因此,在努力使我们开发工作流程更加高效过程,我们在 Meta 安卓开发中转向...Meta 本来可以选择只用 Kotlin 编写新代码,但它最终还是决定将所有的 Android 应用程序都转换过来。...我们更新了一些内部代码修改工具,使其能够支持 Kotlin。我们也构建了 Ktfmt,一款基于 google-java-format 编码理念的确定性 Kotlin 格式化程序。”...例如,很多 Android Java 代码会使用 android.text.TextUtils 实用方法,例如 isEmpty,来简化对某些字符串检查。...团队已经能够以无头模式运行 Android Studio 并调用 J2K,由此将整个管道作为脚本来运行。 最后一步,对新 Kotlin 文件进行后处理。

65530

是时候使用Kotlin编程了

而当在Java代码调用Kotlin对象时,Kotlin生成class文件也要输入到Java编译器,这时Java文件才能生成正确class文件。...生成class文件打成jar包后,最终可以生成AndroidAPK,或供Java服务端调用。 当然,我们可以直接下载Kotlin编译器下来查看他编译过程。...Kotlin语言基础 基础特性 1,变量定义 在Kotlin语法规则,var用来声明变量,val类似Java final,用来声明常量,语句后面不需要跟分号。...变量类型可以根据变量值进行自动推导,这里Kotlin基础类型都是对象,使用是Java包装类(基础类型包装成对象)。...扩展 17.9.5基于模板Kotlin脚本 17.10 小结 第18章 使用Kotlin开发Android视频应用 18.1 项目概述 18.2 浅谈Android开发架构模式 18.2.1 MVC

3.2K10

IntelliJ IDEA 2022.3 发布,这次不追了。。。

现在有针对类型变量类型推断,类型变量会被正确解析以用于模式匹配目的。...构建工具 针对 Groovy 项目中 build.gradle 文件操作改进 IntelliJ IDEA 2022.3 为 Groovy 构建脚本 Gradle 版本目录提供了代码补全和导航。...运行 / 调试 增强了 Java 调试器数据流分析辅助 我们改进了 Java 调试器数据流分析 (DFA) 功能。DFA 辅助已经预测了某些表达式未来值。...现在,当分析器可以预测代码某个分支不会被执行时,它会灰显对应代码部分。 排除覆盖注解新选项 IntelliJ IDEA 2022.3 引入了一个选项来控制项目中哪些注解应从覆盖统计信息中排除。...| 构建、执行、部署 | 覆盖)并将注解添加到 Exclude annotations(排除注解)列表。

1.9K20

又一巨头从 Java 迁移到 Kotlin

“因此,在我们努力使我们开发工作流程更加高效过程,将 Meta Android 开发转向 Kotlin 是非常合理......Kotlin 通常被认为是一种比 Java 更好语言,在年度...但 J2K 不是万能,迁移有些情况仍然很复杂。 迁移之前,该公司考虑了两个选择: 一个是可以使用 Kotlin 在 Meta 上编写新代码,但将大部分现有代码保留在 Java 。...由于迁移是一个漫长过程,期望每个工程师在接触文件之前将文件转换为 Kotlin 既费力又低效。” 因此,Meta 方面最终选择了第二条选项,决定将几乎所有代码转换为 Kotlin。...以及使用某些内部库依赖于在编译期间进行字节码转换来获取更好性能。而将其作为 Kotlin 编译一部分运行时,这部分代码则无法生效。为此,Meta 专门构建了解决工具。...我们更新了一些内部代码修改工具,以便能够处理 Kotlin。我们还构建了 Ktfmt,这是一个基于 google-java-format 代码和理念的确定性 Kotlin 格式化程序。”

45420

Android Gradle 插件】Gradle 构建工具简介 ③ ( Gradle 构建脚本编程语言 | Groovy 语言简介 | Groovy 语言特性 )

语言 或 Kotlin 语言 进行编写 , 使用 Groovy 语言编写构建脚本是 build.gradle 构建脚本 ; 当前大量 Android 应用 , 都是使用 Groovy 语言进行配置..., 因此老项目维护时 , 需要用到该语言 ; 使用 Kotlin 语言编写构建脚本是 build.kt 构建脚本 ; Kotlin 语言是一个趋势 , 之后肯定都会使用 Kotlin 进行配置 ;...这两门语言在当前状态下都需要精通 ; 二、Groovy 语言简介 ---- 简介 : Groovy 语言 是 基于 Java 虚拟机 , 因此在 Groovy 可以直接调用 Java 代码 ,...; 脚本语言 : 可以 直接在 .groovy 源码编写执行脚本 , 从头到尾执行 , 不需要定义类 ; 三、Groovy 语言特性 ---- Groovy 语言特性 : 支持静态类型 : 传统变量类型不变...Java API 处理 XML 文件 ; 原生支持 HTML : 不需要通过导入 Java API 处理 HTML 文件 ;

89110

Kotlin Primer·启程

1.1 Kotlin语言介绍 Kotlin 是 JetBrains 在 2010 年推出基于 JVM 新编程语言。开发者称,设计它目的是避免 Java 语言编程一些难题。...说明:从 Intellij 15 开始,已经自带了 Kotlin 插件,无需再次下载,而 Android Studio 缺没有。不过还是建议你运行一下下面的步骤,检查一下插件是否为最新版。...工程构建完成后,右键工程目录 src 图标,选择 New -> Kotlin File,这里我们新建一个名为 Hello Kotlin 源码文件(如图1-4-3)。 ?...看一下左侧工程目录,src 文件存放是源码,可以在这里新建包或类;Hello.iml 文件声明了一些项目所需环境依赖,我们不用关心。 于是,终于可以开始激动人心编码了。 ?...但是作为函数是一等公民语言,它不需要像 Java 那样必须声明一个类。 在 Kotlin ,函数声明用 fun 表示,变量也与 Java 不同,是变量名在前,变量类型在后,中间用冒号隔开。

1K30

使用kotlin协程提高app性能(译)

协程是一种并发设计模式,您可以Android上使用它来简化异步执行代码。Kotlin1.3版本添加了 Coroutines,并基于其他语言既定概念。...要在主线程之外运行代码,您可以告诉Kotlin协程在Default或IO调度程序上执行工作。在Kotlin,所有协同程序必须在调度程序运行,即使它们在主线程上运行。...与等效基于回调实现相比,withContext()不会增加额外开销。 此外,在某些情况下,可以优化withContext()调用,而不是基于等效基于回调实现。...在某些情况下,Kotlin协程可能会在暂停和恢复后将执行移动到另一个线程。 这意味着线程局部变量可能不会指向整个withContext()块相同值。...通过Kotlin结构化并发,您可以定义一个启动一个或多个协同程序coroutineScope。

2.3K10

31 天,从浅到深轻松学习 Kotlin

这只是替换空作为值或者返回事件情况一个小语法。 Day 3:String 模板 格式化字符串?将$放在变量前面去表达字符串变量和表达式。使用 ${expression} 求表达式值。...第三周 Day 15:sealed 类 Kotlin sealed 类可以让您轻松处理错误数据,当结合 LiveData 您可以用一个 LiveData 同时代表成功和失败路径,这比用两个不变量要好...Day 17:Lateinit Android ,在 onCreate 或者其它回调初始化对象,但在 Kotlin 不为空对象必须初始化。那么怎么办呢?可以输入 lateinit。...将它们添加到源文件顶层。在 Java ,它们被编译为该类静态方法。 您是否为您类定义了静态常量?使它们成为顶级属性。它们将被编译为字段和静态访问器。...它们为简化 API 做出贡献;您也可以自己借助扩展 lambdas 和类型安全构建器等功能构建它们。 Spek 是一个构建Kotlin DSL 测试库。

2.2K30

又一巨头放弃 Java ,拥抱 Kotlin

“因此,在我们努力使我们开发工作流程更加高效过程,将 Meta Android 开发转向 Kotlin 是非常合理......Kotlin 通常被认为是一种比 Java 更好语言,在年度...但 J2K 不是万能,迁移有些情况仍然很复杂。 迁移之前,该公司考虑了两个选择: 一个是可以使用 Kotlin 在 Meta 上编写新代码,但将大部分现有代码保留在 Java 。...由于迁移是一个漫长过程,期望每个工程师在接触文件之前将文件转换为 Kotlin 既费力又低效。” 因此,Meta 方面最终选择了第二条选项,决定将几乎所有代码转换为 Kotlin。...以及使用某些内部库依赖于在编译期间进行字节码转换来获取更好性能。而将其作为 Kotlin 编译一部分运行时,这部分代码则无法生效。为此,Meta 专门构建了解决工具。...我们更新了一些内部代码修改工具,以便能够处理 Kotlin。我们还构建了 Ktfmt,这是一个基于 google-java-format 代码和理念的确定性 Kotlin 格式化程序。”

69130
领券