2015-11-23 34 views
9

Tôi đang phát xung quanh thư viện Android Data Binding từ Google, mà tôi đã làm việc tại một thời điểm. Bây giờ, có vẻ như "cái gì đó" đã thay đổi và nó gây ra một vấn đề cho thư viện Data Binding. Tôi bị bối rối bởi một lỗi rất chung chung đang chứng minh khó gỡ lỗi, một [data binding plugin]: failed to setup data binding.Lỗi xây dựng ràng buộc dữ liệu Android: [plugin ràng buộc dữ liệu]: không thể thiết lập ràng buộc dữ liệu

AFAIK, lỗi này được ném khi thư viện Ràng buộc dữ liệu gặp sự cố với một trong tệp bố cục của bạn (nói lỗi đánh máy trong một ràng buộc). Câu hỏi đặt ra là, làm cách nào để tìm ra mà tệp bố cục gây ra sự cố? Có ai có bất kỳ lời khuyên/gợi ý về làm thế nào để tìm ra vấn đề là gì? Viết tắt của bình luận ra mã bố trí XML và mã Java tập tin tại một thời điểm, tôi là loại mất mát như thế nào để khắc phục sự cố các loại vấn đề một cách hiệu quả.

Các đầu mối duy nhất tôi nhận được là này stack trace khá phi mô tả trong Gradle console:

[data binding plugin]: failed to setup data binding 
java.lang.NoSuchMethodError: android.databinding.tool.LayoutXmlProcessor.<init>(Ljava/lang/String;Ljava/util/List;Landroid/databinding/tool/writer/JavaFileWriter;IZ)V 
    at android.databinding.tool.DataBinderPlugin.attachXmlProcessor(DataBinderPlugin.java:274) 
    at android.databinding.tool.DataBinderPlugin.createXmlProcessorForApp(DataBinderPlugin.java:231) 
    at android.databinding.tool.DataBinderPlugin.createXmlProcessor(DataBinderPlugin.java:200) 
    at android.databinding.tool.DataBinderPlugin.access$200(DataBinderPlugin.java:65) 
    at android.databinding.tool.DataBinderPlugin$1.execute(DataBinderPlugin.java:156) 
    at android.databinding.tool.DataBinderPlugin$1.execute(DataBinderPlugin.java:152) 
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:93) 
    at org.gradle.internal.event.BroadcastDispatch$ActionInvocationHandler.dispatch(BroadcastDispatch.java:82) 
    at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44) 
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79) 
    at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30) 
    at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
    at com.sun.proxy.$Proxy10.afterEvaluate(Unknown Source) 
    at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:67) 
    at org.gradle.configuration.project.LifecycleProjectEvaluator.evaluate(LifecycleProjectEvaluator.java:61) 
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:499) 
    at org.gradle.api.internal.project.AbstractProject.evaluate(AbstractProject.java:86) 
    at org.gradle.execution.TaskPathProjectEvaluator.configure(TaskPathProjectEvaluator.java:35) 
    at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:82) 
    at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:75) 
    at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:42) 
    at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:44) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54) 
    at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54) 
    at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) 
    at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36) 
    at org.gradle.initialization.DefaultGradleLauncher$3.run(DefaultGradleLauncher.java:143) 
    at org.gradle.internal.Factories$1.create(Factories.java:22) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52) 
    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:140) 
    at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32) 
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99) 
    at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90) 
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62) 
    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93) 
    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94) 
    at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:46) 
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 
    at org.gradle.tooling.internal.provider.runner.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:58) 
    at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43) 
    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28) 
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:77) 
    at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:47) 
    at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52) 
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74) 
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72) 
    at org.gradle.util.Swapper.swap(Swapper.java:38) 
    at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66) 
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:71) 
    at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41) 
    at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120) 
    at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) 
    at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246) 
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) 
    at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
+1

cùng issure. Bất cứ cập nhập nào? –

+1

Không - Tôi chưa có bất kỳ phản hồi nào. Tôi bắt đầu nhút nhát từ Android Data Binding (ít nhất là trong khi nó đang ở phiên bản beta). Nó dường như thiếu sức mạnh. –

+0

Tôi đã gặp phải vấn đề này và tìm thấy [câu trả lời này] (http://stackoverflow.com/a/34396845/2165377). Nó đã khắc phục vấn đề cho tôi. –

Trả lời

0

Phiên bản nào của Gradle bạn đang sử dụng? Tôi nghĩ rằng tôi đọc có một lỗi trong một số nhà tù. Hãy thử sử dụng com.android.tools.build:gradle:1.5.0-beta1

Và đừng quên

android { 
    dataBinding { 
     enabled = true 
    } 

trong kịch bản gradle của bạn. Điều đó đã khắc phục vấn đề cho tôi.

+1

Tôi đang sử dụng gradle 1.5.0 (không phải là bản beta), và tôi đã đặt 'dataBinding {enabled = true}'. Quay trở lại 1.5.0-beta1 cho kết quả tương tự. –

+1

Tôi đang sử dụng 2.0.0-alpha3 với cùng một vấn đề. – rekire

3

Binding dữ liệu không có trong phiên bản beta nữa, vì vậy loại bỏ

apply plugin: 'com.android.databinding' 

từ build.gradle.

4

Với 2.0.0 gradle mới và Android Studio 2.0 Tôi đã chỉ thay đổi tập tin gradle ứng dụng của tôi bằng cách thêm này -

android { 
    ... 

    dataBinding{ 
     enabled = true 
    } 
} 

và nó hoạt động như một nét duyên dáng. Không cần phải thêm classpath'com.android.databinding:dataBinder:1.+' vào tệp gradle của dự án và không cần thêm apply plugin: 'com.android.databinding' vào tệp gradle của ứng dụng.

1

Chúng tôi không cần thêm

classpath 'com.android.databinding:dataBinder:1.+' 

không

apply plugin: 'com.android.databinding' 

CHỈ ADD

android { 
    ... 
    dataBinding { 
     enabled = true 
    } 
} 

nếu bạn đang sử dụng gradle 2.0 hoặc mới hơn. ví dụ:

classpath 'com.android.tools.build:gradle:2.3.0' 
0

tôi về cơ bản đồng ý về câu trả lời @ NeoTran của chúng ta:

Quote:

Chúng tôi không cần thêm

classpath 'com.android.databinding: dataBinder: 1.+'

không

áp dụng plugin: 'com.android.databinding'

Nhưng chúng ta cần

android { 
    ... 
    dataBinding { 
     enabled = true 
    } 
} 

HOẶC cho NDK

model { 
    ... 
    android.dataBinding 
    { 
     enabled = true 
    } 
} 

nếu bạn đang sử dụng gradle 2.0 hoặc mới hơn.

Trong build.gradle toàn cầu bạn cần phải thêm ví dụ:

classpath 'com.android.tools.build:gradle:2.3.3' 
classpath 'com.android.tools.build:gradle-experimental:0.9.3' // <-- for NDK 
Các vấn đề liên quan