我有一个中型 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”有错误的下划线,表明它需要一个上下文!并获得了 MainActivity;我的 MainActivity 定义为:
class MainActivity : AppCompatActivity() {
我的 Kotlin IDE 插件是 1.1.2-4。我不知道如何将它恢复到旧版本。
我尝试重新安装 Android Studio 2.3.2,但 Kotlin 插件也不再在那里工作。
最佳答案
您至少需要使用 Kotlin 1.1.2-4
。
因此更改您的 ext.kotlin_version
:
ext.kotlin_version = '1.1.2-4'
关于android-studio - 我应该为 Android Studio 3.0 Canary 1 使用什么 kotlin 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44082642/