Splitties是小型Kotlin多平台庫(以Android為第一個目標)的集合。
這些庫旨在減少您必須編寫的代碼數量,釋放代碼讀取和寫作時間,因此您可以更多地關注為用戶構建的內容(即使您是唯一的一個),或者有更多時間fun 。
該項目被稱為“拆分”,因為它是在小模塊中分配為獨立庫的小模塊,因此您只需將所需的項目添加到項目/模塊中,有助於減小用戶設備將需要下載並保持有限存儲空間的最終二進制尺寸(順便說一句,一切都有限制)。
某些Android定位模塊的內容與Anko提供的內容相似。在此處查看與Anko的分裂的簡短比較。
每個模塊的設計都具有較小的佔地面積,並且盡可能高效。
分裂就是要簡化您的代碼。這裡有幾個例子:
科特林:
startActivity( Intent ( this , DemoActivity :: class .java))Kotlin進行分裂活動:
start< DemoActivity >()科特林:
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Kotlin與Snackbar分裂:
root.snack( R .string.refresh_successful) Racing Coroutines :( raceOf(…)來自Coroutines模塊)
suspend fun awaitUserChoice ( ui : SomeUi , choices : List < Stuff >): Stuff ? = raceOf({
ui.awaitSomeUserAction(choices)
}, {
ui.awaitDismissal()
null
}, {
ui.showSomethingInRealtimeUntilCancelled() // Returns Nothing, will run, but never "win".
})科特林:
Snackbar .make(root, getString( R .string.deleted_x_items, deletedCount), Snackbar . LENGTH_LONG )
.setAction(android. R .string.cancel) {
deleteOperation.requestRollback()
}
.setActionTextColor( ContextCompat .getColor( this , R .color.fancy_color))
.show()Kotlin與Snackbar分裂:
root.longSnack(str( R .string.deleted_x_items, deletedCount)) {
action(android. R .string.cancel, textColor = color( R .color.fancy_color)) {
deleteOperation.requestRollback()
}
}Context與appCtx一起使用。context.getSystemService(NAME_OF_SERVICE) as NameOfManager 。 snack(…)和longSnack(…)一起享用零食。toast(yourText)和Dodge Api 25 BadTokenException來顯示吐司。showAndAwait擴展功能。View s上的擴展功能和屬性。ImageView著色, ActionBar和工具提示的幫助者。contentPadding屬性。View和Context Android dp擴展。使用視圖DSL時特別方便。foreground屬性可選視圖。ViewHolder ItemViewHolder ,可輕鬆使用RecyclerView的基本用法。RecyclerView中使用)。 companion object s轉換為強大的類型AFT意圖規格,並創建PendingIntent ,以清潔簡便的方式。BundleSpec與屬性語法使用Bundle進行Intent款項等。 Lifecycle集成的Coroutines。mainHandler屬性停止為主Looper分配多個Handler程序。mainThreadLazy上SharedPreferences / DataStore和MacOS/ios/watchOS NSUserDefaults的屬性語法。Long , Int , Short , Byte及其未簽名的對應物上的hasFlag , withFlag和minusFlag擴展。forEach for List s沒有Iterator分配。 unexpectedValue(…) , unsupportedAction(…)和類似的功能,這些功能Nothing返回。ViewModel s,使用LiveData並觀察Lifecycle s。 確保您在項目(root) build.gradle文件中定義的存儲庫中具有mavenCentral() (默認為新Android Studio Projects)。
為了使您更容易利用您的Android項目的分割內容,有一些分組的工件,其中包括大多數拆分。
添加更新: Splitties.pack.androidBase或Splitties.pack.androidBaseWithViewsDsl 。
這兩個包裝不包括AppCompat,適用於Wearos應用程序。
包括以下模塊:
Gradle依賴性:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )還有一個帶有視圖DSL的版本。它還包括以下模塊:
Gradle依賴性:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " )添加更新: Splitties.pack.appCompat或Splitties.pack.appCompatWithViewsDsl 。
這兩個包裝包括Android Base Pack和以下模塊:
Gradle依賴性:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )還有一個帶有視圖DSL的版本。它還包括視圖DSL版本的Android Base Pack和以下模塊:
Gradle依賴性:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " )添加更新: Splitties.pack.androidMdc或Splitties.pack.androidMdcWithViewsDsl 。
這兩個包包括Android AppCompat Pack和以下模塊:
Gradle依賴性:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )還有一個帶有視圖DSL的版本。它還包括Android AppCompat Pack的視圖DSL版本和以下模塊:
Gradle依賴性:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )由於您可能會使用多個工件,因此請不要重複自己,我們建議您將版本放在中心位置,因此升級到更新版本的努力很少。
最好的方法是使用更新,它具有Splitties內置依賴性符號,以及許多其他流行和定性的庫,例如Kotlinx,Androidx,Square/CashApp的庫以及Google的庫。
最重要的是,隨著它,運行refreshVersions任務將在幾秒鐘內向您展示可用的更新,以便您的所有依賴關係,直接進入versions.properties 。
僅供參考,當前最新版本的分裂版本是版本3.0.0
com.louiscad.splitties:splitties-activities
com.louiscad.splitties:splitties-alertdialog
com.louiscad.splitties:splitties-alertdialog-appcompat
com.louiscad.splitties:splitties-alertdialog-appcompat-coroutines
com.louiscad.splitties:splitties-appctx
com.louiscad.splitties:splitties-arch-lifecycle
com.louiscad.splitties:splitties-arch-room
com.louiscad.splitties:splitties-bitflags
com.louiscad.splitties:splitties-bundle
com.louiscad.splitties:splitties-checkedlazy
com.louiscad.splitties:splitties-collections
com.louiscad.splitties:splitties-coroutines
com.louiscad.splitties:splitties-dimensions
com.louiscad.splitties:splitties-exceptions
com.louiscad.splitties:splitties-fragments
com.louiscad.splitties:splitties-fragmentargs
com.louiscad.splitties:splitties-intents
com.louiscad.splitties:splitties-lifecycle-coroutines
com.louiscad.splitties:splitties-mainhandler
com.louiscad.splitties:splitties-mainthread
com.louiscad.splitties:splitties-material-colors
com.louiscad.splitties:splitties-material-lists
com.louiscad.splitties:splitties-permissions
com.louiscad.splitties:splitties-preferences
com.louiscad.splitties:splitties-resources
com.louiscad.splitties:splitties-snackbar
com.louiscad.splitties:splitties-stetho-init
com.louiscad.splitties:splitties-systemservices
com.louiscad.splitties:splitties-toast
com.louiscad.splitties:splitties-typesaferecyclerview
com.louiscad.splitties:splitties-views
com.louiscad.splitties:splitties-views-appcompat
com.louiscad.splitties:splitties-views-cardview
com.louiscad.splitties:splitties-views-coroutines
com.louiscad.splitties:splitties-views-coroutines-material
com.louiscad.splitties:splitties-views-dsl
com.louiscad.splitties:splitties-views-dsl-appcompat
com.louiscad.splitties:splitties-views-dsl-constraintlayout
com.louiscad.splitties:splitties-views-dsl-coordinatorlayout
com.louiscad.splitties:splitties-views-dsl-ide-preview
com.louiscad.splitties:splitties-views-dsl-material
com.louiscad.splitties:splitties-views-dsl-recyclerview
com.louiscad.splitties:splitties-views-material
com.louiscad.splitties:splitties-views-recyclerview
com.louiscad.splitties:splitties-views-selectable
com.louiscad.splitties:splitties-views-selectable-appcompat
com.louiscad.splitties:splitties-views-selectable-constraintlayout
假設您需要嘗試一項新功能或尚未發布的修復程序:
您可以通過添加相應的存儲庫來在快照版中獲取它,如下所示,並將庫版本更改為最新的快照, 3.0.0-SNAPSHOT :
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}在Github上宣布發行版,您可以通過單擊“觀看”,然後“僅發布”來訂閱。
但是,如果您使用更新,當您在versions.properties文件中運行refreshVersions任務時,還將學習更新。
如果您希望此庫具有新功能或在現有模塊中的改進,請首先打開問題或投票/評論類似的模塊,因此可以進行討論。
也歡迎文檔貢獻。對於錯別字或其他小改進,請隨時直接提交PR(拉請求)。有關更重要的DOC貢獻,請先打開一個問題,因此可以進行討論。
如果您找到錯誤,請打開有關所有重要細節的問題。如果您知道一個不是API破壞的簡單修復程序,並且沒有需要考慮的副作用,則也可以直接提交PR。
您還可以在#Splitties頻道中對Kotlin的Slack進行討論(您可以在此處收到邀請)。
“拆分”是分割庫的模塊,您可以將其添加為依賴關係。它僅包括所需的及依賴性。這使您只能在應用程序或庫模塊中添加所需內容,因此最終的APK/IPA/應用程序盡可能小,並且不包括應用程序未使用的內容。
假設您使用視圖DSL構建了佩戴操作系統應用程序。佩戴操作系統應用不需要AppCompat。包括浪費帶寬和存儲。視圖DSL Core模塊依賴於Android SDK,但不依賴AppCompat,因此您不會使用視圖DSL使用AppCompat膨脹手腕應用程序。但是,如果您要構建手機,平板電腦或計算機Android應用程序,則有一個視圖DSL AppCompat拆分,並使用一些擴展名供您使用。
特別感謝Jovche Mitrejchevski幫助為該項目做出決定。
多虧了Jetbrains和Anko的貢獻者,這是一個很好的靈感來源,尤其是DSL的觀點,當然也感謝您出色的Kotlin編程語言,使該項目成為可能。
感謝道格·史蒂文森(Doug Stevenson)的文章“ Kotlin&Android:黃銅釘實驗”。可以公平地說,視圖DSL在此實驗中具有根源。
該庫以Apache許可證2.0版發布,您可以在此處看到。