我有一个中型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"
...
在我的app模块的构建脚本中,相关部分是:
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插件都没有在那里工作。
答案 0 :(得分:0)
您至少需要使用Kotlin 1.1.2-4
。
因此,请更改ext.kotlin_version
:
ext.kotlin_version = '1.1.2-4'