快速開發(fā)kotlin android應(yīng)用

環(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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末著摔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子定续,更是在濱河造成了極大的恐慌梨撞,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件香罐,死亡現(xiàn)場(chǎng)離奇詭異卧波,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)庇茫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門港粱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旦签,你說我怎么就攤上這事查坪。” “怎么了宁炫?”我有些...
    開封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵偿曙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我羔巢,道長(zhǎng)望忆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任竿秆,我火速辦了婚禮启摄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘幽钢。我一直安慰自己歉备,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開白布匪燕。 她就那樣靜靜地躺著蕾羊,像睡著了一般喧笔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上龟再,一...
    開封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天溃斋,我揣著相機(jī)與錄音,去河邊找鬼吸申。 笑死梗劫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的截碴。 我是一名探鬼主播梳侨,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼日丹!你這毒婦竟也來了走哺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤哲虾,失蹤者是張志新(化名)和其女友劉穎丙躏,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體束凑,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晒旅,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汪诉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片废恋。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖扒寄,靈堂內(nèi)的尸體忽然破棺而出鱼鼓,到底是詐尸還是另有隱情,我是刑警寧澤该编,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布迄本,位于F島的核電站,受9級(jí)特大地震影響课竣,放射性物質(zhì)發(fā)生泄漏嘉赎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一稠氮、第九天 我趴在偏房一處隱蔽的房頂上張望曹阔。 院中可真熱鬧半开,春花似錦隔披、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抓韩。三九已至,卻和暖如春鬓长,著一層夾襖步出監(jiān)牢的瞬間谒拴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工涉波, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留英上,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓啤覆,卻偏偏與公主長(zhǎng)得像苍日,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窗声,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容