升级Android Studio 2.3后,DataBinding无法正常工作

时间:2017-03-03 16:20:15

标签: android android-studio data-binding android-databinding android-studio-2.3

DataBinding在我的项目中运行得非常好,但是在今天升级Android Studio 2.3之后。 运行'app'失败,因为出现以下错误:

Error:(15, 40) Error: package com.javan.myrecorder.databinding not exist.
import com.javan.myrecorder.databinding.FragmentEventsBinding;
:app:compileMockDebugJavaWithJavac FAILED

我刚升级android studio并没有改变任何东西。所有插件都是最新的!现在我的问题是,为什么会发生这个错误,我该怎么解决呢?欢迎任何帮助!

英语不是我的母语;请原谅我的任何错误。

EDIT1

喜欢android项目googlesamples/android-architecture

  • git checkout todo-databinding
  • 然后运行./gradlew assembleDebug进行构建,构建因以下错误而失败:

complete log of build

EDIT2 我已按照Data Binding broke after upgrade to Gradle 2.3 解决了此问题。

build.gradle(app)添加

apply plugin: 'com.android.application'
apply plugin: 'com.neenbedankt.android-apt'

..balabala

dependencies {
    apt 'com.android.databinding:compiler:2.3.0'
}

我项目中的一些文件:

gradle-wrapper.properties

#Mon Mar 06 10:59:04 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip

@petrnohejl @George Mount @ Sa-Zad Prasla,谢谢!

7 个答案:

答案 0 :(得分:14)

android-apt因此自Android Studio 2.2起已弃用aptandroid-apt migration guide之后,将以下内容添加到您的build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0' // use same gradle version!
    annotationProcessor 'com.android.databinding:compiler:2.3.0'
}

如果您使用的是Kolin,请使用:

apply plugin: 'kotlin-kapt'

dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0' // use same gradle version!
    kapt 'com.android.databinding:compiler:2.3.0'
}

答案 1 :(得分:2)

问题出现在所有错误中很难看到的警告:

警告:使用不兼容的插件进行注释处理:android-apt。这可能会导致意外行为。

如果删除apt,则数据绑定有效。

答案 2 :(得分:2)

我也面临同样的问题。 我正在使用ButterKnife和Dagger !!

解决方法如下

1)从app level gradle文件中删除:

申请插件:' android-apt'  或者申请插件:' com.neenbedankt.android-apt'

2)从项目级别gradle文件中删除:

classpath' com.neenbedankt.gradle.plugins:android-apt:1.8'

3)简单地改变" apt to annotationProcessorchange"如下依赖项:

apt' com.jakewharton:butterknife-compiler:8.5.1',   apt" com.google.dagger:dagger-compiler:2.5"

要:

annotationProcessor' com.jakewharton:butterknife-compiler:8.5.1',  annotationProcessor" com.google.dagger:dagger-compiler:2.5"

答案 3 :(得分:1)

随着Android Studio v2.3的更新,数据绑定也为我们打破了。 GoLang Bind插件无法生成库.aar文件

我们的问题通过结合使用GoMobile版本" + eb90329 2017年3月7日和#34;更新和GoBind插件恢复为版本" 0.2.6" (虽然目前的版本是" 0.2.8")

更新GoMobile:

  $ go get -u -x golang.org/x/mobile/cmd/gomobile
  $ gomobile init -x

在build.gradle中恢复GoBind插件:

  plugins {
    id "org.golang.mobile.bind" version "0.2.6"
  }

此解决方案适用于版本为1.7.1和1.8以及Android Studio版本2.1.2,2.2.3和2.3的系统。

答案 4 :(得分:0)

两件事 将gradel-wrapper.properties distributionUrl恢复为" https://services.gradle.org/distributions/gradle-2.14.1-all.zip" 将gradle版本类路径更改为以前的版本"' com.android.tools.build:gradle:2.2.3'"

P.S。使用较旧的gradle版本,即时运行将停止在ADT上工作。

答案 5 :(得分:0)

我最近也下载了最新版本的android studio 2.3.3,因为我在版本2.2.3中遇到了同样的错误,即错误:无法解决:com.android.databinding:编译器:2.2.3 ,即使在最新版本中,我也遇到了同样的错误,我检查了项目结构,在文件>项目结构>项目中,Android插件版本仍为2.2.3,我将其更改为2.3.3并且构建成功并且一切正常。

答案 6 :(得分:-2)

我通过将我的gradle版本更改为:

来解决了这个问题
classpath 'com.android.tools.build:gradle:3.0.1'

因为我使用的是Android Studio 3.0.1