2019 年 5 月 Android 開發熱門開源項目

做者: LeanCloud weakishhtml

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

LeakCanary

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

LeakCanary 截屏

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

dependencies {
  debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-alpha-2'
}
複製代碼

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

GitHub 倉庫:square/leakcanary瀏覽器

Material Dialogs

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

Material Dialogs 效果展現

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

GitHub 倉庫:afollestad/material-dialogs框架

CalendarView

基於 RecyclerView 的日曆庫。jvm

CalendarView 效果展現

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

GitHub 倉庫:kizitonwose/CalendarView

Kyrie

VectorDrawableAnimatedVectorDrawable 的超集。

Kyrie 效果演示

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

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

Kyrie 提供了 KyrieDrawable 類,支持 VectorDrawableAnimatedVectorDrawable 的全部特性,同時改進了上述缺陷。

GitHub 倉庫:alexjlockwood/kyrie

Assent

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

fun saveImage(bitmap: Bitmap) = runWithPermissions(WRITE_EXTERNAL_STORAGE) {
  val stream = FileOutputStream(File(externalStorage, "hello.png"))
  bitmap.compress(PNG, 100, stream)
}
複製代碼

上面的例子展現了 Assent 提供的簡潔緊湊的基於回調的 API。(固然,你仍是須要在 AndroidManifest.xml 裏聲明權限的,不然 Android 總會拒絕相應權限。)

GitHub 倉庫:afollestad/assent

ktlint

開箱即用的 Kotlin linter:

  • 零配置。採用官方風格(kotlinlang.orgAndroid Kotlin 風格指南)。
  • 內置格式化功能,相似 Go 語言的 gofmt
  • 單一可執行 jar 文件,內置全部依賴(固然,你仍是須要自備 jvm 的)。
  • 可搭配 maven、gradle、GNU Emacs、Vim 使用。

ktlint 圖標

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

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

官網:ktlint.github.io

mockk

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

mockk 圖標

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

官網:mockk.io

KOIN

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

KOIN 2.0

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 偏移。

相關文章
相關標籤/搜索