我有一个使用数据绑定的android库(kotlin)。图书馆本身编写得很好。当我将库作为模块添加到另一个应用程序时,我收到大量的数据绑定错误,这似乎是我在库中使用的所有数据绑定。
在研究问题后,很多人建议添加
dataBinding {
enabled = true
}
同时加入应用和库build.gradle
文件。
即使这样做,我仍然会收到同样的错误。我试过多次清理项目而没有任何变化。如果有人能够解释为什么库将作为一个单独的项目自己构建,但是当作为一个模块包含在另一个项目中时不会构建,我将不胜感激。
app - build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'realm-android'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 26
defaultConfig {
applicationId "cz.abc.abc"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//signingConfig signingConfigs.release
}
}
dataBinding {
enabled = true
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
kapt "com.android.databinding:compiler:3.0.1"
implementation 'android.arch.lifecycle:extensions:1.0.0'
implementation project(':my-library')
}
library / module - build.gradle
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'realm-android'
apply plugin: 'kotlin-kapt'
def AAVersion = '4.4.0-SNAPSHOT'
def supportVersion = "26.1.0"
def anko_version = "0.10.1"
android {
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig {
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
packagingOptions {
pickFirst 'META-INF/LICENSE.txt'
}
dataBinding {
enabled = true
}
}
kapt {
correctErrorTypes = true
generateStubs = true
}
dependencies {
...
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
kapt "com.android.databinding:compiler:+"
...
}
Gradle Build Tools: 3.0.1
Kotlin: 1.2.0
修改
我改变了导入的方式。我没有导入库,也没有在项目中复制库,而是在setting.gradle
中添加了一个库的路径。
settings.gradle
include ':app'
include ':my-library'
project (':my-library').projectDir = new File('../library')
错误现在不同了: