У меня есть проект Kotlin среднего размера, в котором используются расширения anko и kotlin для Android, в частности синтетические свойства из идентификаторов ресурсов. Все они перестали работать с моим обновлением до 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 там больше не работает.
this
попробуйте использоватьgetApplicationContext()
. - person Anchal Singh   schedule 20.05.2017