我应该为Android Studio 3.0 Canary 1使用哪些kotlin版本?
我有一个中型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)
“这个”是错误的下划线,说它期望一个上下文! 并得到了一个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'
你可以修改build.gradle(Module:app)文件
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" compile "org.jetbrains.anko:anko-commons:$anko_version" compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') { transitive = true; } compile "com.squareup.retrofit2:retrofit:$retrofit_version" compile "com.squareup.retrofit2:converter-gson:$retrofit_version" compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' compile 'com.android.support:design:25.3.1'
}
至:
dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" implementation "org.jetbrains.anko:anko-commons:$anko_version" implementation('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') { transitive = true; } implementation "com.squareup.retrofit2:retrofit:$retrofit_version" implementation "com.squareup.retrofit2:converter-gson:$retrofit_version" implementation 'com.android.support:appcompat-v7:25.3.1' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' implementation 'com.android.support:design:25.3.1'
}
那么红色的标识符将会消失。
- 在kotlin的片段
- 在Android studio-Kotlin eroor中创建一个新项目
- 将Kotlin添加到现有Java项目会打破Android Studio gradle消息错误
- Android Studio 3.0数据绑定参考代码不由android studio生成
- Gradle和Realm库的编译问题
- 警告:警告:注释处理器“android.arch.lifecycle.LifecycleProcessor”支持的源版本“RELEASE_7”小于“源”1.8
- Kotlin Android应用程序编译失败,消息:未解决的参考:kotlinx
- 启动项目:你应该从Android还是iOS开始开发?
- kotlin-kapt插件不使用“kapt.generateStubs”