De repente, começo a receber esse erro e não estou entendendo por que se alguém me informar onde está esse erro, será útil o suficiente. O máximo que consigo obter é por causa da nova atualização do Android Studio. Resumo detalhado do erro que estou recebendo.
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
fonte
fonte
build.gradle
arquivo.Respostas:
A IU do Android Studio estava apenas escondendo o erro ...
quando o erro ocorreu, ele destacou o item na exibição de lista e mostrou uma mensagem inútil na exibição do terminal.
para encontrar o erro real, selecione o item raiz na visualização de lista para que o Android Studio exiba toda a saída da compilação na visualização do terminal e, em seguida, role para localizar o erro.
fonte
Talvez eu esteja um pouco atrasado para a resposta mas, de qualquer forma, estava recebendo o mesmo erro. A falha de construção pode ser causada por algum erro que o Android Studio falha em apontar, provavelmente devido ao tamanho do projeto ser muito grande.
Esta é a maneira fácil de apontar o erro exato.
No Android Studio, acesse o menu Analisar e clique em Inspecionar Código ; verifique todo o projeto, clique em OK e aguarde a conclusão da inspeção.
Agora você verá uma guia que apontará todos os erros, avisos, etc. e agora você pode resolver o problema real.
fonte
A maneira de descobrir qual é o problema subjacente é executar o seguinte comando:
fonte
Eu tive o mesmo problema, então tentei obter mais informações, fazendo
Depois disso, recebi o erro exato dizendo "Erro durante o processamento da anotação". Eu verifiquei minha classe DAO recentemente ajustada e descobri que um dos tipos de retorno do método não foi 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
fonte
gradle->app->Tasks->Build->assemble
o que é isso?Eu tive o mesmo erro por um tempo, então comecei a verificar os outros pacotes que descobri que cometi um erro de digitação no código do meu banco de dados. Portanto, "Vá até o seu banco de dados e outros arquivos da classe de atividades e pode encontrar alguns erros lá."
fonte
@Dao
interface MyDaomudança
implementation "android.arch.persistence.room:runtime:1.1.1" kapt "android.arch.persistence.room:compiler:1.1.1"
Para
implementation "androidx.room:room-runtime:2.2.5" kapt "androidx.room:room-compiler:2.2.5"
fonte
Se você atualizou para o classpath 'com.android.tools.build:gradle:4.0.0' Substitua a versão anterior
dependencies { classpath 'com.android.tools.build:gradle:3.6.3' }
And Change gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4- all.zip`
fonte
Para mim, um monte de erros de referência e um erro nas expressões XML
DataBinding
produziram esse erro.Excluí um
<variable/>
em umlayout
arquivo porque pensei: não preciso mais dele. Eu esqueci que tinha a variável referenciada nolayout
arquivo.Após a construção do projeto, este gerou um erro, onde não foi possível importar a
BindingImpl
classe, pois ela não existe e esse erro só foi mostrado como um aviso paralelo aoKaptExecution
erro .Depois de pesquisar por um tempo, encontrei esse erro e resolvi. Então, um monte de erros de referência foram mostrados, porque eu renomei algo e ele não renomeei nos
Fragment
arquivos. Depois de resolver esses erros também, a compilação foi concluída para mim sem erros ou avisos.fonte
Eu tive o mesmo problema. Deixe-me mostrar um exemplo de como resolvi o problema e a maneira como o resolvi. Talvez você possa ter uma visão maior.
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 )
No DAO
@Transaction @Query("SELECT * FROM modules") abstract suspend fun getModuleSession(): List<ModuleSession>
O erro que recebi foi
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
Então eu cavei mais fundo e encontrei a mensagem abaixo
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()
Removi o campo IsUpdated do POJO ModuleSession e o adicionei à tabela de sessão
Depois das mudanças
@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 outro lado, verifique se há algum campo na
SELECT
declaração que seja suspeito de causar problemas ou você pode anotá-lo com@Ignore
No entanto, você pode postar seu código se ainda não estiver confortável.
Espero que possa ajudar
fonte
No meu caso, usei room e um dos meus métodos databasDao tem um parâmetro não utilizado e, infelizmente, o android studio não me avisa corretamente
fonte
tente construir seu projeto com
kapt.use.worker.api=false
em seu arquivo de configurações gradle.properties
Referência: https://youtrack.jetbrains.com/issue/KT-40750
fonte
Eu tive o mesmo problema. No meu caso, o problema era sobre Banco de Dados. eu tive que mudar esta linha de código
@Database(entities = [SearchedLocation::class, FavoriteLocation::class], version = 1)
Eu adicionei outra tabela no banco de dados, mas esqueci de adicionar a tabela na linha acima.
fonte
Depois de muita dor, decidi tentar ao
annotationProcessor
invés dekapt
esperar que pudesse pelo menos mostrar uma mensagem de erro ou qualquer coisa que possa me ajudar a localizar a fonte. Mas felizmente (ou infelizmente; por causa do tempo perdido), ele foi construído com sucesso e sem erros. É principalmente um bug emkapt
si mesmo. Portanto, experimente esta solução e pode ajudar.fonte
Este problema também acontece se você instalou um novo plugin kotlin (
1.4.20-release-Studio4.1-1
) e tem o dagger (kapt 'com.google.dagger:dagger-compiler:2.30'
). Nesse caso, uma solução pode substituir o uso suspensoplugin: 'kotlin-android-extensions'
pela vinculação de visualização ( https://developer.android.com/topic/libraries/view-binding )fonte
Grite para a resposta de @Rene Spies acima, também recebi este erro ao trabalhar com ligação de dados. Acontece que o mecanismo de construção não gosta quando você coloca a
@Bindable
anotação em um campo no construtor principal de umdata class
em Kotlin.Portanto, nunca faça o seguinte,
data class MyAwesomePojo( @Bindable var firstname: String, var lastname: String )
em vez disso, o que você precisa fazer é
data class MyCorrectAwesomePojo( var lastname: String ):{ @get:Bindable var firstname: String set(value){ field = value } }
Bônus: lembre-se de verificar os mesmos valores antes de definir o valor para o campo se você estiver tentando usar a vinculação bidirecional como eu, para evitar o loop infinito de configuração e obtenção.
fonte
Curiosamente, estava recebendo esse erro porque adicionei a descrição do Retrofit. Tenha cuidado para não confundir a descrição de Sala e Retrofit.
fonte
No meu caso, foi porque eu não estava implementando Observable em meu ViewModel. Eu adicionei um EditText ao layout de restrição com
android:text="@={addProductViewModel.inputProductName}"
Assim que implementei
Observable
em minha classe ViewModel, o erro foi emboraViewModel
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") } }
Exemplo completo para ligação de dados MVVM usando fragmentos
Layout - 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 isso ajude R
fonte
No meu caso: problema resolvido
Passos:
<variable name="viewModel" type="com.xx.AppViewModel" / >
android:text="@{viewModel.simName}"
Limpe o projeto e recompile.
Adicionar a variável viewModel - No projeto XML & Build .
< variable name="viewModel" type="com.xx.AppViewModel" / >
android:text="@{viewModel.simName}"
- Espero que funcione para você também.
fonte
Eu tive o mesmo problema com o Room e não estava usando o viewBinding .
Eu corrigi- lo usando exportSchema para false na minha classe de banco de dados.
@Database(entities = [ModelClass::class], version = 1, exportSchema = false) abstract class ModelDatabase: RoomDatabase() {}
Lembre-se: exportScehma pode variar de acordo com o seu caso de uso, geralmente permanece falso, então eu o coloco como falso.
fonte
No meu caso, mudei globalmente uma variável UserManager para NetWorkManager e em todos os lugares onde havia classes do UserManager, elas passaram a ser NetworkManager.
Como estou usando o Hilt, tive que construir o projeto novamente.
Limpei o projeto e Kotlin mostrou onde estavam os erros.
fonte
Eu também fui encontrado com o mesmo problema, então por apenas tentar eu apaguei a pasta .idea e a pasta .gradle do projeto, então eu também apaguei a pasta build dentro da pasta do app e reiniciei o IDE do Android Studio e funcionou para mim
fonte
Para mim, o problema era ter 2 chaves primárias definidas no 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,
Tive que reconstruir o projeto e mudar um pouco a classe Dao para acionar a mensagem sobre o problema.
fonte
Esse método me ocorre tudo que há um problema com
Room
banco de dados eCoroutines
, até mesmo erros ortográficos. Por último foi ao tentar retornar um único valor com um Fluxo após a coluna inserida, por:Flow<Long>
das classes DAOs.Deve ser uma
suspend
função e apenasLong
digitar para retornar após a coluna inserida.Esses problemas são ambíguos às vezes, então tente ler todas as mensagens do Build Output, a mensagem que me ajudou foi:
error: Not sure how to handle insert method's return type.
fonte
Nada funcionou, tentei de tudo e finalmente encontrei um pequeno erro que estava criando um grande problema.
Volte a cada arquivo recém-criado para banco de dados e verifique o código linha por linha de cada arquivo com cuidado.
Verifique a classe de banco de dados e verifique se Dao é declarado como por exemplo,
abstract val commentDatabaseDao: CommentDatabaseDao
declare como val not var , isso foi no meu caso e finalmente para isso resolvido.
fonte
Eu simplesmente tive isso acontecendo comigo. Outro dev não completou uma mesclagem corretamente, então esta linha estava no código
Em vez de obter um erro de compilação, obtive o erro KaptExecution.
fonte
Eu tive o mesmo erro. Eu tive dois problemas.
Você pode precisar adicionar
implementação 'androidx.room:room-ktx:2.2.5'
Eu havia excluído um arquivo que era referenciado como membro em um dos arquivos activity_xml. O erro nunca me deu nenhuma pista até que mudei para annotationProcessor em vez de kapt, depois apontou o erro, encontrei o arquivo e, com certeza, tinha uma referência a um arquivo que não usava mais e foi excluído. Eu removi essa referência de dados do xml e ele limpou tudo. Então eu coloquei de volta no kapt.
fonte
em alguns casos, pode ajudar gradle.properties
kapt.include.compile.classpath=true
fonte
no meu caso, eu adicionei esta linha
android { . . . kapt.includeCompileClasspath = false }
fonte
Acabei de atualizar o IDE do Android Studio para a versão 4.1.1 e tive um problema semelhante.
O que eu percebi foi ...
... antes eu não tinha algumas
*_Impl
aulas (eu sei sobre elas no material de Kotlin) e nem mesmo algumas novas*Tests
aulas .Então, depois de “rodar o mundo todo” para encontrar uma solução, fiz uma escolha intuitiva e justa: excluí todos os arquivos de meus pacotes "feitos à mão" que não estavam lá antes da atualização do Android Studio .
E adivinha?
Funcionou. Sem problemas, nem mesmo um problema sobre
kapt
.Não estou dizendo que seja uma solução final. Mas pode funcionar para você.
Tenha um bom dia.
fonte
Sim, também recebi esse erro e era um
Room
problema relacionado.Eu tinha definido o meu
TypeConverters
, mas não anotada meuRoom database
com:@TypeConverters(TypeConverter.class)
.fonte