環境配置
android studio 2.3.3
正式版沒出來,為了大眾需要所以就這個了,
點擊Android studio Settings -> Plugins -
搜索插件 Kotlin
下載并重啟。
切換為kotin項目方法一
環境有了,還要導入依賴才行。
首先新建一個正常的項目,
項目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節點加入
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
切換為kotin項目方法二
直接選擇MainActivity->Code菜單 Conrvet kotlin file 也是可以的,這時候直接跑起來肯定會找不到入口Activity的,
不過之后會提示 一些東西,
比如你的kotin 插件太老了是否更新呀,
是否自動引用kotin模塊呀,
上面的代碼完全自動引用的,所以絕對的正確。
如果轉換完畢后沒彈出一些提示,那么再重啟Android Studio就可以了。
認識anko
大概百度了下這個東西也是很牛逼的,可以讓代碼更見簡潔,特別是在純代碼寫布局
只需要text.setText()就可以了
更多參考
anko
anko demo
使用anko
根項目Build.gradle中repositories 添加倉庫
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"
上面的版本號可以直接類似上面的 加上這個
ext.anko_version = '0.10.0-beta-2'
然后同步一下 輸入 verticalLayout 如果能自動提示說明成功了。
自動推導媲美databind
在app模塊頂部加入
apply plugin: 'kotlin-android-extensions'
這時候加入布局文件中有一個R.id.tv_test 是給TextView定義的
這時候輸入tv_test就能自動導入了一個包
import kotlinx.android.synthetic.main.activity_main.*
接著輸入setT 發現已經提示了setText ,如果沒有應用kotlin-android-extensions是出不來的,輸入tv_test只會導入一個id,然并卵
那么現在簡潔多了
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開發
apply plugin: 'kotlin-android-extensions'//自動類型推導
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 更簡單的變成
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
排錯
Failed to resolve: com.google.android:android:2.3.1
解決方法 升級最新版anko ,為10.0.2
hs_err_pid21720.log 錯誤中包含aapt錯誤,發生在gradle 3.0
解決辦法
android.enableAapt2jni=false
unknown option '--no-crunch'.
upgrade targetSdkVersion compileSdkVersion 26