DataBinding(库必须使用完全相同的版本规范)
摇篮:
buildscript { ext.kotlin_version = '1.2.10' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
=========================
ext { support_version = '27.0.2' dagger_version = '2.14.1' } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //kotlin implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" //support implementation "com.android.support:appcompat-v7:$support_version" implementation 'com.android.support.constraint:constraint-layout:1.0.2' //rx implementation 'io.reactivex.rxjava2:rxjava:2.1.8' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' //test testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' //Dagger 2 implementation "com.google.dagger:dagger:$dagger_version" kapt "com.google.dagger:dagger-compiler:$dagger_version" provided 'org.glassfish:javax.annotation:10.0-b28' }
它适合我,但是如果我启用DataBinding:
dataBinding { enabled = true }
我得到了一个警告com.android.support:appcompat-v7:
所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。 发现版本27.0.2,21.0.3。 示例包括com.android.support:animated-vector-drawable:27.0.2和com.android.support:support-v4:21.0.3 more …(Ctrl + F1)
并在ContextCompat中丢失了方法checkSelfPermission:
ContextCompat.checkSelfPermission(context, android.Manifest.permission.READ_SMS)
未解决的参考:checkSelfPermission
Gradle文件
为什么启用DataBinding导致这样的效果?
为什么启用DataBinding导致这样的效果?
在幕后, dataBinding { enabled = true }
为支持生成的数据绑定代码的运行时库添加了一些依赖关系:
-
com.android.databinding:adapters
-
com.android.databinding:baseLibrary
-
com.android.databinding:library
这些依赖关系现在依赖于旧版本的support-v4
(21.0.3)。 这反过来会触发您所看到的构建错误,因为Google试图强制所有支持库工件都在相同的版本上。
FWIW,我提出了一个问题 ,以便在数据绑定框架中解决这个问题 。 我希望它会在宇宙热死之前的某个时候被固定下来。
解决方法是在support-v4
上添加自己的依赖关系:
implementation "com.android.support:support-v4:$support_version"
这会导致Gradle拉你的请求版本,这比数据绑定正在寻找的版本更新,所以Gradle认为它会好的。 事实上,这可能并不好,但到目前为止,在我的工作中,我没有遇到任何问题。
- kotlin扩展function不知道这个东西是如何工作的
- 为Android上的OpenGL获取最大纹理尺寸的function(可以在UI线程上运行)
- Android JUnit测试SQLiteOpenHelper
- 如何使用Android kotlin仅在日期选取器对话框中显示日期和月份
- Saripaar formvalidation不能在kotlin中第二次使用
- 用RecyclerView + AppBarLayout投掷
- 由于重复,Kotlin gradle.build ZipException
- 当链接从Observable.create()创建的Observable时,RxJava用户onNext / onError / onComplete没有被调用
- 如何在android的后台运行一段代码?