Android 如何使房间图元的自定义注释处理器在房间注释处理器启动之前运行?
我制作了一个小程序,为所有房间实体生成Kotlin类,其中字段表示列名。我这样做是为了使用生成的类静态final字段,而不是@ColumnInfo、@ForeignKey parentColumn、childColumn等中的原始字符串 问题是,当我在@ColumnInfo中使用生成类中的字段时,如下所示Android 如何使房间图元的自定义注释处理器在房间注释处理器启动之前运行?,android,kotlin,android-room,kapt,Android,Kotlin,Android Room,Kapt,我制作了一个小程序,为所有房间实体生成Kotlin类,其中字段表示列名。我这样做是为了使用生成的类静态final字段,而不是@ColumnInfo、@ForeignKey parentColumn、childColumn等中的原始字符串 问题是,当我在@ColumnInfo中使用生成类中的字段时,如下所示 @Entity(tableName = "DogTable") data class Dog( @PrimaryKey @ColumnInfo(name = DogTable
@Entity(tableName = "DogTable")
data class Dog(
@PrimaryKey
@ColumnInfo(name = DogTableFields.ID) //DogTableFields class is generated from my annotation processor
val id: String = ""
)
我得到了一个构建错误
错误:元素值必须是常量表达式
@androidx.room.ColumnInfo(name=null)
我认为Room编译器的注释处理器在我的处理器之前运行,这就是生成的字段为空的原因
我的问题是,如何在房间的处理器运行之前让注释处理器运行?或者有没有其他方法可以让这一切顺利进行
编辑:这是在显示错误的/app/build/tmp/kapt3/stubs/debug下生成的。您可以看到,@ColumnInfo的null
表示name