2016-05-21 2 views
3

Ich teste eine einfache Kotlin-basierte Android-App, die auf den Anweisungen im Buch "Kotlin for Android Developers" basiert. Ich benutze Android Studio 2.1.1.Kompilation der Kotlin Android App mit Meldung fehlgeschlagen: nicht aufgelöste Referenz: kotlinx

Ich habe folgendes build.grade (Projekt: WeatherApp) Einrichtung:

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

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

Ich habe folgendes build.grade (Modul: App) Einrichtung:

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() 
} 

Ich habe folgendes MainActivity.kt Code:

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!" 
    } 
} 

Hier ist mein activity_main.xml Code:

<?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> 

Hier ist mein strings.xml Code:

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

Ich versuche, meine MainActivity mit dem verfügbaren Nexus 6 API 23 Emulator laufen zu lassen. Ich habe die Option "Extras >> Android >> ADB-Integration aktivieren" als aktiviert (ich habe das auch damit ausprobiert). Der Emulator scheint zu funktionieren, aber meine App scheint aufgrund eines fehlgeschlagenen Builds nicht geladen zu werden. Wenn der Emulator sehe ich die folgenden Meldungen im "4: Run" Fenstern:

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 

ich folgend im Ereignisprotokoll-Fenster sehen:

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 

ich folgend in der Gradle Console Fenster:

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 

im Abschnitt Nachrichten sehe ich folgendes:

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 

Wie kann ich die App richtig kompilieren?

+0

Wird in Logcat-Protokollen eine Fehlermeldung angezeigt? – miensol

+0

Hi miensol, Ich habe eine Reihe von Debugging-Nachrichten in der oben beschriebenen Beschreibung hinzugefügt. Die Hauptprobleme scheinen zu sein: (1) Ausführung fehlgeschlagen für Task ': app: compileDebugKotlin', (2) nicht aufgelöster Verweis: Kotlinx e: und (3) nicht aufgelöster Verweis: Nachricht. – MLev

+0

Das Pastenprotokoll zeigt deutlich, dass ein Kompilierungsfehler vorliegt, der als erstes behoben werden muss. Versuchen Sie [dies] (http://stackoverflow.com/questions/34169562/unresolved-reference-kotlinx) und lassen Sie uns wissen, ob es geholfen hat. – miensol

Antwort

6

Siehe die folgende Antwort: https://stackoverflow.com/a/36526153/256513

Sie müssen den Kotlin buildscript Abschnitt von Ihrem Projektbuild.gradle zu Ihrem Modulbuild.gradle Datei zu bewegen.

+0

Das hat perfekt funktioniert, danke! Ich werde auch die Versionen der Build-Dateien oben für zukünftige Referenz bearbeiten. – MLev

0

Importieren Sie die Layoutdatei von einer R-Erweiterung. wie folgt

import kotlindemo.app.com.myapplication.R.layout.activity_main; 
import kotlinx.android.synthetic.main.activity_main.* 
Verwandte Themen