使用 Kotlin 構(gòu)建的常見問題解答 | Kotlin 遷移指南 (下篇)

原創(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畏吓。

我已經(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 提供全面的工具支持裂允。但是损离,目前還存在一些已知問題和限制,我們正在努力解決绝编。

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ì)了解該語言抡爹。

我可以在 Kotlin 中調(diào)用 Android 或其他 Java 語言庫的 API 嗎?

可以芒划。Kotlin 與 Java 語言具有互操作性冬竟。此設(shè)計讓 Kotlin 代碼可以透明地調(diào)用 Java 語言方法;對于 Kotlin 獨有的功能民逼,可采用注釋輕松向 Java 代碼公開泵殴。對于未使用任何 Kotlin 特有語義的 Kotlin 文件,Java 代碼可以直接引用拼苍,無需添加任何注釋笑诅。兩相結(jié)合,您就可以同時使用 Java 代碼和 Kotlin 代碼疮鲫。要了解詳情吆你,請參閱 Kotlin 互操作文檔。

你們有 Android API 的 Kotlin 參考文檔嗎俊犯?

有妇多!我們正努力使所有 Android API 文檔都包含慣用 Kotlin 參考。它們尚未準(zhǔn)備就緒燕侠,但您可以在 Android 參考概覽中找到指向可用 Kotlin 參考的鏈接者祖。如果您要尋找核心 Kotlin 語言參考,請查看 Kotlin 標(biāo)準(zhǔn)庫參考绢彤。

我可以在同一個項目中同時使用 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 上安全運行铺根。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宪躯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子位迂,更是在濱河造成了極大的恐慌访雪,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掂林,死亡現(xiàn)場離奇詭異臣缀,居然都是意外死亡,警方通過查閱死者的電腦和手機泻帮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門精置,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锣杂,你說我怎么就攤上這事脂倦。” “怎么了元莫?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵赖阻,是天一觀的道長。 經(jīng)常有香客問我踱蠢,道長火欧,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮苇侵,結(jié)果婚禮上赶盔,老公的妹妹穿的比我還像新娘。我一直安慰自己榆浓,他們只是感情好于未,可當(dāng)我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著哀军,像睡著了一般沉眶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上杉适,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天谎倔,我揣著相機與錄音,去河邊找鬼猿推。 笑死片习,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹬叭。 我是一名探鬼主播藕咏,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秽五!你這毒婦竟也來了孽查?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤坦喘,失蹤者是張志新(化名)和其女友劉穎盲再,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓣铣,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡答朋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棠笑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梦碗。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蓖救,靈堂內(nèi)的尸體忽然破棺而出洪规,到底是詐尸還是另有隱情,我是刑警寧澤循捺,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布淹冰,位于F島的核電站,受9級特大地震影響巨柒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一洋满、第九天 我趴在偏房一處隱蔽的房頂上張望晶乔。 院中可真熱鬧,春花似錦牺勾、人聲如沸正罢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翻具。三九已至,卻和暖如春回还,著一層夾襖步出監(jiān)牢的瞬間裆泳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工柠硕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留工禾,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓蝗柔,卻偏偏與公主長得像闻葵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子癣丧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,916評論 2 344

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