Kotlin on Android 開發(fā)環(huán)境介紹

Kotlin 被 Google 采納為 Android 開發(fā)一級編程語言堂污,到現(xiàn)在也一年多了棉圈,我們團隊從去年 10 月份開始部分項目嘗試用 Kotlin 開發(fā)镊辕,到現(xiàn)在決定推廣到全部項目老厌,因為一旦用上 Kotlin省咨,你就不愿意回去了。

如果你所在的項目也想嘗試耸黑,我建議你先對 Kotlin on Android 開發(fā)環(huán)境—其實就是必備的庫做一個充分的了解桃煎,畢竟這是開發(fā)的土壤,只有土壤肥沃了崎坊,才能長出優(yōu)質(zhì)的果實备禀。

接下來分別從基礎(chǔ)庫和拓展庫兩方面做一下介紹。

一奈揍、基礎(chǔ)庫

以下都是創(chuàng)建項目時 IDE 自動會添加的曲尸,做為 Kotlin 開發(fā)必須的基礎(chǔ)庫。

1男翰、Kotlin 編譯腳本

作用是提供編譯 Kotlin 源文件(.kt 編譯成 .class)的腳本另患,由 JetBrains 開發(fā)。
配置方法:

classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

2蛾绎、Kotlin 語言

命名空間 kotlin.@昆箕,由 JetBrains 開發(fā),是 Kotlin 語言核心租冠。參考資料 https://kotlinlang.org/docs/reference/using-gradle.html#targeting-android

配置方法:
首先鹏倘,上面說的編譯腳本要起作用,要添加 kotlin-android 插件顽爹。

apply plugin: 'kotlin-android'

其次纤泵,依賴 Kotlin 標(biāo)準(zhǔn)庫,這是語言的核心镜粤。

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"

3捏题、Kotlin Android Extension

命名空間 kotlinx.android.@,由 JetBrains 開發(fā)肉渴,提供 View Binding公荧、Parcelable 封裝,提升開發(fā)體驗同规,參考資料 https://kotlinlang.org/docs/tutorials/android-plugin.html循狰。
配置方法:

apply plugin: 'kotlin-android-extensions'

二、拓展庫

上面說了基礎(chǔ)庫券勺,有了基礎(chǔ)庫你就可以開始在項目中使用 Kotlin 了绪钥,解決了能不能用的問題。下面要介紹的拓展庫朱灿,是解決你用得爽不爽的問題昧识。

1钠四、Anko

命名空間 org.jetbrains.anko.@盗扒,由 JetBrains 開發(fā)的專門針對 Android 的集成庫跪楞,目的在于提升開發(fā)體驗,涉及 Intent侣灶、彈框甸祭、Toast、日志褥影、資源池户、數(shù)據(jù)庫、代碼布局凡怎、協(xié)程校焦,參考資料 https://github.com/Kotlin/anko/wiki
配置方法:
a. 添加依賴(包含所有模塊):

implementation "org.jetbrains.anko:anko:$anko_version”

b. 按需依賴:

// Anko Commons
implementation "org.jetbrains.anko:anko-commons:$anko_version"
// Anko Layouts
implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // sdk15, sdk19, sdk21, sdk23 are also available
implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"
// Coroutine listeners for Anko Layouts
implementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version"
implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version"
// Anko SQLite
implementation "org.jetbrains.anko:anko-sqlite:$anko_version"

2、Android KTX

命名空間 androidx.@统倒,Google 官方開發(fā)的 Kotlin Android 拓展庫寨典,目的在于提供 Android API 的拓展,涉及 Android 開發(fā)的方方面面房匆。屬于 JetPack 的一部分耸成。參考資料 https://developer.android.com/kotlin/ktx

配置方法,按模塊添加依賴:

implementation 'androidx.core:core-ktx:1.0.0-alpha1'
implementation 'androidx.fragment:fragment-ktx:1.0.0-alpha1'
……

模塊列表參考上述地址浴鸿。

3井氢、Anko 和 Android KTX 的區(qū)別

根據(jù) Android KTX 官方介紹:https://developer.android.com/kotlin/ktx

The purpose of Android KTX is to make Android development with Kotlin more concise, pleasant, and idiomatic by leveraging Kotlin language features such as extension functions/properties, lambdas, named parameters, and parameter default values. Android KTX does not add any new features to the existing Android APIs.

根據(jù) Anko 官方介紹:https://github.com/Kotlin/anko

Anko is a Kotlin library which makes Android application development faster and easier. It makes your code clean and easy to read, and lets you forget about rough edges of the Android SDK for Java.

我們得出二者最根本的區(qū)別是:Android KTX 只是對 Android API 的拓展,不提供功能岳链;而 Anko 提供了更多的 Android 沒有的API花竞。

4、Anko 和 Android KTX 使用建議

雖然 Android KTX 是趨勢宠页,Google 以后會大推左胞。
但是,到目前為止 Android KTX 都沒有發(fā)布第一個穩(wěn)定版本举户;同時烤宙,如果是歷史項目,成本會比較大俭嘁,需要把之前的 android.support.@ 全部換成 androidx.@躺枕,否則出現(xiàn)此類錯誤:

error: failed linking references.
error: resource android:attr/fontStyle not found.
Message{kind=ERROR, text=error: resource android:attr/fontStyle not found., sources=[/Users/huangshibiao/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.4.0.aar/a7545949dee561c01597e2709420c243/res/values/values.xml:214:5-69], original message=, tool name=Optional.of(AAPT)} 
error: resource android:attr/fontStyle not found.
Message{kind=ERROR, text=error: resource android:attr/fontStyle not found., sources=[/Users/huangshibiao/.gradle/caches/transforms-1/files-1.1/appcompat-v7-25.4.0.aar/a7545949dee561c01597e2709420c243/res/values/values.xml:214:5-69], original message=, tool name=Optional.of(AAPT)}

另一方面,Anko 相對比較成熟供填。

所以拐云,截止當(dāng)前,最好的方式是優(yōu)先使用 Anko近她,等 Android KTX 成熟叉瘩,然后再各取所長

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末粘捎,一起剝皮案震驚了整個濱河市薇缅,隨后出現(xiàn)的幾起案子危彩,更是在濱河造成了極大的恐慌,老刑警劉巖泳桦,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汤徽,死亡現(xiàn)場離奇詭異,居然都是意外死亡灸撰,警方通過查閱死者的電腦和手機谒府,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浮毯,“玉大人完疫,你說我怎么就攤上這事≌叮” “怎么了趋惨?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長惦蚊。 經(jīng)常有香客問我器虾,道長,這世上最難降的妖魔是什么蹦锋? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任兆沙,我火速辦了婚禮,結(jié)果婚禮上莉掂,老公的妹妹穿的比我還像新娘葛圃。我一直安慰自己,他們只是感情好憎妙,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布库正。 她就那樣靜靜地躺著,像睡著了一般厘唾。 火紅的嫁衣襯著肌膚如雪褥符。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天抚垃,我揣著相機與錄音喷楣,去河邊找鬼。 笑死鹤树,一個胖子當(dāng)著我的面吹牛铣焊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播罕伯,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼曲伊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了追他?” 一聲冷哼從身側(cè)響起坟募,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤绽榛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后婿屹,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡推溃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年昂利,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铁坎。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡蜂奸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硬萍,到底是詐尸還是另有隱情扩所,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布朴乖,位于F島的核電站祖屏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏买羞。R本人自食惡果不足惜袁勺,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望畜普。 院中可真熱鬧期丰,春花似錦、人聲如沸吃挑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舶衬。三九已至埠通,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間逛犹,已是汗流浹背植阴。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留圾浅,地道東北人掠手。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像狸捕,于是被迫代替她去往敵國和親喷鸽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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