Saya mencoba untuk mencoba Kotlin dan ekstensi Kotlin Android di Android Studio. Saya telah mencoba ini di Android Studio v 1.5.1 di Ubuntu 14.04, dan di Android Studio v 1.5.1 di OS X El Capitan dengan hasil yang sama.
Inilah yang saya lakukan:
- Saya menginstal plugin Kotlin 1.0.0-beta-35950-IJ141-11
- Buat proyek Android kosong baru
- Konversikan file MainActivity ke Kotlin (melalui help-> findaction-> convert file to kotlin)
- Konfigurasi proyek untuk Kotlin
Saya kemudian masuk ke file content_main.xml yang dihasilkan dan menambahkan id (halo) untuk "Hello World!" TextView.
<?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>
Kemudian dalam MainActivity yang dikonversi saya menambahkan baris untuk mengatur TextView. (ditampilkan di bawah). Android Studio kemudian meminta saya (melalui alt-enter) untuk memasukkan baris ini (juga ditampilkan di bawah)
import kotlinx.android.synthetic.main.content_main.*
Jadi pada titik ini semuanya tampak baik-baik saja
tapi kemudian ketika saya mencoba mengkompilasi ini saya dapatkan
Unresolved reference: kotlinx
Unresolved reference: kotlinx
Unresolved reference: hello
Perhatikan bahwa saya tidak memasang plugin ekstensi Android Kotlin. Pada beberapa hari yang lalu, ini sekarang seharusnya disertakan dalam steker utama dan ditandai sebagai usang. (Faktanya jika Anda mencoba menginstalnya ketika Anda memiliki plugin terbaru, tidak ada yang baru yang diinstal)
Adakah yang melihat apa yang saya lakukan salah?
Aktifitas utama
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)
}
}
Jawaban:
Tambahkan
kotlin-android-extensions
dependensi buildscript kami:1. Dalam build.gradle tingkat proyek Anda
dan terapkan
kotlin-android-extensions
plugin:2. Dalam build.gradle tingkat modul Anda
Jawaban asli:
Kemungkinan besar itu adalah bug di plugin Kotlin. Saya telah mengajukan masalah pada pelacak mereka.
sumber
apply plugin: 'kotlin-android-extensions'
ke file build.gradle Andacompile "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
Saat Anda menggunakan Android Studio 2.0 dan kotlin 1.0.1-2, Anda akan mendapatkan kesalahan yang sama. Anda tidak dapat mengonfigurasi ekstensi android kotlin di build.gradle proyek Anda, Anda perlu mengonfigurasi dan ekstensi android kotlin di setiap build.gradle Modul seperti ini:
Yang terpenting, bahkan melalui plugin kotlin yang menyertakan ekstensi android kotlin, Anda juga perlu mengonfigurasi kotlin-android-extensions di modul bulid.gradle Anda seperti ini:
Tentu saja, Anda dapat mengonfigurasi jalur kelas plugin kotlin di build.gradle proyek Anda.
sumber
ext.kotlin_version
dan tambahkan yangclasspath...
disebutkan di atas dalam proyek gradle. Dan tambahkan keduanyaapply...
ke app gradle.Saya tidak dapat menemukannya di dokumentasi resmi , tetapi Anda harus menerapkan plugin dengan menambahkan yang berikut ini ke
build.gradle
file Anda :sumber
kotlin-1.0.0-beta
Anda perlu menerapkan plugin, tetapi saya tidak dapat menemukan sumber untuk itu! Terima kasih!apply plugin: 'kotlin-android-extensions'
seharusnya.Blok buildscript yang berisi dependensi kotlin-android-extensions tampaknya harus ada di app-module build.gradle, bukan di level teratas.
sumber
Saya menemukan mengapa saya tidak bekerja. Blok saya salah tempat dan dengan memindahkan
buildscript{}
blok sebelum plugin sebagai berikut, saya membuatnya berfungsi:sumber
apply plugin: 'kotlin-android-extensions'
perlu ditambahkan ... +1tambahkan
apply plugin: 'kotlin-android-extensions'
diapp/buildgradle
.jika sudah menambahkannya, coba hapus dan sinkronkan gradle, setelah sinkronisasi selesai, lalu tambahkan kembali dan Sync Gradle lagi. Ini bekerja untuk saya.
sumber
Menghapus impor berikut memperbaiki masalah saya.
sumber
Masalah bagi saya adalah urutan penerapan plugin.
Anda harus menerapkan plugin kotlin-android sebelum plugin kotlin-android-extensions
sumber
Setelah menerapkan perbaikan yang disebutkan di atas, saya harus memulai ulang Android Studio untuk membuatnya berfungsi.
sumber
Beginilah cara kerjanya untuk saya. Ketika saya pertama kali mengonfigurasi Kotlin di Project, saya memilih versi 1.1.2-3 daripada 1.1.2-4 dan menambahkan baris berikut di file aplikasi build.gradle
setelah itu saya menyinkronkan build dan berfungsi seperti yang diharapkan.
sumber
Saya menemukan bahwa saya memiliki dukungan untuk C ++ dan Kotlin secara bersamaan yang menyebabkan masalah build.
Saat memulai proyek baru, pastikan dukungan C ++ tidak dicentang, dan dukungan Kotlin dicentang. Itu memperbaiki masalah saya.
sumber
Dalam kasus saya, saya telah memasukkan kode yang merujuk pada tampilan di
companion object
. Betapa konyolnya ..sumber
Silakan coba tambahkan ke blok ketergantungan berikutnya:
sumber