最新 Android 熱門開源項目公布

LeanCloud 工程師收集了 2019 年 5 月 GitHub 上比較流行的 9 個和 Android 開發相關的開源項目,分享給各位開發者,內容包括對話框、日曆、矢量繪圖組件,內存泄露檢測庫,Kotlin 的 linter、mock 庫、依賴注入框架等。

LeakCanary

square 開源的內存泄露檢測庫。

使用起來極為便捷,只需在 build.gradle 中引入依賴:

dependencies {

LeakCanary 會自動檢測 debug build 中的內存泄露,並顯示提示。無需修改代碼,也不會影響正式發布版本。

GitHub 倉庫:square/leakcanary

Material Dialogs

美觀、可擴展的 Material Design 風格對話框。

Material Dialogs 採用模塊化架構,核心模塊(core)包含了核心功能和基本功能,文本輸入框、文件選擇器、色彩選擇器、時間日期選擇器、彈出表單等功能作為擴展模塊提供,可單獨引入。支持 AndroidX 生命周期組件。

GitHub 倉庫:afollestad/material-dialogs

CalendarView

基於 RecyclerView 的日曆庫。

image

這個庫借鑒了 iOS 的 JTAppleCalendar,提供了比較齊全的日曆視圖所需特性,支持定製樣式。

GitHub 倉庫:kizitonwose/CalendarView

Kyrie

VectorDrawable 和 AnimatedVectorDrawable 的超集。

image

VectorDrawable 提供了像素密度無關性——在任意設備上隨意縮放而不損失畫質。AnimatedVectorDrawable 在其基礎上添加了動畫特性。然而,它們有三大缺陷:

  • 無法暫停和繼續。
  • 無法在運行時動態創建。
  • 相比 web 上的 SVG,它們僅僅支持少量特性。

Kyrie 提供了 KyrieDrawable 類,支持 VectorDrawable 和 AnimatedVectorDrawable 的所有特性,同時改進了上述缺陷。

GitHub 倉庫:alexjlockwood/kyrie

Assent

面向 Kotlin 和 AndroidX,讓 Android 的運行時許可權控制易於開發。

fun saveImage(bitmap: Bitmap) = runWithPermissions(WRITE_EXTERNAL_STORAGE) {

上面的例子展示了 Assent 提供的簡潔緊湊的基於回調的 API。(當然,你還是需要在 AndroidManifest.xml 里聲明許可權的,否則 Android 總會拒絕相應許可權。)

GitHub 倉庫:afollestad/assent

ktlint

開箱即用的 Kotlin linter:

  • 零配置。採用官方風格(kotlinlang.org 和 Android Kotlin 風格指南)。
  • 內置格式化功能,類似 Go 語言的 gofmt。
  • 單一可執行 jar 文件,內置所有依賴(當然,你還是需要自備 jvm 的)。
  • 可搭配 maven、gradle、GNU Emacs、Vim 使用。

注意「零配置」的意思是並不提供多種風格選項讓你選擇,但是你仍然可以通過自行編寫規則來自定義 linter 的行為。另外,ktlint 也會遵循 .editorconfig 中的設置。

ktlint 也可搭配 IntelliJ IDEA 使用。不過通常沒有這個必要,可以直接使用 IDEA 內置的代碼格式化功能(效果和 ktlint 一致)。暫時也沒有 vscode 插件,不過可以通過 sonarlint 曲線使用。

官網:ktlint.github.io

mockk

Kotlin 的 mock 測試庫,不僅支持常規的單元測試,還支持在真機或模擬器上運行的 instrumented 測試。

mockk 提供了全面、強大的特性,可以 mock 類、對象、私有函數、協程等多種結構(Android P 之前的版本 instrumented 測試有少數特性不支持)。

官網:mockk.io

KOIN

面向 Kotlin 開發者的輕量依賴注入框架。

KOIN 提供了輕量的函數式依賴注入 DSL,無需代碼生成和反射。

class Controller(val service : BusinessService)
class BusinessService()val myModule = module {
single { Controller(get()) }
single { BusinessService() }
}class MyApplication : Application() { override fun onCreate(){
super.onCreate()
startKoin {
androidContext(this@MyApplication)
modules(myModule)
}
}
}

官網:insert-koin.io/

Firefox Fenix

Firefox Fenix 是 Firefox 的下一代 Android 瀏覽器,未來將取代 Firefox for Android (其實 Firefox for Android 的開發早已放緩,因為 Mozilla 將更多的精力投入到 Fenix 的開發中)。上個月,Mozilla 在 Google Player 上發布了公測版(僅向報名測試的人員開放下載)。

Firefox Fenix 基於 GeckoView 和 Android components 開發。GeckoView 是 Mozilla 開源的 Android 庫,封裝了自家的 Gecko 瀏覽器引擎。

Android 上的 Firefox Reality(面向 AR 設備的瀏覽器)和 Firefox Focus (主打極簡 UI 和隱私保護的瀏覽器)用的也是 GecokView。Android components 則是 Mozilla 使用 Kotlin 開發的一套 Android 組件庫,這套組件庫主要面向瀏覽器和類瀏覽器應用。順便提一下,由於 Android components 使用 Kotlin 開發,Firefox Fenix 也順理成章地使用 Kotlin 開發。

GitHub 倉庫:mozilla-mobile/fenix

結語

上月初召開的 Google I/O 2019,宣布 Kotlin 為 Android 開發的首選語言,未來新的 Jetpack API 和特性將首先提供 Kotlin 支持,並建議新項目使用 Kotlin 編寫。很巧,上面介紹的 9 個開源項目,均使用 Kotlin 編寫。當然,其中不少是專門面向 Kotlin 的輔助開發工具,使用 Kotlin 編寫理所當然。但是幾款 Android 組件庫均使用 Kotlin 編寫(本文選取項目時僅考慮 GitHub 上的熱度(躥升速度),不考慮編寫語言為 Java 還是 Kotlin),Firefox 下一代瀏覽器基於 Kotlin 開發,LeakCanary 上個月發布了 v2.0-alpha-2,2.0 版的一大改動就是使用 Kotlin 重寫,這些事實多多少少能從側面反映,Android 生態的重心正向 Kotlin 偏移。

分享了開源項目,這邊也給大家分享一些有關於安卓學習的資料

其中包含錄製好的視頻供大家下載,有一套比較齊全的大廠面試集錦;

有需要的朋友可以點擊這個小卡片獲取資料免費領取方式!

Android開發必備學習資源免費領取(架構視頻+面試專題文檔+學習筆記)?

shimo.im圖標

推薦閱讀:

別人靠它月入過萬,你還是觀光客?分享做自媒體的感受全是乾貨!
在 macOS 上運行 Flutter 桌面端項目
小米8手機使用問題總結

TAG:Android | Android開發 | 開源項目 |