android-kotlin错误:未解决的引用databinding&ActivityMainBinding
我正在使用Android Studio 3.0 Canary 6版本。 我在我的类中启用了dataBinding,代码不显示任何错误。 但是,当我构建APK时,构建失败并显示以下错误:
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
顶级build.gradle文件如下:
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 }
模块build.gradle文件如下:
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 }
MainActivity.kt类是:
import com.example.jimil.calculator.databinding.ActivityMainBinding ... class MainActivity : AppCompatActivity() { private var binding: ActivityMainBinding? = null ... }
请帮我解决构建错误。
请张贴您的日志。 在android studio中,您可以在单独的选项卡中查看gradle日志。
你的gradle中有几个错误。
目前的Gradle版本是3.0.0-beta 3.这意味着你需要改变你的类路径
classpath 'com.android.tools.build:gradle:3.0.0-beta6'
相同的依赖
kapt "com.android.databinding:compiler:3.0.0-beta6"
你也应该提供你的插件在正确的文件夹。
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions'
您还应该启用编译选项,让您的注释处理程序使用Java8依赖项(可能需要Kotlin以1.8为目标)。
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
完成之后, invalidate your cache and restart
。
如果错误仍然存在,请检查Gradle控制台。 您的XML文件中可能会有一个错误,它会停止您的Annotation处理器来生成数据绑定类。