原創(chuàng): Android 谷歌開發(fā)者
今年五月份的 Google I/O 上,我們正式向全球宣布 Kotlin-first 的這一重要理念,Kotlin 將成為 Android 開發(fā)者的首選語言,十月份舉辦的 Android Dev Summit 2019 大會上鹅士,我們發(fā)布了使用 Kotlin API 開發(fā)的 Jetpack Compose 開發(fā)者預(yù)覽版。
我們于近期開始連載了關(guān)于 Kotlin 遷移指南的系列文章,幫助開發(fā)者們順利遷移并開始使用 Kotlin 構(gòu)建 Android 應(yīng)用诵原。本篇是本系列的下篇,我們將為您解答一些使用 Kotlin 構(gòu)建應(yīng)用時的常見問題挽放。您可以點擊下面鏈接回顧本系列的上篇和中篇:
在 Android 開發(fā)中使用 Kotlin 語言的常見問題解答
Android 為何將 Kotlin 語言列為一級支持語言绍赛?
Kotlin 是一種與 Android 兼容的語言,它不僅語法簡潔辑畦、更具表達(dá)性吗蚌,還具備類型安全和空值安全的特性。它與 Java 語言可以無縫互通纯出,熱愛 Java 語言的開發(fā)者可以在繼續(xù)使用 Java 語言的同時蚯妇,逐步加入 Kotlin 代碼并充分利用 Kotlin 庫,輕松完成轉(zhuǎn)換潦刃。此外侮措,許多 Android 開發(fā)者已經(jīng)發(fā)現(xiàn) Kotlin 不僅可以提高開發(fā)速度,還能為編程帶來更多樂趣乖杠,因此分扎,我們希望為這些 Kotlin 用戶提供更好的支持。您可以參閱 Kotlin 官方網(wǎng)站胧洒,詳細(xì)了解 Kotlin 和 Android畏吓。
- 詳細(xì)了解 Kotlin 和 Android
https://developer.android.google.cn/kotlin/
我已經(jīng)在使用 Kotlin 語言墨状,有哪些變化值得關(guān)注?
短期內(nèi)您將注意到的最大變化是: Android Studio 3.0 及更高版本中包含了經(jīng)過全面測試的 Kotlin 支持工具菲饼。我們相信肾砂,這一變化將為您帶來更輕松、更穩(wěn)定的開發(fā)體驗宏悦。
如何在 Android Studio 中使用 Kotlin镐确?
Android Studio 3.0 及更高版本全面支持 Kotlin。以前饼煞,您需要添加 Kotlin 插件才能使用 Kotlin源葫;而現(xiàn)在,所有新發(fā)布的 Android Studio 版本中都內(nèi)置了這些工具砖瞧。因此息堂,您無需執(zhí)行任何額外步驟,就可以直接使用 Kotlin 文件創(chuàng)建新項目块促,將 Java 語言代碼轉(zhuǎn)換成 Kotlin 代碼荣堰,調(diào)試 Kotlin 代碼以及執(zhí)行其他操作。詳情請參閱 "Kotlin 使用入門"竭翠。
如何在 Android Studio 中調(diào)試 Kotlin 代碼振坚?
Kotlin 代碼的調(diào)試方法與 Java 代碼相同。您不需要執(zhí)行任何其他操作逃片。
IDE 還為 Kotlin 提供其他哪些類型的支持 (例如 Lint屡拨、自動填充、重構(gòu)等)褥实?
從 Android Studio 3.0 開始,我們的 IDE 已為 Kotlin 提供全面的工具支持裂允。但是损离,目前還存在一些已知問題和限制,我們正在努力解決绝编。
- 關(guān)于在 Android Studio 中使用 Kotlin 的已知問題
https://developer.android.google.cn/studio/preview/kotlin-issues.html
Kotlin 前景如何僻澎?
JetBrains 開發(fā)的 Kotlin 語言有著深思熟慮的設(shè)計理念,這是我們采納該語言的原因之一十饥。Google 正在與 JetBrains 開展合作窟勃,確保開發(fā)者在整個開發(fā)過程中 (從語言到框架再到工具) 都能獲得出色的體驗。此外逗堵,我們非常期待通過雙方的努力秉氧,為 Kotlin 語言創(chuàng)建一個非營利基金會以便進(jìn)行后續(xù)的開發(fā)。
Kotlin 是開源語言嗎蜒秤?
Kotlin 的首選許可是 Apache Software License 2.0 版 ("Apache 2.0")汁咏,Kotlin 軟件的大部分內(nèi)容都是根據(jù) Apache 2.0 授權(quán)用戶使用亚斋。盡管該項目將盡可能遵循此首選許可,但也可能存在根據(jù)具體情況進(jìn)行處理的例外情況攘滩。例如帅刊,Kotlin 使用的部分第三方依賴項可能使用不同的開放源代碼許可,但這些許可與 Apache 2 許可并不沖突漂问。
如何在 Java 和 Kotlin 語言之間做出選擇赖瞒?
您無需二選一!您可以根據(jù)需要同時使用兩種語言蚤假。如果您需要了解 Kotlin 是否適合自己冒黑,可以在 Android 開發(fā)中試用 Kotlin 語言,也可以參閱這些 Kotlin 資源勤哗,詳細(xì)了解該語言抡爹。
- 在 Android 開發(fā)中開始使用 Kotlin
https://developer.android.google.cn/kotlin/get-started.html
我可以在 Kotlin 中調(diào)用 Android 或其他 Java 語言庫的 API 嗎?
可以芒划。Kotlin 與 Java 語言具有互操作性冬竟。此設(shè)計讓 Kotlin 代碼可以透明地調(diào)用 Java 語言方法;對于 Kotlin 獨有的功能民逼,可采用注釋輕松向 Java 代碼公開泵殴。對于未使用任何 Kotlin 特有語義的 Kotlin 文件,Java 代碼可以直接引用拼苍,無需添加任何注釋笑诅。兩相結(jié)合,您就可以同時使用 Java 代碼和 Kotlin 代碼疮鲫。要了解詳情吆你,請參閱 Kotlin 互操作文檔。
- Kotlin 互操作文檔
https://developer.android.google.cn/kotlin/interop
你們有 Android API 的 Kotlin 參考文檔嗎俊犯?
有妇多!我們正努力使所有 Android API 文檔都包含慣用 Kotlin 參考。它們尚未準(zhǔn)備就緒燕侠,但您可以在 Android 參考概覽中找到指向可用 Kotlin 參考的鏈接者祖。如果您要尋找核心 Kotlin 語言參考,請查看 Kotlin 標(biāo)準(zhǔn)庫參考绢彤。
- Kotlin 標(biāo)準(zhǔn)庫
https://kotlinlang.org/api/latest/jvm/stdlib/index.html#kotlin-standard-library
我可以在同一個項目中同時使用 Java 文件和 Kotlin 文件嗎七问?
可以。您可以根據(jù)自己的喜好或多或少采用 Kotlin 語言進(jìn)行開發(fā)茫舶,然后利用 Kotlin 與 Java 的互操作性將 Kotlin 代碼與 Java 代碼結(jié)合在一起械巡。
我可以在 Kotlin 代碼中使用 C++ 代碼嗎?
可以,Kotlin 完全支持 JNI坟比。您只需使用 external 修飾符標(biāo)記 JNI 方法即可芦鳍。
如何將 Kotlin 代碼添加到我的新項目中?
當(dāng)您在 Android Studio 中創(chuàng)建新項目時葛账,只需選中 Include Kotlin support 復(fù)選框即可柠衅。有關(guān)詳情,請參閱 Kotlin 使用入門籍琳。
如何將 Kotlin 代碼添加到我的現(xiàn)有項目中菲宴?
在 Project 窗口中選擇相應(yīng)模塊,然后依次選擇 File > New趋急,選擇任意 Android 模板喝峦,然后選擇 Kotlin 作為 Source language。有關(guān)詳情呜达,請參閱 Kotlin 使用入門谣蠢。
如何將 Java 語言代碼轉(zhuǎn)換成 Kotlin 代碼?
打開 Java 文件查近,然后依次選擇 Code > Convert Java File to Kotlin File眉踱。您也可以新建一個 Kotlin 文件 (File > New > Kotlin File/Class),然后將 Java 代碼粘貼到此文件中霜威。界面上出現(xiàn)提示時谈喳,點擊 Yes,即可將 Java 代碼轉(zhuǎn)換成 Kotlin 代碼戈泼。有關(guān)詳情婿禽,請參閱 Kotlin 使用入門。
你們會提供有關(guān) Kotlin 的配套文檔大猛、示例扭倾、codelab 和模板嗎?
為了向 Java 和 Kotlin 語言用戶盡可能提供最實用的幫助胎署,我們正在努力完善我們的文檔和教程資料吆录。與此同時,開發(fā)者可以借助 Kotlin 與 Java 語言之間出色的互操作性琼牧,并利用相關(guān)功能在 Android Studio 中將 Java 語言代碼自動轉(zhuǎn)換成 Kotlin 代碼。
Kotlin 在 Android 開發(fā)中能實現(xiàn)協(xié)程嗎哀卫?能實現(xiàn)異步/等候嗎巨坊?
Kotlin 協(xié)程目前應(yīng)該可以實現(xiàn),但這些特性還處于實驗設(shè)計階段此改。因此趾撵,Kotlin 不能保證它們未來的可用狀態(tài),Android 自然也無法做出承諾。
Kotlin 對 APK 大小/方法數(shù)有什么影響占调?
Kotlin 運行時會導(dǎo)致您的調(diào)試 APK 增加大約 7,000 個方法和約 1MB 的大小暂题。如果您使用 Kotlin 替換項目中的另一個庫 (例如 Guava 或 RxJava),凈影響可能會降低究珊。如果您像優(yōu)化其他應(yīng)用代碼和庫一樣薪者,使用 ProGuard 對 APK 進(jìn)行發(fā)布前優(yōu)化,APK 的大小也會減小剿涮。
使用 Kotlin 會影響性能嗎言津?
使用 Kotlin 不會對性能產(chǎn)生直接影響,但就像使用 Java 語言一樣取试,您應(yīng)該精心考慮如何使用這種語言悬槽。例如,在新的集合實例間重復(fù)復(fù)制會影響 GC 性能瞬浓,調(diào)用允許非空類型的方法會導(dǎo)致調(diào)用空值檢查方法 (當(dāng)然初婆,您可以在編譯器中使用 -Xno-param-assertions 停用運行時空值檢查)。
Kotlin 支持哪些 Android 版本猿棉?
所有版本都支持磅叛!Kotlin 與 JDK 6 兼容,因此使用 Kotlin 語言開發(fā)的應(yīng)用可以在較早版本的 Android 上安全運行铺根。