Внезапно я начинаю получать эту ошибку, и я не понимаю, почему, если кто-то просто сообщит мне, где эта ошибка, будет достаточно полезно. Насколько я могу получить, это благодаря новому обновлению студии Android. Я получаю подробный отчет об ошибке.
Task :app:kaptDebugKotlin
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.1C:\Users\shubh\Downloads\MarginCalculator\app\build\generated\source\kapt\debug\com\kotlin_developer\margincalculator\DataBinderMapperImpl.java:10: error: cannot find symbol
import com.kotlin_developer.margincalculator.databinding.FragmentCalculatorScreenBindingImpl;
symbol: class FragmentCalculatorScreenBindingImpl
Task :app:kaptDebugKotlin FAILED
location: package com.kotlin_developer.margincalculator.databinding
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
> java.lang.reflect.InvocationTargetException (no error message)
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 17s
29 actionable tasks: 27 executed, 2 up-to-date
android
android-studio
kotlin
Шубхам Татер
источник
источник
build.gradle
файле.Ответы:
Пользовательский интерфейс Android Studio просто скрывал ошибку ...
при возникновении ошибки он выделял элемент в представлении списка и показывал бесполезное сообщение в представлении терминала.
чтобы найти реальную ошибку, выберите корневой элемент в представлении списка, чтобы Android Studio отображала весь вывод сборки в представлении терминала, затем прокрутите, чтобы найти ошибку.
источник
Возможно, я немного опоздал с ответом, но в любом случае я получал ту же ошибку. Сбой сборки может быть вызван какой-то ошибкой, на которую Android Studio не может указать, вероятно, из-за очень большого размера проекта.
Вот простой способ указать точную ошибку.
В студии Android перейдите в меню « Анализировать» и нажмите « Проверить код» ; проверьте весь проект, нажмите ОК и дождитесь завершения проверки.
Теперь вы увидите вкладку, на которой будут указаны все ошибки, предупреждения и т. Д., И теперь вы можете решить настоящую проблему.
источник
Чтобы узнать, в чем заключается основная проблема, выполните следующую команду:
источник
Некоторое время у меня была такая же ошибка, затем я начал проверять другие пакеты, которые, как я узнал, допустил опечатку в коде своей базы данных. Итак, «Просмотрите свою базу данных и другие файлы классов активности, и вы можете найти там ошибки».
источник
@Dao
в интерфейсУ меня такая же проблема, поэтому я попытался получить дополнительную информацию, выполнив
После этого я получил точную ошибку «Ошибка при обработке аннотации». Я проверил свой недавно измененный класс DAO и обнаружил, что один из возвращаемых типов методов не определен.
//Before @Query("SELECT countryName FROM country_table WHERE countryCode= :code") fun getCountryNameForCode(code: String) //After @Query("SELECT countryName FROM country_table WHERE countryCode= :code") fun getCountryNameForCode(code: String): String
источник
gradle->app->Tasks->Build->assemble
это что?+ Изменить
implementation "android.arch.persistence.room:runtime:1.1.1" kapt "android.arch.persistence.room:compiler:1.1.1"
Чтобы
implementation "androidx.room:room-runtime:2.2.5" kapt "androidx.room:room-compiler:2.2.5"
источник
Если вы обновили путь к классам com.android.tools.build:gradle:4.0.0, замените предыдущую версию
dependencies { classpath 'com.android.tools.build:gradle:3.6.3' }
И измените gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4- all.zip`
источник
На мой взгляд, кучу справочных ошибок и ошибку в выражениях XML
DataBinding
привели к этой ошибке.Я удалил
<variable/>
вlayout
файле, потому что подумал, что он мне больше не нужен. Я забыл, что у меня есть ссылка на переменную вlayout
файле.После сборки проекта это привело к ошибке, при которой было невозможно импортировать
BindingImpl
класс, потому что он не существует, и эта ошибка отображалась только как предупреждение, параллельное указанной вышеKaptExecution
ошибке.После некоторого поиска я нашел эту ошибку и решил ее. Затем была показана куча справочных ошибок, потому что я что-то переименовал, а он не переименовал это в
Fragment
файлах. После устранения этих ошибок сборка завершилась для меня без ошибок и предупреждений.источник
попробуйте построить свой проект с
kapt.use.worker.api=false
в вашем файле настроек gradle.properties
Ссылка: https://youtrack.jetbrains.com/issue/KT-40750
источник
В моем случае я использовал комнату, и один из моих методов databasDao имеет неиспользуемый параметр, и, к сожалению, студия Android не предупреждает меня правильно
источник
У меня такая же проблема. В моем случае проблема была в базе данных. мне пришлось изменить эту строку кода
@Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)
Я добавил еще одну таблицу в базу данных, но забыл добавить таблицу в строке выше.
источник
У меня такая же проблема. Позвольте мне показать вам пример того, как я пришел к проблеме и как я ее решил, возможно, вы сможете получить более широкую картину.
Перед разрешением
@Entity(tableName = "modules") data class Module ( @PrimaryKey val id: Int, val name: String ) @Entity(tableName = "sessions") data class Session ( @PrimaryKey(autoGenerate = true) var id: Int, @ColumnInfo(name = "module_id") val moduleId: Int, @ColumnInfo(name = "start_time") val startTime: String, @ColumnInfo(name = "end_time") val endTime: String ) data class ModuleSession ( @Embedded val module: Module, @Relation( parentColumn = "id", entityColumn = "module_id" ) val sessions: List<Session>, @ColumnInfo(name = "is_updated") val isUpdated: Boolean = false // The problem )
В DAO
@Transaction @Query("SELECT * FROM modules") abstract suspend fun getModuleSession(): List<ModuleSession>
Я получил ошибку
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
Итак, я копнул глубже и нашел сообщение ниже
The columns returned by the query does not have the fields [isUpdated] in com.gmanix.oncampusprototype.Persistence.ModuleSession even though they are annotated as non-null or primitive. Columns returned by the query: [id,name] public abstract java.lang.Object getModuleSession(@org.jetbrains.annotations.NotNull()
Я удалил поле IsUpdated из сеанса POJO ModuleSession и добавил его в таблицу сеанса
После изменений
@Entity(tableName = "sessions") data class Session ( @PrimaryKey(autoGenerate = true) var id: Int, @ColumnInfo(name = "module_id") val moduleId: Int, @ColumnInfo(name = "start_time") val startTime: String, @ColumnInfo(name = "end_time") val endTime: String, @ColumnInfo(name = "is_updated") val isUpdated: Boolean = false ) data class ModuleSession ( @Embedded val module: Module, @Relation( parentColumn = "id", entityColumn = "module_id" ) val sessions: List<Session> )
С другой стороны, проверьте, есть ли какое-либо поле на
SELECT
заявлении которое вызывает подозрения, или вы можете аннотировать его с помощью@Ignore
Однако вы можете опубликовать свой код, если вам все еще неудобно.
Я надеюсь это может помочь
источник
Передайте ответ @Rene Spies выше, я также получил эту ошибку при работе с привязкой данных. Оказывается, механизму сборки не нравится, когда вы помещаете
@Bindable
аннотацию в поле в основном конструктореdata class
в Kotlin.Так что никогда не делайте следующего,
data class MyAwesomePojo( @Bindable var firstname: String, var lastname: String )
вместо этого вам нужно сделать
data class MyCorrectAwesomePojo( var lastname: String ):{ @get:Bindable var firstname: String set(value){ field = value } }
Бонус: не забудьте проверить одинаковые значения перед установкой значения в поле, если вы пытаетесь использовать двустороннюю привязку, как я, чтобы предотвратить бесконечный цикл настройки и получения.
источник
Интересно, что я получал эту ошибку, потому что добавил описание модернизации. Будьте осторожны, чтобы не перепутать описание «Комната» и «Модернизация».
источник
В моем случае это произошло потому, что я не реализовал Observable в своей ViewModel. Я добавил EditText в макет ограничения с помощью
android:text="@={addProductViewModel.inputProductName}"
Как только я реализовал
Observable
в своем классе ViewModel, ошибка исчезлаViewModel
class AddProductViewModel ( private val repository: ProductRepository, private val context: Context ): ViewModel(), Observable { @Bindable val inputProductName = MutableLiveData<String>() fun addProduct() { //inputProductName.value } override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) { TODO("Not yet implemented") } override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) { TODO("Not yet implemented") } }
Полный пример привязки данных MVVM с использованием фрагментов
Макет - add_product.xml
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android" > <data class=".AddProductBinding"> <variable name="addProductViewModel" type="com.rao.iremind.AddProductViewModel" /> </data> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/editTextTextProductName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ems="10" android:hint="Product name" android:inputType="textPersonName" android:text="@={addProductViewModel.inputProductName}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout> </layout>
AddProductFragment
class AddProductFragment: Fragment() { private lateinit var binding: AddProductBinding private lateinit var addProductViewModel: AddProductViewModel override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { binding = DataBindingUtil.inflate(inflater, R.layout.add_product, container, false) val dao = SubscriberDatabase.getInstance(requireActivity().applicationContext).productDAO val repository = ProductRepository(dao) val factory = AddProductViewModelFactory(repository, requireActivity().applicationContext) addProductViewModel = ViewModelProvider(this, factory).get(AddProductViewModel::class.java) binding.addProductViewModel = addProductViewModel binding.lifecycleOwner = this val view = binding.root return view } }
AddProductViewModel
class AddProductViewModel ( private val repository: ProductRepository, private val context: Context ): ViewModel(), Observable { @Bindable val inputProductName = MutableLiveData<String>() fun addProduct() { //inputProductName.value } override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) { TODO("Not yet implemented") } override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) { TODO("Not yet implemented") } }
Надеюсь, это поможет R
источник
В моем случае: проблема решена
Шаги:
<variable name="viewModel" type="com.xx.AppViewModel" / >
android:text="@{viewModel.simName}"
Очистите проект и перекомпилируйте.
Добавить переменную viewModel - в проекте XML & Build .
< variable name="viewModel" type="com.xx.AppViewModel" / >
android:text="@{viewModel.simName}"
- Надеюсь, у вас тоже сработает.
источник
У меня была такая же проблема с Room, и я не использовал viewBinding .
Я исправил это с помощью exportSchema в false в моем классе базы данных.
@Database(entities = [ModelClass::class], version = 1, exportSchema = false) abstract class ModelDatabase: RoomDatabase() {}
Помните: exportScehma может варьироваться в зависимости от вашего варианта использования, обычно он остается ложным, поэтому я поставил его в false.
источник
В моем случае я глобально изменил одну переменную UserManager на NetWorkManager, и везде, где были классы UserManager, они превратились в NetworkManager.
Поскольку я использую Hilt, мне пришлось заново собрать проект.
Я почистил проект, и Котлин показал, где были ошибки.
источник
Я также столкнулся с той же проблемой, поэтому просто попробуйте, я удалил папку проекта .idea и папку .gradle, затем я также удалил папку сборки внутри папки приложения, а затем перезапустил Android Studio IDE, и это работает для меня
источник
Для меня проблема заключалась в том, что в модели были определены 2 первичных ключа.
// before @field:ColumnInfo(name = "id") @field:PrimaryKey(autoGenerate = true) var id: Long = 0, @field:ColumnInfo(name = "name") @field:PrimaryKey var name: String, //after @field:ColumnInfo(name = "id") @field:PrimaryKey(autoGenerate = true) var id: Long = 0, @field:ColumnInfo(name = "name") @field:NotNull var name: String,
Мне пришлось перестроить проект и немного изменить класс Dao, чтобы появилось сообщение о проблеме.
источник
для меня это был основной конструктор в одном классе записи базы данных
источник
Этот метод возникает у меня все, что есть проблема с
Room
базой данных иCoroutines
даже орфографические ошибки. И, наконец, при попытке вернуть одно значение с помощью Flow после вставленного столбца с помощью:Flow<Long>
из классов DAO.Это должна быть
suspend
функция и толькоLong
тип, возвращаемый после вставленного столбца.Иногда эти проблемы неоднозначны, поэтому попробуйте прочитать все сообщения Build Output. Мне помогло следующее сообщение:
error: Not sure how to handle insert method's return type.
источник
Ничего не получилось. Я все перепробовал и наконец нашел небольшую ошибку, которая создавала большую проблему.
Вернитесь к каждому вновь созданному файлу для базы данных и внимательно проверьте код построчно для каждого файла.
Проверьте класс базы данных и проверьте, объявлен ли Дао, например,
abstract val commentDatabaseDao: CommentDatabaseDao
объявить как val not var , это было в моем случае и, наконец, для этого разрешено.
источник
Это случилось со мной только что. Другой разработчик не выполнил слияние должным образом, поэтому эта строка была в коде
Вместо того, чтобы получить ошибку компиляции, я получил ошибку KaptExecution.
источник
После долгих мучений я решил попробовать
annotationProcessor
вместо того, чтобыkapt
надеяться, что он хотя бы покажет сообщение об ошибке или что-то еще, что может помочь мне найти источник. Но, к счастью (или, к сожалению, из-за потраченного времени), он был построен без ошибок. По большей части это ошибкаkapt
сама по себе. Итак, попробуйте это решение, и оно может помочь.источник
На самом деле проблема заключается в типографике вашего кода. Что до меня, пришлось отказаться от плагина kapt. Затем я переключился на использование annotationProcessor. В нем четко указано, в чем была ошибка после сборки.
После устранения ошибки вы можете вернуться к использованию kapt.
Для меня ошибка заключалась в том, что я по ошибке попробовал двустороннюю привязку данных в текстовом представлении.
источник
У меня была такая же ошибка. У меня было две проблемы.
Вам может потребоваться добавить
реализация 'androidx.room:room-ktx:2.2.5'
Я удалил файл, на который ссылались как на член одного из файлов activity_xml. Ошибка никогда не давала мне подсказки, пока я не изменил ее на annotationProcessor вместо kapt, затем она указала на ошибку, я нашел файл и, конечно же, у меня была ссылка на файл, который я больше не использовал и был удален. Я удалил эту ссылку на данные из xml, и он все очистил. Потом поставил обратно на капт.
источник
в некоторых случаях это может помочь gradle.properties
kapt.include.compile.classpath=true
источник
в моем случае я добавил эту строку
android { . . . kapt.includeCompileClasspath = false }
источник
Я только что обновил Android Studio IDE до версии 4.1.1 и получил аналогичную проблему.
Я понял…
… Раньше у меня не было некоторых
*_Impl
классов (я знаю о них по материалам Kotlin) и даже не было каких-то новых*Tests
классов.Итак, после «бега по всему миру», чтобы принять решение, я просто сделал интуитивно понятный и справедливый выбор: я удалил все те файлы внутри своих «собранных вручную» пакетов, которых не было до обновления Android Studio .
И угадайте, что?
Это сработало. Никаких проблем, ни одной проблемы
kapt
.Я не говорю, что это окончательное решение. Но это может сработать для вас.
Всего хорошего.
источник