I am using Android Studio 3.0 Canary 6 version. I've enabled dataBinding in my class and the code doesn't show any error. But, when I build an APK, the build fails and shows the following error:
Error:(8, 37) Unresolved reference: databinding
Error:(22, 26) Unresolved reference: ActivityMainBinding
Error:(38, 50) Unresolved reference: ActivityMainBinding
Error:(43, 52) Unresolved reference: ActivityMainBinding
Error:(46, 52) Unresolved reference: ActivityMainBinding
Error:(49, 52) Unresolved reference: ActivityMainBinding
Error:(52, 52) Unresolved reference: ActivityMainBinding
Error:(55, 52) Unresolved reference: ActivityMainBinding
Error:(58, 52) Unresolved reference: ActivityMainBinding
Error:(61, 52) Unresolved reference: ActivityMainBinding
Error:(64, 52) Unresolved reference: ActivityMainBinding
Error:(67, 52) Unresolved reference: ActivityMainBinding
Error:(70, 52) Unresolved reference: ActivityMainBinding
Error:(73, 52) Unresolved reference: ActivityMainBinding
Error:Execution failed for task ':app:compileDebugKotlin'.
Compilation error. See log for more details
The top level build.gradle file is as follows :
buildscript {
ext.kotlin_version = '1.1.3-2'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha6'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
The module build.gradle file is as follows :
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "com.example.jimil.calculator"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
dataBinding{
enabled = true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
androidTestImplementation ('com.android.support.test.espresso:espresso-
core:3.0.1', {
exclude group: 'com.android.support', module: 'support-
annotations'
})
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:26.1.0'
testImplementation 'junit:junit:4.12'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
kapt 'com.android.databinding:compiler:3.0.0-alpha6'
}
kapt {
generateStubs = true
}
The MainActivity.kt class is :
import com.example.jimil.calculator.databinding.ActivityMainBinding
...
class MainActivity : AppCompatActivity() {
private var binding: ActivityMainBinding? = null
...
}
Please help me solve the build error.
gradle file, the import kotlinx line above will trigger the unresolved reference issue. Please make sure that you add the id 'kotlin-android-extensions' line on the build. gradle file that's inside your app module. Once you sync the Gradle build, the error should disappear.
The one and only function of View Binding is to bind the views in the code, while Data Binding offers some more options like Binding Expressions, which allows us to write expressions the connect variables to the views in the layout.
There are several errors in your gradle.
The current Gradle-Version is 3.0.0-beta 3. That means that you need to change your classpath to
classpath 'com.android.tools.build:gradle:3.0.0-beta6'
Same for your dependencies
kapt "com.android.databinding:compiler:3.0.0-beta6"
You should also provide your plugins in the proper folder.
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
You should also enable compile options to have your annotation processors use Java8-dependencies (which may be required for Kotlin to target 1.8).
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
After this is done invalidate your cache and restart
.
If the error still persists check the Gradle Console. There may be an error in your XML File which stops your Annotation processor to generate the databinding classes.
In my case, cleaning
and then rebuilding
the project solved the problem. The problem was that the necessary classes haven't been built until then.
Once data binding is integrated in layout file, goto
Build -> Clean Project
andBuild -> Rebuild Project
. This will generate necessary binding classes.
source: link
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With