環(huán)境配置
android studio 2.3.3
正式版沒出來,為了大眾需要所以就這個(gè)了,
點(diǎn)擊Android studio Settings -> Plugins -
搜索插件 Kotlin
下載并重啟难礼。
切換為kotin項(xiàng)目方法一
環(huán)境有了,還要導(dǎo)入依賴才行。
首先新建一個(gè)正常的項(xiàng)目,
項(xiàng)目build
buildscript {
ext.kotlin_version = '1.1.3-2'
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
app模塊
頂部插入
apply plugin: 'kotlin-android'
在dependencies節(jié)點(diǎn)加入
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
切換為kotin項(xiàng)目方法二
直接選擇MainActivity->Code菜單 Conrvet kotlin file 也是可以的诺舔,這時(shí)候直接跑起來肯定會(huì)找不到入口Activity的扩淀,
不過之后會(huì)提示 一些東西唯沮,
比如你的kotin 插件太老了是否更新呀,
是否自動(dòng)引用kotin模塊呀掖疮,
上面的代碼完全自動(dòng)引用的,所以絕對(duì)的正確盲链。
如果轉(zhuǎn)換完畢后沒彈出一些提示则奥,那么再重啟Android Studio就可以了妈拌。
認(rèn)識(shí)anko
大概百度了下這個(gè)東西也是很牛逼的拥坛,可以讓代碼更見簡(jiǎn)潔,特別是在純代碼寫布局
只需要text.setText()就可以了
更多參考
anko
anko demo
使用anko
根項(xiàng)目Build.gradle中repositories 添加倉(cāng)庫(kù)
maven { url "http://dl.bintray.com/kotlin/kotlin-dev" }
app模塊
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "org.jetbrains.anko:anko-sdk25:$anko_version"
compile "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
compile "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
上面的版本號(hào)可以直接類似上面的 加上這個(gè)
ext.anko_version = '0.10.0-beta-2'
然后同步一下 輸入 verticalLayout 如果能自動(dòng)提示說明成功了尘分。
自動(dòng)推導(dǎo)媲美databind
在app模塊頂部加入
apply plugin: 'kotlin-android-extensions'
這時(shí)候加入布局文件中有一個(gè)R.id.tv_test 是給TextView定義的
這時(shí)候輸入tv_test就能自動(dòng)導(dǎo)入了一個(gè)包
import kotlinx.android.synthetic.main.activity_main.*
接著輸入setT 發(fā)現(xiàn)已經(jīng)提示了setText 猜惋,如果沒有應(yīng)用kotlin-android-extensions是出不來的,輸入tv_test只會(huì)導(dǎo)入一個(gè)id,然并卵
那么現(xiàn)在簡(jiǎn)潔多了
MainActivity.kt完整代碼
package qssq666.cn.kotlin.banner
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
//import activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// var tv = findViewById(R.id.tv_test) as TextView
// find<TextView>(R.id.tv_test).setText("")
var text1=findViewById(R.id.tv_test)
// tv.setText("hello");
/* verticalLayout {
}*/
// textview.setText()
tv_test.setText("hello")
}
}
App模塊Build代碼
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'//kt開發(fā)
apply plugin: 'kotlin-android-extensions'//自動(dòng)類型推導(dǎo)
android {
compileSdkVersion 26
buildToolsVersion "26.0.1"
defaultConfig {
applicationId "qssq666.cn.kotlin.banner"
minSdkVersion 14
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile "org.jetbrains.anko:anko-sdk25:$anko_version" //anko 更簡(jiǎn)單的變成
compile "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
compile "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
}
repositories {
mavenCentral()
}
根目錄Build.dradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.1.3-2'
ext.anko_version = '0.10.0-beta-2'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
jcenter()
maven { url "http://dl.bintray.com/kotlin/kotlin-dev" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
源碼下載地址
https://github.com/qssq/kotlinbanner
排錯(cuò)
Failed to resolve: com.google.android:android:2.3.1
解決方法 升級(jí)最新版anko ,為10.0.2
hs_err_pid21720.log 錯(cuò)誤中包含aapt錯(cuò)誤培愁,發(fā)生在gradle 3.0
解決辦法
android.enableAapt2jni=false
unknown option '--no-crunch'.
upgrade targetSdkVersion compileSdkVersion 26