升级 Android Studio 2.3 后数据绑定不起作用

Posted

技术标签:

【中文标题】升级 Android Studio 2.3 后数据绑定不起作用【英文标题】:DataBinding not working after Upgrade Android Studio 2.3 【发布时间】:2017-07-23 20:26:19 【问题描述】:

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构建,构建失败,错误如下:

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,谢谢!

【问题讨论】:

我对 android.databinding.PropertyChangeRegistry 也有类似的问题。它在导入语句中给我一个错误,我无法编译该项目。当我恢复到 Build Tools 2.2.3 时,它可以工作。我认为 2.3 上的数据绑定有问题。 您是否看到任何其他错误? 另外,你的配置有没有其他不同的地方,比如apt? @GeorgeMount 您好,稍后我会粘贴更多错误日志,谢谢您的回复,谢谢 @George Mount,我添加了一些错误日志;我猜 gradle 或数据绑定有问题,因为在属于 google 的项目 [googlesamples/android-architecture](https://github#com/googlesamples/android-architecture) 的分支 todo-databind 中也构建失败,例如下面。 【参考方案1】:

android-apt 因此使用 apt 自 Android Studio 2.2 以来已被弃用。 在android-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'

【讨论】:

它对我有用,除了此更改之外,我还将 gradle 版本降级为 2.3.0 依赖项 classpath 'com.android.tools.build:gradle:2.3.0' @Tushar 谢谢,我已经更新了答案以确保您使用的是相同的 gradle 版本【参考方案2】:

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

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

如果您删除 apt,数据绑定将起作用。

【讨论】:

apt 'com.android.databinding:compiler:2.3.0' 添加到 build.gradle。现在一切正常,即时运行。是导致错误的数据绑定编译器的版本?【参考方案3】:

我也遇到了同样的问题。 我用的是 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 to annotationProcessor”更改为以下依赖项:

 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"

【讨论】:

【参考方案4】:

在更新到 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"
  

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

【讨论】:

【参考方案5】:

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

附: Instant run 将停止在旧 gradle 版本的 ADT 上运行。

【讨论】:

嗨 @Sa-Zad Prasla,恢复我的 gradle 版本是可行的,但不是最好的解决方案,谢谢你的回复。【参考方案6】:

我最近也下载了最新版本的 android studio 2.3.3,因为我在 2.2.3 版本中遇到了同样的错误,即 Error:Failed to resolve: com.android.databinding:compiler:2.2.3 ,即使在最新版本,我也得到了同样的错误,我检查了项目结构,在文件>项目结构>项目中,Android插件版本仍然是2.2.3,我把它改成了2.3.3,构建成功,一切正常。

【讨论】:

【参考方案7】:

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

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

由于我使用的是 Android Studio 3.0.1

【讨论】:

以上是关于升级 Android Studio 2.3 后数据绑定不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio从2.3升级到3.1注意事项

Android Studio 2.3版本 Run项目不能自动启动APP的问题 (转)

升级到 Flutter 到 2.5.0 后,无法从 Android Studio 的 iOS 模拟器运行应用程序

Android studio 升级4.2后ButterKnife无效

Android Studio 2.3 gradle 错误

Android Studio 2.3 正在生成未对齐的签名 APK 而不是 zipaligned?