使用Kotlin和构建工具2.3.0进行Android注释

时间:2017-05-24 23:31:01

标签: android kotlin android-annotations

要在2.3.0之前使用Android Annotations,一个人会这样做:

dependencies {
    apt "org.androidannotations:androidannotations:$AAVersion"
    compile "org.androidannotations:androidannotations-api:$AAVersion"
}

要使用Kotlin,您可以使用kapt代替aptlink)。

从2.3.0开始,一个人需要使用annotationProcessor而不是apt:

annotationProcessor "org.androidannotations:androidannotations:$AAVersion"
compile "org.androidannotations:androidannotations-api:$AAVersion"

为了将Kotlin与annotationProcessor一起使用,有谁知道需要改变什么?

我目前有一个非常简单的主要活动,我设置为使用@EActivity来获取布局。我在清单.MainActivity_中声明了生成的文件。

在java中,这很好用。在科特林:

@EActivity(R.layout.activity_main)
open class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
   }
}

我收到运行时错误:

  

过程:[...],PID:10018                                                                                            java.lang.RuntimeException:无法实例化活动ComponentInfo {[...]。MainActivity_}:java.lang.ClassNotFoundException:路径上没有找到类“[...]。MainActivity_”:DexPathList [[zip file“ /data/app/[...]-1/base.apk"],nativeLibraryDirectories=[/data/app/[...]-1/lib/x86,/ vendor / lib,/ system / lib]]

****更新****

所以我清理并重建了这个项目。似乎注释没有为MainActivity生成下划线文件。有道理,但我不知道为什么或如何解决它。

1 个答案:

答案 0 :(得分:0)

如果要使用Kotlin代码进行注释处理,则必须使用kapt(和apply plugin: 'kotlin-kapt')代替annotationProcessor(只有在不生成任何代码时才能继续使用annotationProcessor)来自Kotlin的消息来源,例如你的例子中,你用Kotlin编写的MainActivity)