Çözümlenmemiş referans: kotlinx


108

Android Studio'da Kotlin ve Kotlin Android uzantılarını denemeye çalışıyorum. Bunu hem Ubuntu 14.04'te Android Studio v 1.5.1'de hem de OS X El Capitan'da Android Studio v 1.5.1'de aynı sonuçla denedim.

İşte yaptığım şey:

  1. Kotlin eklentisini 1.0.0-beta-35950-IJ141-11 kurdum
  2. Yeni bir boş Android projesi oluşturun
  3. MainActivity dosyasını Kotlin'e dönüştürün (yardım-> findaction-> dosyayı kotlin'e dönüştür aracılığıyla)
  4. Kotlin için projeyi yapılandırın

Daha sonra oluşturulan content_main.xml dosyasına gidiyorum ve "Merhaba Dünya!" İçin bir kimlik (merhaba) ekliyorum. Metin görünümü.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.gmail.npnster.mykotlinfirstproject.MainActivity"
    tools:showIn="@layout/activity_main">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/hello"
        />
</RelativeLayout>  

Sonra dönüştürülmüş MainActivity'de TextView'ı ayarlamak için bir satır ekliyorum. (aşağıda gösterilen). Android Studio daha sonra benden (alt-enter aracılığıyla) bu satırı eklememi ister (ayrıca aşağıda gösterilmiştir)

import kotlinx.android.synthetic.main.content_main.*

Yani bu noktada her şey görünüyor cezası

ama sonra bunu derlemeye çalıştığımda,

Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello

Yaptığıma dikkat et değil Kotlin Android uzantıları eklentiyi yükleyin. Birkaç gün önce, bunun artık ana eklentiye dahil edilmesi gerekiyor ve artık kullanılmıyor olarak işaretleniyor. (Aslında en son eklentiye sahip olduğunuzda yüklemeye çalışırsanız, yeni hiçbir şey yüklenmez)

Neyi yanlış yaptığımı gören var mı?

Ana aktivite

import android.os.Bundle
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.Toolbar
import android.view.View
import android.view.Menu
import android.view.MenuItem
import kotlinx.android.synthetic.main.content_main.*


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val toolbar = findViewById(R.id.toolbar) as Toolbar
        setSupportActionBar(toolbar)
        print("setting text view value to hey")
        hello.text = "hey"

        val fab = findViewById(R.id.fab) as FloatingActionButton
        fab.setOnClickListener { view -> Snackbar.make(view, "Replace this with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show() }
    }

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        // Inflate the menu; this adds items to the action bar if it is present.
        menuInflater.inflate(R.menu.menu_main, menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        val id = item.itemId

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true
        }

        return super.onOptionsItemSelected(item)
    }
}

Benim çözümüm tamamen farklıydı, Kotlin dil desteğini resmi olarak gradle.properties dosyasından kaldırdım ve tekrar çalıştı. Aslında, dosya bozulmuş ve bazı rastgele dizeler içeriyor, rastgele dizelere geri dönerek onu düzelttim.
Lalit Fauzdar

Yanıtlar:


189

kotlin-android-extensionsBuildscript'in bağımlılıklarını ekleyin :

1. Proje düzeyindeki build.gradle dosyanızda

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}

ve kotlin-android-extensionseklentiyi uygulayın :

2. Modül düzeyinde build.gradle'ınızda

apply plugin: 'kotlin-android-extensions'

Orijinal cevap:

Büyük olasılıkla Kotlin eklentisindeki bir hata. Takip cihazlarına bir sorun bildirdim.


1
Ben de öyle yaptım ama 1.0.0-beta-3595 ile ilgili sorunu hala alıyorum :(
E-Kami

Benim için de çalışmıyor (1.0.0-beta-4589) - henüz herhangi bir çözüm var mı? Hata izleyicideki bilete bir yorum ekledim.
Steffen Funke

11
1.0.0-beta-4589'da da bu sorunu yaşadım. Ayrıca apply plugin: 'kotlin-android-extensions'build.gradle dosyanıza eklemelisiniz
Kio Krofovitch

1
$ Kotlin_version değişkeni ile daha iyi ifade edilir:compile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
KarolDepka


38

Android Studio 2.0 ve kotlin 1.0.1-2'yi kullandığınızda, aynı yanlışı bulursunuz. Kotlin android uzantılarını projenizin build.gradle'ında yapılandıramazsınız, her Module'ün build.gradle'sında android uzantılarını şu şekilde yapılandırmanız ve kotlin etmeniz gerekir:

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

buildscript {
    ext.kotlin_version = '1.0.1-2'
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0 rc2"

    defaultConfig {
        applicationId "com.dazd.kotlindemo"
        minSdkVersion 14
        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.3.0'
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}

En önemlisi, kotlin eklentisi dahil kotlin android eklentisi olsa bile Modülünüzün bulid.gradle'ındaki kotlin-android uzantılarını şu şekilde yapılandırmanız gerekir:

...
apply plugin: 'kotlin-android-extensions'
...
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"

Tabii ki, kotlin eklentisinin sınıf yolunu projenizin build.gradle'ında yapılandırabilirsiniz.


1
Benim durumumda (Android Studio 2.1.1, kotlin 1.0.2) "Kotlin'i Projede Yapılandır" eylemi Modül'ün build.gradle yerine proje build.gradle içindeki kotlin'i yapılandırdı ve bu yardımcı oldu.
Ivan Kušt

Kontrol edin ext.kotlin_versionve classpath...proje notunda yukarıda belirtilenleri ekleyin . Ve ikisini apply...uygulama notuna ekleyin .
Alston

33

Resmi belgelerde bulamıyorum , ancak eklentiyi build.gradledosyanıza aşağıdakileri ekleyerek uygulamalısınız :

apply plugin: 'kotlin-android-extensions'

Evet, kotlin-1.0.0-betaeklentiyi uygulamanız gerektiğinden beri düşünüyorum , ancak bunun için bir kaynak bulamıyorum! Teşekkürler!
Orgmir

2
Not: Resmi belgeler güncellendi: kotlinlang.org/docs/tutorials/…
Maxime

1
Kabul edilen cevabın üzerine bir düzenleme isteyin ve bu bilgiyi ekleyin! :)
Ramon Moraes

Resmi belgeler şimdi apply plugin: 'kotlin-android-extensions'olması gereken yerde boş bir kod bloğu gösteriyor .
Dielson Satışları

10

Kotlin-android-uzantı bağımlılığını içeren buildscript bloğunun en üst seviye değil, app-module build.gradle içinde olması gerekiyor.


1
Bunun gibi bir şey olacağını düşündüm; Karmamın çoğu, benzer bir sorunla kademeli bir soruyu yanıtlamaktan kaynaklanıyor.
Ionoclast Brigham

8

Benimkinin neden işe yaramadığını buldum. Bloklarım yanlış yerleştirildi ve buildscript{}bloğu eklentilerden önce aşağıdaki gibi hareket ettirerek çalıştırdım:

buildscript {
    ext.kotlin_version = '1.0.0-beta-3595'
    ext.anko_version = '0.8.1'

    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
    }
}

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

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.kotlin"
        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.1.1'
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile "org.jetbrains.anko:anko-sdk15:$anko_version"
    compile "org.jetbrains.anko:anko-support-v4:$anko_version"
}

Bu benim için çalıştı. Bunun neden düzeltildiğini biliyor musunuz?
Joe

Tam olarak nereye apply plugin: 'kotlin-android-extensions'eklenmesi gerektiğini gösteren tek cevap ... +1
Zelphir Kaltstahl

Ama bu neden düzeltildi?
Mo Hajr

5

eklemek apply plugin: 'kotlin-android-extensions'içinde app/buildgradle.

Zaten eklediyseniz, senkronizasyon tamamlandığında onu kaldırmayı ve derecelendirmeyi senkronize etmeyi deneyin, ardından tekrar ekleyin ve Gradle'ı tekrar senkronize edin. Bu benim için çalışıyor.



4

Benim için sorun, eklentileri uyguladığım sıraydı.

Kotlin-android eklentisini kotlin-android-extensions eklentisinden önce uygulamalısınız

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

1

Yukarıda belirtilen düzeltmeleri uyguladıktan sonra, çalışması için Android Studio'yu yeniden başlatmam gerekti.


0

Benim için böyle çalıştı. Kotlin'i Project'te ilk yapılandırdığımda 1.1.2-4 yerine 1.1.2-3 sürümünü seçtim ve build.gradle uygulama dosyasına aşağıdaki satırı ekledim

apply plugin: 'kotlin-android-extensions'

Bundan sonra yapıyı senkronize ettim ve beklendiği gibi çalıştı.


0

Aynı zamanda C ++ ve Kotlin için destek aldığımı ve bu da derleme sorunlarına neden olduğunu öğrendim.

Yeni bir projeye başlarken, C ++ desteğinin işaretli olmadığından ve Kotlin desteğinin kontrol edildiğinden emin olun. Bu benim için sorunu çözdü.


0

Benim durumumda, görünüme atıfta bulunan kodu bir companion object. Ne kadar aptalca ..


0

Lütfen sonraki aşamada bağımlılık bloğuna eklemeyi deneyin:

dependencies {
...
compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: '1.3.2'
...
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.