标签: kotlin-symbol-processing

使用 Kotlin 信号处理 (KSP) 时提供注释处理器参数

我使用以下方法将 KSP 与 Room 结合使用:

plugins {
    id 'com.google.devtools.ksp' version "$kotlin_version-1.0.0"
Run Code Online (Sandbox Code Playgroud)
dependencies {
   ksp "androidx.room:room-compiler:$room_version"
Run Code Online (Sandbox Code Playgroud)

这确实有效。但是,当我尝试运行它时,我会收到此警告

[ksp] MyDatabase.kt:11:架构导出目录未提供给注释处理器,因此我们无法导出架构。您可以提供room.schemaLocation注释处理器参数或将 exportSchema 设置为 false。

为了做到这一点:使用 KSP 时如何提供注释处理器参数?

android kotlin android-room kotlin-symbol-processing

22
推荐指数
1
解决办法
4663
查看次数

找不到参数的方法 ksp()

我刚刚开始在 Kotlin 中学习 Android,我正在创建一个笔记应用程序只是为了学习目的。我想使用 Room 将保存的笔记存储在我的数据库中,所以我查看了developer.android 教程,我们有一些必要的依赖项,我们必须在 build.gradle(Module) 中添加这些依赖项,如developer.android.com 上提到的https://developer.android.com/training/data-storage/room#kts 但是当我添加这些依赖项时,我遇到了一个我无法弄清楚的错误

在 org.gradle.api.internal.artifacts.dsl.dependency.DefaultDependencyHandler 类型的对象上找不到参数 [androidx.room:room-compiler:2.4.3] 的方法 ksp()

我在 kapt 中遇到了类似的错误,但我通过在 build.gradle(Module) 中添加必要的插件来解决它。现在我正在从 build.gradle 中删除此实现并继续测试项目,但有任何帮助将不胜感激,谢谢。

developer.android.com 中提到的依赖项

dependencies {
    val room_version = "2.4.3"

    implementation("androidx.room:room-runtime:$room_version")
    annotationProcessor("androidx.room:room-compiler:$room_version")

    // To use Kotlin annotation processing tool (kapt)
    kapt("androidx.room:room-compiler:$room_version")
    // To use Kotlin Symbol Processing (KSP)
    ksp("androidx.room:room-compiler:$room_version")

    // optional - Kotlin Extensions and Coroutines support for Room
    implementation("androidx.room:room-ktx:$room_version")

    // optional - RxJava2 support for Room
    implementation("androidx.room:room-rxjava2:$room_version")

    // optional - RxJava3 support for Room
    implementation("androidx.room:room-rxjava3:$room_version")

    // …
Run Code Online (Sandbox Code Playgroud)

kotlin android-studio kotlin-symbol-processing

20
推荐指数
3
解决办法
2万
查看次数

Kapt 到 KSP 迁移错误

kapt当我尝试使用to迁移 Android 项目时收到错误消息KSP

错误信息

Unable to find method ''void org.jetbrains.kotlin.gradle.tasks.KotlinCompile.<init>(org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions)''
'void org.jetbrains.kotlin.gradle.tasks.KotlinCompile.<init>(org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions)'

Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.

Stop Gradle build processes (requires restart)
Your project may be using a third-party plugin which is not compatible with the other plugins in the project …
Run Code Online (Sandbox Code Playgroud)

android kotlin kapt kotlin-symbol-processing

18
推荐指数
2
解决办法
2万
查看次数

KSP:如何获取数据类属性的默认值?

我有以下数据类注释@MyAnnotation

@MyAnnotation
data class MyDataClass(
    val foo: Boolean = true,
    val bar: Int = 123,
    val buz: String? = "abc",
)
Run Code Online (Sandbox Code Playgroud)

ClassDeclaration我可以获取所有KSPropertyDeclaration,并且我能够获取simpleName并解析KSType,但我不知道如何获取每个属性的默认值。

annotation-processing kotlin kotlin-symbol-processing

6
推荐指数
1
解决办法
924
查看次数

调试 Kotlin 符号处理 (KSP)

如何使用Idea和Gradle调试KSP?

在调试模式下从 IDE运行build任务不会将 IDE 附加到进程。

有没有任何命令行方法可以让处理器等待 IDE 连接到进程?

(我使用的是KSP 1.5.31-1.0.0

kotlin kotlin-symbol-processing

5
推荐指数
1
解决办法
2622
查看次数

Kotlin 1.7.0 中的 Android Room

当更新到 Kotlin 1.7.0 时,由于最新版本的 Jetpack Compose 需要它,我发现 Room 不再工作。我使用kapt作为我的注释处理器,编译器抛出错误消息,例如:

[*] error: Query method parameters should either be a type that can be converted into a database column or a List / Array that contains such type. You can consider adding a Type Adapter for this.
Run Code Online (Sandbox Code Playgroud)

android kotlin kapt android-room kotlin-symbol-processing

5
推荐指数
1
解决办法
3977
查看次数

KSP中“符号”是什么意思

目前我正在研究KSP(Kotlin Symbol Processing),我很好奇KSP中的“Symbol”是什么意思。

在与 KAPT 进行比较时,它说“为了运行未经修改的 Java 注释处理器,KAPT 将 Kotlin 代码编译成 Java 存根,保留 Java 注释处理器关心的信息。为了创建这些存根,KAPT 需要解析 Kotlin 程序中的所有符号”。

我不知道“Kotlin程序中的所有符号”到底是什么意思?

annotations kotlin kapt kotlin-symbol-processing

0
推荐指数
1
解决办法
269
查看次数