Splitties adalah kumpulan pustaka multiplatform kecil Kotlin (dengan Android sebagai target pertama).
Perpustakaan ini dimaksudkan untuk mengurangi jumlah kode yang harus Anda tulis, membebaskan waktu membaca kode dan menulis, sehingga Anda dapat lebih fokus pada apa yang ingin Anda bangun untuk pengguna Anda (bahkan jika Anda satu -satunya), atau memiliki lebih banyak waktu untuk bersenang fun .
Proyek ini bernama "splitties" karena dibagi dalam modul kecil, didistribusikan sebagai perpustakaan independen, sehingga Anda hanya dapat menambahkan yang Anda butuhkan ke proyek/modul Anda, membantu mengurangi ukuran biner akhir yang perlu diunduh oleh perangkat pengguna dan disimpan dalam penyimpanan terbatas (BTW, semuanya terbatas).
Beberapa modul penargetan Android memiliki konten yang mirip dengan apa yang ditawarkan Anko. Lihat perbandingan singkat dari splitties dengan Anko di sini.
Setiap modul telah dirancang untuk memiliki jejak kecil dan seefisien mungkin.
Splitties adalah tentang menyederhanakan kode Anda. Berikut beberapa contoh:
Kotlin:
startActivity( Intent ( this , DemoActivity :: class .java))Kotlin dengan kegiatan splitties:
start< DemoActivity >()Kotlin:
Snackbar .make(root, R .string.refresh_successful, Snackbar . LENGTH_SHORT )
.show()Kotlin dengan splitties snackbar:
root.snack( R .string.refresh_successful) Racing Coroutines: ( raceOf(…) berasal dari modul 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".
})Kotlin:
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 dengan splitties snackbar:
root.longSnack(str( R .string.deleted_x_items, deletedCount)) {
action(android. R .string.cancel, textColor = color( R .color.fancy_color)) {
deleteOperation.requestRollback()
}
}Context aplikasi Anda dengan appCtx .context.getSystemService(NAME_OF_SERVICE) as NameOfManager . snack(…) dan longSnack(…) .toast(yourText) , dan Dodge API 25 BadTokenException .showAndAwait untuk AppCompat AlertDialog.View s.ImageView , ActionBar dan Tooltip.contentPadding .dp Android untuk View dan Context . Sangat berguna saat menggunakan tampilan DSL.foreground sebelum API 23.ViewHolder dan ItemViewHolder untuk penggunaan dasar yang mudah dari RecyclerView .RecyclerView ). companion object S menjadi spesifikasi niat TypeSafe yang kuat, dan buat PendingIntent dengan cara yang bersih dan mudah.BundleSpec untuk menggunakan Bundle dengan sintaks properti untuk ekstra Intent dan banyak lagi. Lifecycle .mainHandler tingkat atas untuk berhenti mengalokasikan multiple Handler untuk Looper utama.mainThreadLazy yang memeriksa akses properti di SharedPreferences / DataStore dan MacOS/iOS/WatchOS NSUserDefaults .hasFlag , withFlag dan ekstensi minusFlag pada Long , Int , Short , Byte , dan rekan -rekan mereka yang tidak ditandatangani.forEach for List S tanpa alokasi Iterator . unexpectedValue(…) , unsupportedAction(…) dan fungsi serupa yang tidak mengembalikan Nothing .ViewModel , Gunakan LiveData dan amati Lifecycle . Pastikan Anda memiliki mavenCentral() di repositori yang ditentukan dalam file proyek (root) build.gradle Anda (default untuk proyek studio Android baru).
Untuk membuatnya lebih mudah untuk memanfaatkan isi splitties untuk proyek Android Anda, ada pengelompokan artefak yang mencakup sebagian besar pemisahan.
Menambahkan dengan penyegaran: Splitties.pack.androidBase atau Splitties.pack.androidBaseWithViewsDsl .
2 paket ini tidak termasuk AppCompat dan cocok untuk aplikasi Wearos.
Termasuk modul berikut:
Ketergantungan lulusan:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0 " )Ada juga versi dengan tampilan DSL. Ini juga mencakup modul berikut:
Ketergantungan lulusan:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0 " ) Menambahkan dengan penyegaran: Splitties.pack.appCompat atau Splitties.pack.appCompatWithViewsDsl .
2 paket ini termasuk Paket Dasar Android, dan modul berikut:
Ketergantungan lulusan:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0 " )Ada juga versi dengan tampilan DSL. Ini juga mencakup versi tampilan DSL dari Paket Dasar Android dan modul berikut:
Ketergantungan lulusan:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0 " ) Menambahkan dengan penyegaran: Splitties.pack.androidMdc atau Splitties.pack.androidMdcWithViewsDsl .
2 paket ini termasuk Paket AppCompat Android, dan modul berikut:
Ketergantungan lulusan:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0 " )Ada juga versi dengan tampilan DSL. Selain itu mencakup versi DSL dari Paket Aplikasi Android dan modul berikut:
Ketergantungan lulusan:
implementation( " com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0 " )Karena Anda mungkin menggunakan beberapa artefak, untuk tidak mengulangi diri Anda sendiri, kami sarankan Anda untuk meletakkan versi di tempat tengah, jadi itu sedikit upaya untuk meningkatkan ke versi yang lebih baru.
Cara terbaik untuk melakukan ini adalah dengan menggunakan penyegaran, memiliki notasi ketergantungan bawaan untuk Splitties , dan juga banyak perpustakaan populer dan kualitatif lainnya, seperti Kotlinx, Androidx, perpustakaan dari Square/CashApp dan Libraries dari Google.
Yang paling penting, dengan itu, menjalankan tugas refreshVersions akan menunjukkan kepada Anda pembaruan yang tersedia dalam hitungan detik, untuk semua dependensi Anda, langsung ke versions.properties , dengan cara yang membuat peningkatan dengan mudah, bahkan hanya dengan keyboard.
FYI, rilis terbaru dari splitties adalah versi 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
Katakanlah Anda perlu mencoba fitur baru atau perbaikan yang belum membuatnya menjadi rilis:
Anda dapat mengambilnya dalam versi snapshot dengan menambahkan repositori yang sesuai seperti yang ditunjukkan di bawah ini, dan mengubah versi perpustakaan ke snapshot terbaru, 3.0.0-SNAPSHOT :
allProjects {
repositories {
mavenCentral()
google() // Add sonatype snapshots repo below
maven(url = " https://oss.sonatype.org/content/repositories/snapshots " )
}
}Rilis diumumkan di GitHub, Anda dapat berlangganan dengan mengklik "Watch", lalu "hanya rilis".
Namun, jika Anda menggunakan penyegaran, Anda juga akan belajar tentang pembaruan ketika Anda menjalankan tugas refreshVersions tepat di file versions.properties . Properties.
Jika Anda ingin perpustakaan ini memiliki fitur baru atau peningkatan yang baru atau dalam modul yang ada, silakan, buka masalah atau pilih/komentar yang serupa terlebih dahulu, sehingga dapat dibahas.
Kontribusi dokumentasi juga diterima. Untuk kesalahan ketik atau perbaikan kecil lainnya, jangan ragu untuk mengirimkan PR (permintaan tarik) secara langsung. Untuk kontribusi dokumen yang lebih signifikan, buka masalah terlebih dahulu, sehingga dapat dibahas.
Jika Anda menemukan bug , buka masalah dengan semua detail penting. Jika Anda tahu perbaikan sederhana yang bukan API Breaking dan yang tidak memiliki efek samping yang perlu dipertimbangkan, Anda juga dapat secara langsung mengirimkan PR.
Anda juga dapat bergabung dengan diskusi di Slack Kotlin di saluran #splitties (Anda bisa mendapatkan undangan di sini).
"Split" adalah modul dari perpustakaan splitties yang dapat Anda tambahkan sebagai ketergantungan. Ini hanya mencakup dependensi transitif yang diperlukan. Ini memungkinkan Anda untuk hanya menambahkan apa yang Anda butuhkan di aplikasi aplikasi atau perpustakaan Anda, sehingga APK/IPA/aplikasi akhir sekecil mungkin dan tidak termasuk hal -hal yang tidak digunakan oleh aplikasi Anda.
Katakanlah Anda sedang membangun aplikasi Wear OS menggunakan DSL Views. Kenakan aplikasi OS tidak perlu AppCompat. Termasuk itu akan menjadi buang -buang bandwidth dan penyimpanan. Modul Views DSL Core bergantung pada Android SDK tetapi tidak di AppCompat, jadi Anda tidak kembung aplikasi pergelangan tangan Anda dengan AppCompat dengan menggunakan Views DSL. Namun, jika Anda sedang membangun aplikasi ponsel, tablet, atau komputer Android, ada pemandangan DSL AppCompat dengan beberapa ekstensi untuk Anda gunakan.
Terima kasih khusus kepada Jovche Mitrejchevski karena telah membantu mengambil keputusan untuk proyek ini.
Terima kasih kepada JetBrains dan kontributor untuk Anko, yang merupakan sumber inspirasi yang hebat, terutama untuk pemandangan DSL, dan tentu saja terima kasih atas bahasa pemrograman Kotlin yang sangat baik yang memungkinkan proyek ini menjadi mungkin.
Terima kasih kepada Doug Stevenson untuk artikelnya "Kotlin & Android: A Brass Tacks Experiments". Adalah adil untuk mengatakan bahwa pandangan DSL memiliki root dalam percobaan ini.
Perpustakaan ini diterbitkan di bawah Lisensi Apache versi 2.0 yang dapat Anda lihat di sini.