以下问题仅代表本人在使用Kotlin的时候遇到的问题,解决方案并不一定能解决您的问题,但可以作为参考,说不定就有用了来
问题列表
- Android gradle 3.X 依赖问题
- 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 里添加
未完待续```````````
网友评论