繁体   English   中英

升级Android Studio 2.3后,数据绑定无法正常工作

[英]DataBinding not working after Upgrade 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,并没有做任何改变。 所有插件都是最新的! 现在我的问题是,为什么会发生此错误,我该如何解决? 欢迎任何帮助!

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


编辑1

像android项目googlesamples / android-architecture

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

完整的构建日志


EDIT2 我通过升级到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 @乔治山@ Sa-Zad Prasla,谢谢!

自Android Studio 2.2起,不推荐使用android-apt ,因此不建议使用apt
按照android-apt迁移指南 ,将以下内容添加到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'
}

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

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

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

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

解决如下

1)从应用程序级别gradle文件中删除:

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

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

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

3)并简单地将“易于注释的处理器”更改为以下依赖项:

 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"

在更新Android Studio v2.3之后,数据绑定也中断了我们的工作。 GoLang Bind插件无法生成库.aar文件

通过组合GoMobile版本“ + eb90329 Mar 7 2017”和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版本的系统上运行。

两件事将您的gradel-wrapper.properties distributionUrl还原为“ https://services.gradle.org/distributions/gradle-2.14.1-all.zip”,将gradle版本类路径更改为先前版本“'com.android.tools” .build:gradle:2.2.3'”

PS Instant run将停止在具有较早版本的gradle版本的ADT上运行。

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

我通过将gradle的版本更改为解决了这个问题:

classpath 'com.android.tools.build:gradle:3.0.1'

由于我正在使用Android Studio 3.0.1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM