De repente, empiezo a recibir este error, y no tengo idea de por qué si alguien me deja saber dónde está este error, será lo suficientemente útil. Todo lo que puedo obtener es esto debido a la nueva actualización de Android Studio. Resumen detallado del error que recibo.
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
Shubham Tater
fuente
fuente
build.gradle
archivo.Respuestas:
La interfaz de usuario de Android Studio solo ocultaba el error ...
cuando ocurrió el error, resaltó el elemento en la vista de lista y mostró un mensaje inútil en la vista de terminal.
para encontrar el error real, seleccione el elemento raíz en la vista de lista para que Android Studio muestre todo el resultado de la compilación en la vista de terminal, luego desplácese para encontrar el error.
fuente
Tal vez llegué un poco tarde para la respuesta pero, de todos modos, recibí el mismo error. El error de compilación puede deberse a algún error que Android Studio no señala, probablemente debido a que el tamaño del proyecto es muy grande.
Esta es la manera fácil de señalar el error exacto.
En Android Studio, vaya al menú Analizar y haga clic en Inspeccionar código ; Verifique todo el proyecto, haga clic en Aceptar y espere a que finalice la inspección.
Ahora verá una pestaña que señalará todos los errores, advertencias, etc. y ahora puede resolver el problema real.
fuente
La forma de averiguar cuál es el problema subyacente es ejecutar el siguiente comando:
fuente
Tuve el mismo error por un tiempo, luego comencé a verificar los otros paquetes y me enteré de que había cometido un error tipográfico en el código de mi base de datos. Por lo tanto, "Revise su base de datos y otros archivos de clases de actividad y puede encontrar algunos errores allí".
fuente
@Dao
interfazTuve el mismo problema, así que intenté obtener más información haciendo
Después de esto, obtuve el error exacto que decía "Error al procesar la anotación". Revisé mi clase DAO modificada recientemente y encontré que uno de los tipos de retorno del método no estaba definido.
//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
fuente
gradle->app->Tasks->Build->assemble
¿que es eso?Cambio
implementation "android.arch.persistence.room:runtime:1.1.1" kapt "android.arch.persistence.room:compiler:1.1.1"
A
implementation "androidx.room:room-runtime:2.2.5" kapt "androidx.room:room-compiler:2.2.5"
fuente
Si ha actualizado a classpath 'com.android.tools.build:gradle:4.0.0' Reemplace la versión anterior
dependencies { classpath 'com.android.tools.build:gradle:3.6.3' }
Y cambiar gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4- all.zip`
fuente
Para mí, un montón de errores de referencia y un error en las expresiones XML
DataBinding
produjeron este error.He eliminado un archivo
<variable/>
en unlayout
archivo porque pensé que ya no lo necesito. Olvidé que tenía la variable referenciada en ellayout
archivo.Luego de construir el proyecto, esto produjo un error, donde no fue posible importar la
BindingImpl
clase, porque no existe y este error solo se mostró como una advertencia paralela alKaptExecution
error anterior .Después de buscar por un tiempo, encontré este error y lo resolví. Luego, se mostraron un montón de errores de referencia, porque cambié el nombre de algo y no lo cambió en los
Fragment
archivos. Después de resolver estos errores también, la compilación finalizó sin errores ni advertencias.fuente
intenta construir tu proyecto con
kapt.use.worker.api=false
en su archivo de configuración gradle.properties
Referencia: https://youtrack.jetbrains.com/issue/KT-40750
fuente
En mi caso, utilicé room y uno de mis métodos de base de datos tiene un parámetro no utilizado y, lamentablemente, Android Studio no me advierte correctamente
fuente
Yo tuve el mismo problema. Permítanme explicarles el ejemplo de cómo terminé con el problema y la forma en que lo resolví.
Antes de resolver
@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 )
En el DAO
@Transaction @Query("SELECT * FROM modules") abstract suspend fun getModuleSession(): List<ModuleSession>
El error que obtuve fue
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
Así que investigué más y encontré el siguiente mensaje
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()
Eliminé el campo IsUpdated de POJO ModuleSession y lo agregué a la tabla de sesiones
Después de los cambios
@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> )
Por otro lado, verifique si hay algún campo en la
SELECT
declaración que sea sospechoso que cause problemas o puede anotarlo con@Ignore
Sin embargo, puede publicar su código si aún no se siente cómodo.
Espero que pueda ayudar
fuente
Grita la respuesta de @Rene Spies anterior, también recibí este error mientras trabajaba con el enlace de datos. Resulta que al motor de compilación no le gusta cuando pones la
@Bindable
anotación en un campo en el constructor principal de undata class
en Kotlin.Así que nunca hagas lo siguiente
data class MyAwesomePojo( @Bindable var firstname: String, var lastname: String )
en cambio, lo que tienes que hacer es
data class MyCorrectAwesomePojo( var lastname: String ):{ @get:Bindable var firstname: String set(value){ field = value } }
Bonificación: recuerde verificar los mismos valores antes de configurar el valor en el campo si está tratando de usar un enlace bidireccional como yo para evitar un bucle infinito de configuración y obtención.
fuente
Curiosamente, recibí este error porque agregué la descripción de Retrofit. Tenga cuidado de no confundir la descripción de Room y Retrofit.
fuente
En mi caso, fue porque no estaba implementando Observable en mi ViewModel. Agregué un EditText al diseño de restricción con
android:text="@={addProductViewModel.inputProductName}"
Una vez que implementé
Observable
en mi clase ViewModel, el error desapareció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") } }
Ejemplo completo de enlace de datos MVVM usando fragmentos
Diseño: 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") } }
Espero que esto ayude a R
fuente
En mi caso: problema resuelto
Pasos:
<variable name="viewModel" type="com.xx.AppViewModel" / >
android:text="@{viewModel.simName}"
Proyecto limpio y recompilación.
Agregar variable viewModel: en el proyecto XML & Build .
< variable name="viewModel" type="com.xx.AppViewModel" / >
android:text="@{viewModel.simName}"
- Espero que también funcione para ti.
fuente
Tuve el mismo problema con Room y no estaba usando viewBinding .
Lo arreglé usando exportSchema a falso en mi clase de base de datos.
@Database(entities = [ModelClass::class], version = 1, exportSchema = false) abstract class ModelDatabase: RoomDatabase() {}
Recuerde: exportScehma podría variar según su caso de uso, generalmente permanece falso, así que lo puse en falso.
fuente
En mi caso, he cambiado globalmente una variable UserManager a NetWorkManager y en todos los lugares donde había clases de UserManager se convirtieron en NetworkManager.
Como estoy usando Hilt, tuve que volver a construir el proyecto.
Limpié el Proyecto y Kotlin mostró dónde estaban los errores.
fuente
También me encontré con el mismo problema, así que, por solo intentarlo, eliminé la carpeta .idea y la carpeta .gradle del proyecto, luego también eliminé la carpeta de compilación dentro de la carpeta de la aplicación y luego reinicié el IDE de Android Studio y me funciona
fuente
Para mí, el problema era tener 2 claves primarias definidas en el modelo.
// 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,
Tuve que reconstruir el proyecto y cambiar un poco la clase Dao para activar el mensaje sobre el problema.
fuente
para mí fue el constructor principal en una clase de entrada de base de datos
fuente
Este método se me ocurre todo, hay un problema con la
Room
base de datos eCoroutines
, incluso, errores ortográficos. Por último, al intentar devolver un valor único con un flujo después de la columna insertada, mediante:Flow<Long>
de las clases de DAO.Debe ser una
suspend
función y soloLong
escribir para regresar después de la columna insertada.Estos problemas son ambiguos en algún momento, así que intente leer todos los mensajes de Salida de compilación, el mensaje que me ayudó fue:
error: Not sure how to handle insert method's return type.
fuente
Nada funcionó Probé todo y finalmente encontré un pequeño error que estaba creando un gran problema.
Regrese a cada archivo recién creado para la base de datos y verifique cuidadosamente el código línea por línea de cada archivo.
Verifique la clase de base de datos y verifique si Dao está declarado como, por ejemplo,
abstract val commentDatabaseDao: CommentDatabaseDao
declaro como val no var , esto fue en mi caso y finalmente para esto se resolvió.
fuente
Me acaba de pasar esto. Otro desarrollador no había completado una fusión correctamente, por lo que esta línea estaba en el código
En lugar de obtener un error de compilación, obtuve el error KaptExecution.
fuente
Después de mucho dolor, decidí intentarlo en
annotationProcessor
lugar dekapt
esperar que al menos muestre un mensaje de error o cualquier cosa que pueda ayudarme a localizar la fuente. Pero afortunadamente (o desafortunadamente, debido al tiempo perdido), se construyó con éxito sin errores. Es principalmente un error enkapt
sí mismo. Entonces, pruebe esta solución y puede ayudar.fuente
En verdad, el problema radica en la tipografía de su código. En cuanto a mí, tuve que dejar de usar el complemento kapt. Luego cambié para usar annotationProcessor. Declaró claramente cuál fue el error después de la construcción.
Luego puede volver a usar kapt después de haber resuelto el error.
Para mí, el error que tuve fue que intenté por error la vinculación de datos bidireccional en una vista de texto.
fuente
Yo tuve el mismo problema. En mi caso, el problema fue sobre la base de datos. tuve que cambiar esta línea de código
@Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)
Agregué otra tabla en la base de datos pero olvidé agregar una tabla en la línea de arriba.
fuente
Yo tenía el mismo error. Tuve dos problemas.
Es posible que deba agregar
implementación 'androidx.room:room-ktx:2.2.5'
Había eliminado un archivo al que se hacía referencia como miembro en uno de los archivos activity_xml. El error nunca me dio ninguna pista hasta que lo cambié a annotationProcessor en lugar de kapt, luego señaló el error, encontré el archivo y, efectivamente, tenía una referencia a un archivo que ya no usaba y fue eliminado. Eliminé esta referencia de datos del xml y lo aclaré todo. Luego lo devolví a kapt.
fuente
en algunos casos puede ayudar a gradle.properties
kapt.include.compile.classpath=true
fuente
en mi caso, he agregado esta línea
android { . . . kapt.includeCompileClasspath = false }
fuente
Acabo de actualizar Android Studio IDE a la versión 4.1.1 y tuve un problema similar.
Lo que me di cuenta fue ...
… Antes no tenía algunas
*_Impl
clases (las sé en cosas de Kotlin) y ni siquiera algunas*Tests
clases nuevas .Entonces, después de "ejecutar todo el mundo" para encontrar una solución, simplemente hice una elección intuitiva y justa: eliminé todos esos archivos dentro de mis paquetes "construidos a mano" que no estaban allí antes de la actualización de Android Studio .
¿Y adivina qué?
Funcionó. Sin problemas, ni siquiera un problema
kapt
.No digo que sea una solución final. Pero puede funcionar para ti.
Tener una buena.
fuente