【问题标题】:R8: Program type already present: androidx.databinding.library.baseAdapters.BRR8:程序类型已经存在:androidx.databinding.library.baseAdapters.BR
【发布时间】:2020-05-15 19:16:56
【问题描述】:

我在尝试创建我的应用的 release 版本时遇到上述错误。在进行调试构建时,一切都运行良好。

我的项目结构如下

  • 应用(包含数据绑定)

  • video sdk(包含数据绑定)

  • 另一个 sdk(包含数据绑定)

我认为它找到了多个导致上述错误的数据绑定实例,但我不确定如何规避这一点。

同样奇怪的是,在 Android Studio 中单击运行时应用程序会编译,但在尝试从终端构建时却无法编译

【问题讨论】:

  • 你能解决这个问题吗?我也面临同样的问题。

标签: android gradle data-binding


【解决方案1】:

我不确定,但尝试为数据绑定 gradle 创建一个单独的模块并将该模块添加到所有当前模块(应用程序、视频 sdk、另一个 sdk)中

模块核心(带有“api”的 Gradle):

api 'com.github.bumptech.glide:glide:4.9.0'
kapt 'com.github.bumptech.glide:compiler:4.9.0'

App 模块和其他 SDK 模块将使用该核心模块。

implementation project(path: ':core')

希望它会有所帮助。

【讨论】:

  • 我不确定,这如何帮助我的应用不使用 glide 其目标面临数据绑定问题
  • @sn0ep,关键是您必须在核心模块中添加数据绑定库并使用我在回答中解释的核心模块。
【解决方案2】:

请试试这个,我不确定,但有时发布的apk会出现冲突问题

在 app gradle 文件中添加multiDexEnabled true

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    在这里发布一些解决方法

    1. ./gradlew clean

    2. 将重复项排除为消息Program type already present 表示存在命名冲突。

      configurations {
          compile.exclude group: 'androidx.databinding', module: 'databinding'
      }
      

    然后进行同步、清理和重建。

    【讨论】:

    • 我试图在应用程序模块以及库项目中添加它,但我仍然得到:程序类型已经存在:androidx.databinding.library.baseAdapters.BR
    • 面临同样的问题@sn0ep
    【解决方案4】:

    我遇到了这个错误,花了将近 2 天的时间来找出导致这个错误的原因。最终,我发现我的一个使用 Kotlin 的传递 SDK 在其 Gradle 文件中没有以下内容。

    kotlinOptions kotlin_options = {
        jvmTarget = "1.8"
    }
    

    添加后,我能够解决错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-23
      • 2019-02-22
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2018-10-03
      • 2019-04-10
      • 2018-11-15
      相关资源
      最近更新 更多