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版发布,您可以在此处看到。