ANTLR Tool версии 4.5.3, используемая для генерации кода, не соответствует текущей версии среды выполнения 4.7.1 - PullRequest
3 голосов
/ 26 марта 2020

Я получаю сообщение об ошибке в DataBindingMapperImpl. java для одной указанной c привязки данных, что приводит к следующей ошибке при создании проекта.

ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1/Users/casper/Documents/ARCore/Name/app/build/generated/source/kapt/nameDebug/com/company/name/DataBinderMapperImpl.java:10: error: cannot find symbol
import com.company.name.databinding.ActivitySplashScreenBindingImpl;
                                                ^
symbol:   class ActivitySplashScreenBindingImpl

> Task :app:kaptNameDebugKotlin FAILED
> Task :app:mergeExtDexNameDebug
location: package com.company.name.databinding
FAILURE: Build failed with an exception.

, за которой следует сообщение об ошибке ниже. ..

Я следовал аналогичному посту здесь , что привело к этому, что является концом сообщения об ошибке выше.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptNameDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
> java.lang.reflect.InvocationTargetException (no error message)

Я также пытался

  1. Очистить проект и затем перестроить проект
  2. Файл -> Неверный кэш / перезапустить
  3. Включение и выключение Android Studio

Файл макета, связанный с привязкой данных, выглядит следующим образом

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

<data>
    <variable
        name="viewmodel"
        type="com.company.name.ui.splashScreen.viewModel.SplashScreenViewModel"/>
    <variable
        name="tryAgainBtnHandler"
        type="com.company.name.ui.splashScreen.viewModel.interfaces.TryAgainBtnHandler"/>
</data>

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.splashScreen.view.SplashScreenActivity">

Solution Ошибка была вызвана ошибкой. Я установил видимость по

android:visibility="@{viewmodel.errorContainerVisible ? View.VISIBLE : View.GONE}"

и забыл импортировать

<data>
    <import type="android.view.View"/>

1 Ответ

8 голосов
/ 26 марта 2020

Отказ от ответственности:

Исправление, приведенное ниже, предназначено для решения конкретной проблемы c с некоторыми конфликтами зависимостей, в основном проблемы с привязкой данных могут вызывать эту ошибку, но являются лишь следствием неправильного XML или код и решение ниже не будут работать в этом случае. Дважды проверьте правильность своего XML / кода, прежде чем пытаться использовать приведенное ниже решение.

Это известная проблема с некоторыми версиями привязки данных (встроенными в AS) и другими зависимостями, такими как Room, которые импортируют разные версии org.antlr:antlr4 library.

Поместите эту конфигурацию в приложение build.gradle

//groovy
configurations.all {
    resolutionStrategy.force "org.antlr:antlr4-runtime:4.7.1"
    resolutionStrategy.force "org.antlr:antlr4-tool:4.7.1"
}

//kotlin DSL
configurations.all {
    resolutionStrategy {
        force("org.antlr:antlr4-runtime:4.7.1")
        force("org.antlr:antlr4-tool:4.7.1")
    }
}

Если у вас все еще есть проблемы, вы можете попробовать использовать версию 4.5.3 выше вместо 4.7.1 чтобы понизить версию библиотеки

Ссылка

...