2017-05-20 6 views
3

私は、ankoとkotlin android拡張機能、特にリソースIDの合成プロパティを使用する中規模のKotlinプロジェクトを持っています。彼らはAndroid Studio 3.0 Canary 1へのアップグレードですべての作業をやめました。彼らはAS 2.3.2での作業もやめてしまったようですが。ここでAndroid Studio 3.0 Canary 1にはどのようなkotlinバージョンを使用しますか?

は、関連するトップレベルのビルドスクリプトです:

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は、コンテキストのサブクラスであるとして、私の活動(AppCompatActivity)を認識していないようだということです。

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState) 
    MultiDex.install(this) 

「これは」それが期待することを言って、エラーの下線付きでありますコンテキスト! MainActivityを取得しました。私のMainActivityは次のように定義されています:

class MainActivity : AppCompatActivity() { 

My Kotlin IDEプラグインは1.1.2-4です。私はそれを古いバージョンに戻す方法を知らない。

私はAndroid Studio 2.3.2を再インストールしようとしましたが、Kotlinプラグインのいずれもこれ以上動作していません。

+0

'this'を使用する代わりに、' getApplicationContext() 'を使ってみてください。 –

+0

MainActivityのクラス宣言にも下線が付いていますか?その場合は、最初にそのエラーを修正し、プロパティの下線が消えるかどうかを確認してください。 MainActivityのクラス宣言に誤りがある場合は、推測するように、プラグインはコンテキストから継承していることを認識しないことがあります。 – roobyroo

答えて

0

少なくともコトリン1.1.2-4を使用する必要があります。 は、このようにあなたのext.kotlin_versionを変更:

ext.kotlin_version = '1.1.2-4' 
0

あなたはbuild.gradle(モジュール:アプリ)を変更することができますに

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:[email protected]') 
{ 
    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:[email protected]') 
{ 
    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' 

}

赤色の識別子が消えます。

関連する問題