李世德的博客

我有故事,你有酒吗?

0%

在Kotlin 1.4.20-M2中,JetBrains废弃了Kotlin Android Extensions编译插件。

在项目中受此影响的功能可能有:

  1. 通过 kotlinx.android.synthetic 获取控件 Id
  2. @Parcelize

问题 1 推荐的替代方案是使用 ViewBinding,之前我的项目中已经使用这种方式了。

问题 2 解决方案:

添加 kotlin-parcelize 插件

1
2
3
4
plugins {
..
id 'kotlin-parcelize'
}

然后更改旧的 import 语句,将:import kotlinx.android.parcel.Parcelize 改为:import kotlinx.parcelize.Parcelize

例子:

1
2
3
4
5
import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
class User(val name: String, val age: Int): Parcelable

更多详细说明可见:https://weilu.blog.csdn.net/article/details/109557820

Utils 规范

  1. 使用 Kotlin
    为什么是 Kotlin?因为 Kotlin 方便扩展某一类 util(使用扩展函数)。

    • 强制:必须注释。
    • 建议:放在基础层的 CommonSDK 里。
  2. 第三方库提供了单例,可以直接调用时,一定不要直接用。 将其调用方法再包一层,降低侵入性。如需更换其他同类框架,在调用函数方面影响小一点(但不是没有影响,因为有些地方还是要改,只是让你改的地方少一点)。

    以 ARouter 为例,ARouter 提供了 ARouter.getInstance()... 的用法,请不要偷懒,要自己再包一层。

阅读全文 »