我有一个中等规模的Kotlin项目,使用anko和kotlin android扩展,特别是来自资源ID的合成属性。但是,升级到Android Studio 3.0 Canary 1后,它们全部停止工作。虽然它们在AS 2.3.2上似乎也已经停止工作。
这是相关的顶层构建脚本:
buildscript {
ext.kotlin_version = '1.1.2'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-alpha1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
...
在我的应用程序模块的构建脚本中,相关部分如下:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
repositories {
mavenCentral()
jcenter()
}
android {
compileSdkVersion 25
buildToolsVersion '25.0.2'
dataBinding {
enabled = true
}
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile 'org.jetbrains.anko:anko-sdk21:0.9.1'
compile 'org.jetbrains.anko:anko-support-v4:0.9.1'
compile 'org.jetbrains.anko:anko-appcompat-v7:0.9.1'
kapt "com.android.databinding:compiler:2.5.0-alpha-preview-02"
}
kapt {
generateStubs = true
}
我的命令行构建成功了;事实上,在IDE中的构建也成功了。但是现在Kotlin给我所有合成属性的使用都标为红色。
一个可能的线索是Kotlin似乎没有将我的Activity(一个AppCompatActivity)识别为Context的子类:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
MultiDex.install(this)
“this”被错误地划了下划线,提示它期望一个Context!但实际传入的是MainActivity;我的MainActivity定义如下:
class MainActivity : AppCompatActivity() {
我的Kotlin IDE插件版本是1.1.2-4。我不知道如何将其恢复为旧版本。
我尝试重新安装Android Studio 2.3.2,但是在那里也无法使用任何Kotlin插件。
getApplicationContext()
而不是this
。 - Anchal Singh