最近在上手kotlin笆豁,之前開(kāi)發(fā)都使用了DataBinding郎汪,最近在想kotlin中使用,果然遇到問(wèn)題闯狱。記錄問(wèn)題煞赢,幫助更多踩坑的朋友。
首先需要在kotlin工程中引入啟用DataBinding哄孤,如下:
? ? buildTypes {
? ? ? ? ? ? release {
? ? ? ? ? ? ? ? minifyEnabled false
? ? ? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? dataBinding {
? ? ? ? ? ? enabled true
? ? ? ? }
在app的build.gradle中開(kāi)啟DataBinding耕驰,與buildTypes是同一層級(jí)。
在使用java編寫(xiě)android的時(shí)候录豺,只需要上述配置即可進(jìn)行DataBinding的絲滑使用。但是在kotlin中的話(huà)饭弓,就會(huì)出現(xiàn)找不到DataBinding的問(wèn)題双饥,一般如下:
? ? build failed 3s 590ms
? ? Run build 3s 481ms
? ? Load build 35ms
? ? Configure build 464ms
? ? Calculate task graph 9ms
? ? Run tasks 2s 963ms
? ? null
? ? E:/CustomView
? ? app/src/main/java
? ? com/superlink/customview/MainActivity.kt
? ? Unresolved reference: databinding
? ? Unresolved reference: ActivityMainBinding
會(huì)提示 Unresolved reference的問(wèn)題,這就是今天的坑弟断。接下來(lái)就是解決辦法咏花,本人實(shí)測(cè)通過(guò),如果有問(wèn)題阀趴,那就有問(wèn)題昏翰,反正我是編譯通過(guò)并把程序跑起來(lái)了。
1.首先需要在app的build.gradle的dependencies中添加如下依賴(lài):
kapt "com.android.databinding:compiler:3.1.2"
后面的版本是你的工程目錄下的build tool的版本號(hào)刘急,如下所示(項(xiàng)目的build.gradle)
classpath 'com.android.tools.build:gradle:3.1.2'
2.在與dependencies同層級(jí)下添加如下代碼:
kapt {
? ? generateStubs = true
}
到這里就離成功只差一步了棚菊,最后需要添加kapt的插件支持,否則是無(wú)法使用kapt這個(gè)指令的叔汁。在build.gradle的頭部的問(wèn)題添加如下代碼统求,然后build工程,run起來(lái)据块,你會(huì)發(fā)現(xiàn)這個(gè)問(wèn)題就這樣簡(jiǎn)單的幾句話(huà)就解決了码邻。
apply plugin: 'kotlin-kapt'
經(jīng)過(guò)以上步驟,可能有的朋友會(huì)遇到下面的這個(gè)問(wèn)題
kotlin-stdlib-jre7 is deprecated. Please use kotlin-stdlib-jdk7 instead
解決上面的問(wèn)題只需要將
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
修改成如下即可
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
即將jre7更換成jdk7即可另假。
完整配置如下:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
android {
? ? compileSdkVersion 27
? ? defaultConfig {
? ? ? ? minSdkVersion 21
? ? ? ? targetSdkVersion 27
? ? ? ? versionCode 1
? ? ? ? versionName "1.0"
? ? ? ? testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
? ? }
? ? buildTypes {
? ? ? ? release {
? ? ? ? ? ? minifyEnabled false
? ? ? ? ? ? proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
? ? ? ? }
? ? }
? ? dataBinding {
? ? ? ? enabled true
? ? }
}
kapt {
? ? generateStubs = true
}
dependencies {
? ? implementation fileTree(dir: 'libs', include: ['*.jar'])
? ? implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
? ? implementation 'com.android.support:appcompat-v7:27.1.1'
? ? kapt "com.android.databinding:compiler:3.1.2"
? ? testImplementation 'junit:junit:4.12'
? ? androidTestImplementation 'com.android.support.test:runner:1.0.2'
? ? androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
希望能幫到各位在爬坑的朋友們像屋。
---------------------
作者:賀小梅0o
來(lái)源:CSDN
原文:https://blog.csdn.net/u012150124/article/details/80555665
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接边篮!