将支持库升级到 v28 或 androidx 时出现的问题

Rob*_*nde 5 android android-appcompat dagger-2 android-databinding androidx

我正在使用一个 Android 项目:

com.android.tools.build:gradle 3.1.3
org.jetbrains.kotlin:kotlin-gradle-plugin 1.2.50
com.google.gms:google-services 3.2.0

compileSdkVersion 27
minSdkVersion 21
targetSdkVersion 27 

com.google.dagger:dagger  2.12
com.google.dagger:dagger-android-support 2.12
com.android.support:appcompat-v7 27.1.1
Run Code Online (Sandbox Code Playgroud)

该项目是使用 Kotlin 和 Databinding 制作的。

如果我将 compileSdkVersion 和 targetSdkVersion 升级到 28,项目就会被编译。

但是当我尝试升级到 Androidx 或 AppCompat Library V7 28.0.0 并修复所有依赖项后,我通常最终会收到以下错误:

  symbol:   class DataBindingComponent
  location: class SomeProjectClassBinding
  e: /Users/a/project/databinding/SomeProjectClassBinding.java:76: 
  error: cannot find symbol
      @Nullable DataBindingComponent component) { ...
Run Code Online (Sandbox Code Playgroud)

我尝试了几件事,包括:

  • 使用 kapt "com.android.databinding:compiler" 并且也不使用它。默认情况下我没有那行,因为我读到它已经包含在 Android Studio 3.2 中。

  • 虽然我使用的是 Android Studio 2.3,但我尝试了 3.3 Canary 13。

  • 我尝试将 com.android.tools.build:gradle 升级到 3.3.0-alpha13

  • 我尝试从 gradle.properties 中删除 org.gradle.jvmargs。

  • 我尝试将 ext.kotlin_version 升级到 1.2.71

  • 我尝试从终端运行 gradle,所以我可以获得依赖树,但我找不到任何不寻常的东西。

  • 我试图清理和重建项目。

将所有项目的依赖项升级到最新版本后,我没有收到来自 Android Studio 的任何警告,但由于上述错误,项目无法编译。

那么,有什么我可以做的事情来了解更多为什么我会收到此数据绑定错误?,是否有发布的示例项目正在使用:

  • 最新版本的Android API,即2​​8

  • 最新版本的支持库或 Jetpack

  • 最新版本的匕首

  • 数据绑定

  • 科特林

此外,我们是否知道这些的最新版本是否相互兼容,例如 Android API 28 或带有 Dagger 2.17 的 Androidx。