Сбой компиляции приложения Kotlin для Android с сообщением: неразрешенная ссылка: kotlinx

Я тестирую базовое приложение для Android на основе Kotlin, руководствуясь инструкциями из книги «Kotlin для разработчиков Android». Я использую Android Studio 2.1.1.

У меня есть следующая настройка build.grade (Project: WeatherApp):

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

У меня есть следующая настройка build.grade (Module: App):

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

buildscript {
    ext.support_version = '23.1.1'
    ext.kotlin_version = '1.0.2'
    ext.anko_version = '0.8.2'
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "com.qtimemedia.weatherapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'org.jetbrains.anko:anko-sdk23:0.8.3'
    compile 'org.jetbrains.anko:anko-appcompat-v7:0.8.3'
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
repositories {
    mavenCentral()
}

У меня есть следующий код MainActivity.kt:

package com.qtimemedia.weatherapp

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        message.text = "Hello Kotlin!"
    }
}

Вот мой код activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.qtimemedia.weatherapp.MainActivity">

    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
</RelativeLayout>

Вот мой код strings.xml:

<resources>
    <string name="app_name">WeatherApp</string>
    <string name="hello_world">"Hello World!"</string>
</resources>

Я пытаюсь запустить MainActivity с помощью доступного эмулятора Nexus 6 API 23. У меня включена опция «Инструменты >> Android >> Включить интеграцию с ADB» (я пробовал и с выключенной функцией). Эмулятор работает, но мое приложение не загружается из-за сбоя сборки. При запуске эмулятора я вижу следующие сообщения в окне «4: Выполнить»:

C:\Users\Owner\AppData\Local\Android\sdk\tools\emulator.exe -netdelay none -netspeed full -avd Nexus_6_API_23
Warning: requested ram_size 1536M too big, reduced to 1024M
emulator: WARNING: Crash service did not start
emulator: WARNING: VM heap size set below hardware specified minimum of 384MB
emulator: WARNING: Setting VM heap size to 384MB
Hax is enabled
Hax ram_size 0x40000000
HAX is working and emulator runs in fast virt mode.
console on port 5554, ADB on port 5555

В окне журнала событий я вижу следующее:

11:26:05 PM Gradle sync started
11:26:15 PM Gradle sync completed
11:26:16 PM Executing tasks: [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies]
11:26:34 PM Gradle build finished in 18s 266ms
11:35:55 PM Executing tasks: [:app:clean, :app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:assembleDebug]
11:39:04 PM Gradle build finished with 3 error(s) in 3m 8s 551ms

В окне консоли Gradle я вижу следующее:

e: C:\Users\Owner\AndroidStudioProjects\WeatherApp\app\src\main\java\com\qtimemedia\weatherapp\MainActivity.kt: (5, 8): Unresolved reference: kotlinx
e: C:\Users\Owner\AndroidStudioProjects\WeatherApp\app\src\main\java\com\qtimemedia\weatherapp\MainActivity.kt: (12, 9): Unresolved reference: message

 FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 3 mins 5.237 secs

В разделе «Сообщения» я вижу следующее:

C:\Users\Owner\AndroidStudioProjects\WeatherApp\app\src\main\java\com\qtimemedia\weatherapp\MainActivity.kt
Error:(5, 8) Unresolved reference: kotlinx
Error:(12, 9) Unresolved reference: message
Error:Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details
Information:BUILD FAILED
Information:Total time: 3 mins 5.237 secs
Information:3 errors
Information:0 warnings
Information:See complete output in console

Как я могу заставить приложение правильно скомпилироваться?


person MLev    schedule 21.05.2016    source источник
comment
Вы видите сообщение об ошибке в журналах logcat?   -  person miensol    schedule 21.05.2016
comment
Привет, miensol, я добавил несколько отладочных сообщений в отредактированное описание выше. Основными проблемами являются: (1) сбой выполнения для задачи ': app: compileDebugKotlin', (2) неразрешенная ссылка: kotlinx e: и (3) неразрешенная ссылка: сообщение.   -  person MLev    schedule 22.05.2016
comment
Журнал вставки ясно показывает, что есть ошибка компиляции, которую нужно устранить в первую очередь. Попробуйте это и сообщите нам, помогло ли это.   -  person miensol    schedule 22.05.2016
comment
Можете ли вы вставить файл верхнего уровня build.gradle? Тот, где у вас buildscript {} блок.   -  person Marcin Koziński    schedule 22.05.2016
comment
@miensol, я обновил файлы build.gradle на основе предоставленной вами ссылки и обновил все выходные данные повторного запуска приложения. К сожалению, по-прежнему возникает ошибка компиляции. Спасибо за вашу помощь с этим.   -  person MLev    schedule 24.05.2016


Ответы (2)


См. Следующий ответ: https://stackoverflow.com/a/36526153/256513

Вам необходимо переместить раздел сценариев сборки kotlin из вашего проекта build.gradle в файл модуля build.gradle.

person hleb    schedule 03.06.2016
comment
Это сработало отлично, спасибо! Я также отредактирую версии файлов сборки, указанные выше, для использования в будущем. - person MLev; 06.06.2016

импортировать файл макета с расширением R. нравится

import kotlindemo.app.com.myapplication.R.layout.activity_main;
import kotlinx.android.synthetic.main.activity_main.*
person Community    schedule 30.06.2017