Kotlin Multiplatform Mobile(KMM)是一個能讓你在iOS和Android應用程式中共用業務邏輯程式碼的SDK。KMM今天釋出Alpha版,你可以馬上使用其共享移動應用程式中的業務邏輯。它包含適用於Android Studio的新KMM外掛,可以在同一IDE中編寫,執行,測試和除錯共享程式碼。加入像VMWare,Autodesk和Yandex這樣的優秀團隊,他們使用Kotlin在其移動應用程式中共享程式碼。在移動平臺之間重用程式碼從未如此簡單!
Kotlin Multiplatform Mobile是什麼?
Kotlin Multiplatform Mobile (KMM)是JetBrains提供的用於跨平臺移動開發的SDK。它用到了Kotlin的多平臺特性 ,以及各種工具和功能,旨在讓構建移動跨平臺應用程式的端到端體驗儘可能迷人和高效。
Android和iOS版本的應用程式通常有很多共同點,但也存在很大的區別,尤其是在UI方面,從滾動行為的細微差別到完全不同的導航邏輯。同時應用程式的業務邏輯(包括資料管理,分析和身份驗證等功能)通常是相同的。這就是為什麼跨平臺應用程式的某些部分能共享,同時其他部分需要完全分開的原因。
使用KMM,靈活性及Native程式設計的優勢都能兼得。將某個單獨的程式碼庫用於iOS和Android應用程式的業務邏輯,並在需要時,編寫平臺特定程式碼去實現本機UI或API。
KMM能無縫接入到你的移動專案。用Kotlin編寫的共享程式碼通過Kotlin/JVM編譯為JVM位元組碼,並通過Kotlin/Native編譯為本機二進位制檔案,因此你可以像使用其他標準移動庫一樣使用KMM的業務邏輯模組。
在移動平臺之間共享Kotlin程式碼已經為許多公司節省了大量時間和人力。以下是一些令人激動的案例:
- Quizlet將他們的業務邏輯從JavaScript共享方案遷移到KMM,極大提高了Android和iOS應用程式的效能。
- –Fastwork為其應用程式的domain和資料層引入了KMM,以在移動平臺之間共享業務邏輯和API服務,從而極大地提高了團隊的生產力。 –Yandex.Disk通過嘗試整合一個小功能開始的,當實驗成功後,他們通過KMM實現了整個資料同步邏輯。
這些團隊和很多其他團隊取得的非凡成就是我們靈感的重要部分,我們希望他們的故事能鼓勵你開始使用KMM在移動平臺之間共享程式碼。
享受使用KMM建立移動應用程式
KMM對移動開發領域來說還很陌生,但我們相信它是真正的遊戲規則改變者。因此,我們在Kotlin內部分配了一個單獨的團隊來推動KMM前進,併為使用Kotlin建立跨平臺移動應用程式提供最佳的開發人員體驗。
作為邁出的第一步,今天我們很高興向你展示** 適用於Android Studio的KMM外掛的第一個預覽版和新的 KMM開發人員門戶**。
讓我們的KMM之旅啟程吧!
在熟悉的環境中工作
使用新的KMM外掛,你可以在Android Studio中編寫,執行,測試和除錯共享程式碼,而無需切換到其他IDE。通過Preferences | Plugins,在Marketplace搜尋Kotlin Multiplatform Mobile,點選Install按鈕進行安裝。
只需單擊幾下即可配置新的應用程式
通過** New Kotlin Multiplatform Mobile Project 嚮導,只需點選幾下,便可建立有共享程式碼庫的可執行的移動應用程式專案。要觀察專案在兩個平臺上如何工作,只需選擇所需的執行配置,然後點選Run** 按鈕。
生成的專案將包含如何連線到特定於平臺的API和基本測試範圍的示例。你可以使用該向導來探索KMM的基本功能,也可以將其用作新的KMM生產應用程式的腳手架工具。
跟隨教程安裝外掛並通過嚮導建立你的第一個多平臺應用程式。
輕鬆接入KMM到現有專案
你還可以直接在現有專案中開始KMM之旅:就像其他任何常規依賴項一樣,共享的Kotlin程式碼可以輕鬆地整合到現有的程式碼中。 新的Kotlin多平臺移動模組嚮導將幫助你向專案中新增新的KMM模組,因此可以使用已編寫的Kotlin程式碼,並對其進行重構使其與iOS相容。
參考將KMM整合到現有專案指南,瞭解如何設計多平臺專案的架構以及如何遷移。
一個IDE,兩個平臺
不再需要切換IDE到Xcode來檢查程式碼是否在兩個平臺上都能正常工作。通過新外掛,iOS真機和模擬器都已直接整合到Android Studio中。併為你提供以下功能:
- 在模擬器或具有預定義執行配置的裝置上執行並除錯IOS應用程式。
- 只需單擊測試類或方法上的gutter圖示,即可在iOS模擬器上執行並除錯通用及IOS指定測試。
對於應用程式和測試,你都可以在iOS上設定斷點並除錯程式碼。
無縫整合IOS生態
如上所述,KMM已和你的移動端專案無縫整合。對於Android,可以在專案的任何位置使用Kotlin。同時得益於Kotlin/Native與Objective-C/Swift的互操作性,KMM提供了與iOS開發過程的緊密整合。 與CocoaPods依賴項管理器整合,以及使用特定於平臺的API的能力與期望/實際模式。
享受在Kotlin/Native中混合編寫Swift與Kotlin程式碼
Kotlin/Native提供了與Objective-C/Swift的雙向互操作性。 Kotlin模組可以在Swift/Objective-C中完整使用。你可以使用Kotlin程式碼中的Objective-C框架和庫,也可以使用Swift庫(如果它們的API已通過@ objc
匯出到Objective-C)。
更多資訊請查閱Kotlin/Native與Swift/Objective-C的互操作性.
輕鬆管理IOS依賴
Kotlin/Native整合了CocoaPods依賴管理器。你可以新增對CocoaPods儲存庫中或本地儲存的Pod庫的依賴,也可以將面向native目標的多平臺專案用作CocoaPods依賴(Kotlin Pod)。直接在Android Studio中管理Pod依賴項,並享受完全的編碼輔助,包括程式碼高亮和程式碼補全。
這是標準的KMM庫配置示例:
通過將庫的名稱和路徑新增到Podfile
,將庫作為Kotlin Pod連線到你的iOS專案:
更多資訊請查閱CocoaPods整合.
瞭解如何在新的開發人員門戶上建立優質的多平臺移動應用
新的KMM開發人員門戶,旨在讓KMM從入門到生產的開發之旅更加舒適和高效。
使用KMM時,文件將是你最值得信任的同伴。各種各樣的專業內容,從入門到高階開發專題。包含常見案例的有用資源,例如網路組建和資料儲存層,乃至圍繞KMM的開發流程。
想了解在專案中應用KMM的優勢?可以通過案例研討的其他團隊產品所使用KMM的一手經驗中學習。
社群的力量
我們感謝以下公司和獨立開發者,他們投入的時間、知識以及經驗對於該版本至關重要:Kevin Galligan, Alec Strong, Arkadii Ivanov, Ben Asher, John O’Reilly, Louis CAD, Kris Wong, Aleksey Mikhailov和許多其他優秀的工程師。感謝你在YouTrack上報告問題,參與產品調研及回訪,分享有關你使用KMM的經歷以及建立的讓人驚訝的多平臺庫!
我們還要感謝幫助新的開發者入口網站建立內容的團隊:Touchlab,IceRock和Kodein Koders 。你們的工作將幫助成千上萬的開發者能更深入地瞭解Kotlin Multiplatform Mobile併發揮它的全部潛力。
大夥們,搖滾起來!
現在嘗試
伴隨所有這些非常酷的特性,我們很高興宣佈** KMM已進入Alpha**。這意味著Kotlin團隊將全力改進這項技術並促進其發展。這也表明該產品將快速迭代。我們將傾聽你的反饋,並儘快提供修復和改進。請通過tracker反饋你發現的任何問題,來幫助我們提高KMM的穩定性。
使用Alpha意味著你已經準備就緒,可以開始使用KMM在移動平臺之間共享業務邏輯程式碼。可以建立一個新專案,也可以輕鬆地將KMM模組整合到現有專案中。在這兩種情況下,都能以最低的成本完成工作,並且你始終可以回到純native開發魂晶。社群發展迅速,你可以參與社群來帶動整個生態的發展。
因此,現在是開始使用KMM的最好時機!
更多KMM的深入體驗,及交流你即將探索的特性,請加入Slack的多平臺愛好者社群(在這裡獲取邀請),並在Stack Overflow上訂閱“kotlin-multiplatform”標籤。
我們已竭盡全力,仍不能保證遷移萬無一失。我們將通過feature flags及提供新版本的遷移指南來儘量避免相容性問題。
分享反饋
該版本只是旅程的開始,但這個過程中我們需要幫助。希望能收到你的所有反饋。通過分享你使用Kotlin Multiplatform Mobile的經歷來鼓舞他人,並請分享你對改善KMM的任何想法。
Let’s Kotlin!