Kapt 异常 (KaptExecution)

Kapt exception (KaptExecution)

我正在努力为我用 Kotlin 编写的项目增加空间,但我总是遇到此错误。

用户数据class

@Entity 
data class Users(

@PrimaryKey
val id: String? = "",

@ColumnInfo(name = "userFullName")
val name: String?,

@ColumnInfo(name = "userEmail")
val email: String?,
@ColumnInfo(name = "userPassword")
val password: String?,
@ColumnInfo(name = "userBDay", defaultValue = "")
val birthday: String?
)

UserDao

@Dao interface UserDao {

@Insert
fun insertUser(user: Users)

@Delete
suspend fun deleteUser(user: Users)

@Query("SELECT * FROM users")
fun getAllUsers(): List<Users>
}

用户数据库

@Database(entities = [Users::class], version = 1)
abstract class UserDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao

    companion object {
        @Volatile
        private var instance: UserDatabase? = null

        fun getUserDatabase(context: Context): UserDatabase {

            return instance ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    UserDatabase::class.java,
                    "usersDB"
                ).build()

                this.instance = instance
                instance
            }
        }
    }
}

然后当我构建它时,我得到了这个错误:

失败:构建失败,出现异常。

What went wrong:

2021-02-14T16:35:38.826+0300 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter]

Execution failed for task ':app:kaptDebugKotlin'.

A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution java.lang.reflect.InvocationTargetException (no error message)

我在 github.

编写和下载的每个代码中都遇到了这个错误

我尝试了这些链接中的解决方案:

Error:Execution failed for task ':app:compileDebugKotlin'. > Compilation error. See log for more details

A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution

A failure occurred while executing com.android.build.gradle.internal.tasks

我也以为是AS引起的,我下载了其他版本的AS,同样的事情发生了

@插入 有趣的 insertUser(用户:用户)

将此更改为

@插入 暂停乐趣 insertUser(用户:用户)

插入不应在 UI 线程上完成。这就是这个错误的可能原因。

对我来说,问题是带有 ApplicationComponent::class 的 @Installin 注释 我只是将其更改为 SingletonComponent::class

之前:

@InstallIn(ApplicationComponent::class)

之后: @InstallIn(SingletonComponent::class)

还从我的模块中的函数中删除了@Singleton 注释class

在您的 viewModel class 中,您应该像这样注入构造函数:

class MainViewModel @Inject constructor ( 私有 val 存储库:存储库, @ApplicationContext 应用:MyApplication ):AndroidViewModel(应用程序)

并在您的 activity 或片段中像这样初始化您的视图模型:

val mainViewModel: MainViewModel by viewModels()

是因为 android studio ide 和 kotlin 版本。所以,当我更新下一个版本或降级到其他版本时,问题就解决了