我有一个使用 anko 和 kotlin android 扩展的中型 Kotlin 项目,特别是来自资源 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”带有错误下划线,表示它需要一个上下文!并得到了一个 MainActivity;我的 MainActivity 定义为:
class MainActivity : AppCompatActivity() {
我的 Kotlin IDE 插件是 1.1.2-4。我不知道如何将其还原为旧版本。
我尝试重新安装 Android Studio 2.3.2,但 Kotlin 插件也不再在那里工作。