Kotlin问题集锦

以下问题仅代表本人在使用Kotlin的时候遇到的问题,解决方案并不一定能解决您的问题,但可以作为参考,说不定就有用了来

问题列表

  1. Android gradle 3.X 依赖问题
  2. Kotlin 和 databinding 同时使用出现的问题

1.Android gradle 3.X 依赖问题

静静悄悄的升级到 gradle 3.X之后,依赖库的方法有所改变

在3.X之前

compile project(':base_utils')

更新之后

implementation project(':base_utils')

或者

api project(':base_utils')

介绍下这几种依赖库的方法异同点
场景1 :A library 依赖 B library
上述场景使用 compile implementation api 三种方式效果相同没有任何影响
场景2 :A library 依赖 B library ,B library 依赖 C library
上述场景中使用 compile api 两种方式效果相同 ,最终效果 在 A library中可以调用C library的相关内容;使用 implementation 方式的话 A library则不可使用C library 提供的相关内容

总而言之:compile 和 api 效果一样。implementation 依赖的方式只可以将相关内容暴露给直接引用的library。可以理解为 implementation 方式不具有传递性或者是依赖的库属于类似private的方式

2.Kotlin 和 databinding

同时使用Kotlin和databinding会有一些异常问题,一不小心就踩坑

遇到的异常信息
Unresolved reference: databinding
Error:Execution failed for task ':xxxx:compileDebugKotlin'.

Unresolved reference: databinding
Error:Execution failed for task ':xxxx:compileDebugKotlin'.
> Compilation error. See log for more details

解决方法如下:
1.在build.gradle增加如下方法,配置完之后最好Rebuild一下(反正一开始我没有Rebuild又浪费了一个小时去找其他原因)

kapt {
    generateStubs = true
}
buildscript {
    ...
    dependencies {
        ...
        kapt "com.android.databinding:compiler:your gradle version" //注意是gradle版本
    }
}

2.Android Gradle Plugin 3.1.0 Canary 6附带一个可选的新编译器。 要开始使用它,请更新您的gradle.properties文件以包含以下行:(未实验,去官网查看发现还有这 操作)

  android.databinding.enableV2=true  // 注意是在  gradle.properties  里添加

未完待续```````````

你可能感兴趣的:(Kotlin问题集锦)