2017-05-24 89 views
0

之前使用Android註解到2.3.0一個人這樣做:Android的註解與科特林和構建工具2.3.0

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

使用科特林你會用kapt代替aptlink)。

由於2.3.0一個人需要使用annotationProcessor代替apt:

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

有誰知道需要什麼才能使用科特林與annotationProcessor改變?

我目前有一個非常簡單的主要活動,我設置了使用@EActivity來獲取佈局。我在清單.MainActivity_中聲明瞭生成的文件。

在java中,這工作正常。在科特林:

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

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

我得到一個運行時錯誤:

Process: [...], PID: 10018 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{[...].MainActivity_}: java.lang.ClassNotFoundException: Didn't find class "[...].MainActivity_" on path: DexPathList[[zip file "/data/app/[...]-1/base.apk"],nativeLibraryDirectories=[/data/app/[...]-1/lib/x86, /vendor/lib, /system/lib]]

**** ****更新

所以我清理和重建項目。看起來註釋並沒有爲MainActivity生成下劃線文件。有道理,但我不知道爲什麼或如何解決它。

回答

0

您必須使用kapt(和apply plugin: 'kotlin-kapt'),而不是annotationProcessor如果你想使用科特林代碼註釋處理(你可以繼續使用annotationProcessor只有當你不你的例子生成科特林來源的任何代碼一樣,在那裏你有寫在Kotlin MainActivity)

+0

你能指出我(或提供您的答案)究竟如何設置我的gradle文件來做到這一點?我試圖'應用插件:'kotlin-kapt',它說插件找不到?謝謝! – MayNotBe

+0

你確定在gradle buildscript中有kotlin gradle插件嗎?你應該在你的'buildscript.dependendencies'塊中有'classpath'org.jetbrains.kotlin:kotlin-gradle-plugin:$ KOTLIN_VERSION「''。 有關kapt的更多信息 - https://kotlinlang.org/docs/reference/kapt.html 此外,請確保您已將'kotlin-android'和'kotlin-kapt'插件應用於您的應用程序模塊('app '模塊默認) – gildor

+0

我很感謝幫助!我已經走得更遠了,我可以用插件構建所有東西,但我需要告訴AA清單所在的位置。我正在使用''這是我用'apt'(我剛剛改成了'kapt')時使用的'kapt {參數androidManifestFile variant.outputs [0] .processResources.manifestFile } }。但這不起作用。錯誤:(48,0)沒有這樣的屬性:processResources類:com.android.build.gradle.internal.variant.ApkVariantOutputData Open File' – MayNotBe