마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

kotlin으로 MVVM하려는데 Unresolved reference: BR 오류가 납니다 [closed]

0 추천
// build.gradle
buildscript {
    ext.kotlin_version = '1.2.71'
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
// app/build.gradle
apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'

apply plugin: 'kotlin-android-extensions'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.my.testkotlinmvvm"
        minSdkVersion 23
        targetSdkVersion 28
        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
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    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'
}
// main_activity.xml
<layout>

    <data>
        <variable name="model" type="com.my.testkotlinmvvm.MainActivityModel"/>
    </data>
    <android.support.constraint.ConstraintLayout
    .
    .
    .        
    </android.support.constraint.ConstraintLayout>
</layout>
// MainActivity.kt
package com.my.testkotlinmvvm

import android.databinding.DataBindingUtil
import android.databinding.ViewDataBinding
import android.os.Bundle
import android.support.v7.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val binding = DataBindingUtil.setContentView<ViewDataBinding>(this, R.layout.main_activity)
        val mainActivityModel = MainActivityModel()
        binding.setVariable(BR.model, mainActivityModel)
        // binding.model = mainActivityModel 도 증상은 같습니다. 
    }
}

이렇게 하고 컴파일을 하면
binding.setVariable(BR.model, mainActivityModel) 이 부분에서

:app:dataBindingGenBaseClassesDebug
e: /MainActivity.kt: (18, 29): Unresolved reference: BR


이런 에러가 납니다.
java로 MVVM할 때처럼 binding.setModel()도 안되고요. 

뭐가 문제일까요?
 

안드로이드 스튜디오 3.2.1에서 만든 앱니다.

 

 


안드로이드 스튜디오 3.2부터는 kapt 로 된거 필요없다그래서 신경 안 쓰고 있었는데, 넣어야 하네요.

// app/build.gradle
apply plugin: 'kotlin-kapt'
.
.
.

dependencies {
    ...
    kapt "androidx.databinding:databinding-compiler:3.2.1"
}

을 넣으니까 잘 됩니다. 

질문을 종료한 이유: 자답
쎄미 (162,410 포인트) 님이 2018년 10월 26일 질문
쎄미님이 2018년 10월 26일 closed
kapt "androidx.databinding:databinding-compiler:3.2.1" 는 없어도 됩니다.
...
apply plugin: 'kotlin-kapt'

android {
    ...
    //Enable databinding
    dataBinding {
        enabled = true
    }
}

위의 세팅만 있어도 잘 돼야 합니다.
네. 저기에 apply plugin: 'kotlin-kapt' 만 넣었으면 되는거였습니다 ㅎㅎ
...