{"id":13428135,"url":"https://github.com/LouisCAD/Splitties","last_synced_at":"2025-03-16T01:31:59.023Z","repository":{"id":37821532,"uuid":"65558914","full_name":"LouisCAD/Splitties","owner":"LouisCAD","description":"A collection of hand-crafted extensions for your Kotlin projects.","archived":false,"fork":false,"pushed_at":"2024-05-29T22:10:21.000Z","size":5717,"stargazers_count":2518,"open_issues_count":53,"forks_count":158,"subscribers_count":41,"default_branch":"main","last_synced_at":"2024-10-14T21:21:51.376Z","etag":null,"topics":["android","android-library","coroutines","ios","ios-library","kotlin","kotlin-android","kotlin-coroutines","kotlin-dsl","kotlin-extensions","kotlin-library","kotlin-multiplatform","kotlin-native","lightweight","macos","material-design","watchos"],"latest_commit_sha":null,"homepage":"https://splitties.louiscad.com","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LouisCAD.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["LouisCAD"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.paypal.me/louiscad"]}},"created_at":"2016-08-12T14:22:12.000Z","updated_at":"2024-10-13T01:45:04.000Z","dependencies_parsed_at":"2024-10-14T21:21:48.116Z","dependency_job_id":"3ac0bbd5-533a-4a80-884f-2a8f86eb53d2","html_url":"https://github.com/LouisCAD/Splitties","commit_stats":{"total_commits":2340,"total_committers":9,"mean_commits":260.0,"dds":0.02264957264957268,"last_synced_commit":"1ed56ba2779f31dbf909509c955fce7b9768e208"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisCAD%2FSplitties","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisCAD%2FSplitties/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisCAD%2FSplitties/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LouisCAD%2FSplitties/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LouisCAD","download_url":"https://codeload.github.com/LouisCAD/Splitties/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221631871,"owners_count":16855019,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-library","coroutines","ios","ios-library","kotlin","kotlin-android","kotlin-coroutines","kotlin-dsl","kotlin-extensions","kotlin-library","kotlin-multiplatform","kotlin-native","lightweight","macos","material-design","watchos"],"created_at":"2024-07-31T01:00:47.106Z","updated_at":"2024-10-27T05:30:45.490Z","avatar_url":"https://github.com/LouisCAD.png","language":"Kotlin","readme":"# Splitties\n\nSplitties is a collection of small Kotlin multiplatform libraries (with Android as first target).\n\nThese libraries are intended to reduce the amount of code you have to write, freeing code reading and writing\ntime, so you can focus more on what you want to build for your users (even if you're the only one), or\nhave more time to have `fun`.\n\nThis project is named \"Splitties\" because it is split in small modules,\ndistributed as independent libraries, so you can add only the ones\nyou need to your project/module, helping reduce the size of the final binary that users devices\nwill need to download and keep in the limited storage (BTW, everything is limited).\n\nSome Android targeting modules have a content similar to what [Anko](https://github.com/Kotlin/anko) offers.\nSee [a short comparison of Splitties with Anko here](Comparison_with_anko.md).\n\nEach module has been designed to have a **small footprint** and be as **efficient** as possible.\n\n## A few examples\n\nSplitties is all about simplifying your code. Here are a few examples:\n\n**Kotlin:**\n```kotlin\nstartActivity(Intent(this, DemoActivity::class.java))\n```\n\n**Kotlin with Splitties [Activities](modules/activities):**\n```kotlin\nstart\u003cDemoActivity\u003e()\n```\n\n----\n\n**Kotlin:**\n```kotlin\nSnackbar.make(root, R.string.refresh_successful, Snackbar.LENGTH_SHORT)\n    .show()\n```\n\n**Kotlin with Splitties [Snackbar](modules/snackbar):**\n```kotlin\nroot.snack(R.string.refresh_successful)\n```\n----\n\n**Racing coroutines:** (`raceOf(…)` comes from [the Coroutines module](modules/coroutines))\n\n```kotlin\nsuspend fun awaitUserChoice(ui: SomeUi, choices: List\u003cStuff\u003e): Stuff? = raceOf({\n    ui.awaitSomeUserAction(choices)\n}, {\n    ui.awaitDismissal()\n    null\n}, {\n    ui.showSomethingInRealtimeUntilCancelled() // Returns Nothing, will run, but never \"win\".\n})\n```\n\n----\n\n**Kotlin:**\n```kotlin\nSnackbar.make(root, getString(R.string.deleted_x_items, deletedCount), Snackbar.LENGTH_LONG)\n    .setAction(android.R.string.cancel) {\n        deleteOperation.requestRollback()\n    }\n    .setActionTextColor(ContextCompat.getColor(this, R.color.fancy_color))\n    .show()\n```\n\n**Kotlin with Splitties [Snackbar](modules/snackbar):**\n```kotlin\nroot.longSnack(str(R.string.deleted_x_items, deletedCount)) {\n    action(android.R.string.cancel, textColor = color(R.color.fancy_color)) {\n        deleteOperation.requestRollback()\n    }\n}\n```\n\n----\n\n## Overview\n\n- [System interaction (Android only)](#system-interaction-android-only)\n- [User input and user interface related splits](#user-input-and-user-interface-related-splits)\n  - [Small messages (Android only)](#small-messages-android-only)\n  - [Dialogs (Android only)](#dialogs-android-only)\n  - [System UI (Android only)](#system-ui-android-only)\n  - [Extensions for Views (Android only)](#extensions-for-views-android-only)\n  - [Creating View based UIs with the power of Kotlin (Android only)](#creating-view-based-uis-with-the-power-of-kotlin-android-only)\n  - [Various UI utilities (Android only)](#various-ui-utilities-android-only)\n  - [Material Design helpers (Android only)](#various-ui-utilities-android-only)\n- [Inter and cross app communication: Activities, Fragments, Intents, and Bundles](#inter-and-cross-app-communication-activities-fragments-intents-and-bundles)\n- [Concurrency (Multiplatform)](#concurrency-multiplatform)\n- [Data persistence (Multiplatform)](#data-persistence-multiplatform)\n- [Utilities (Multiplatform)](#utilities-multiplatform)\n- [Debugging (Android only)](#debugging-android-only)\n- [Legacy (Android only)](#legacy-android-only)\n\n## System interaction (Android only):\n\n- **[App Context:](modules/appctx)** Always have your application `Context` at hand with `appCtx`.\n- **[System Services:](modules/systemservices)** No more `context.getSystemService(NAME_OF_SERVICE) as NameOfManager`.\n\n## User input and user interface related splits:\n\n### Small messages (Android only)\n\n- **[Snackbar:](modules/snackbar)** Grab a snack without ceremony with `snack(…)` and `longSnack(…)`.\n- **[Toast:](modules/toast)** Show a toast by just calling `toast(yourText)`, and dodge [API 25\n  `BadTokenException`](https://github.com/drakeet/ToastCompat#why).\n\n### Dialogs (Android only)\n\n- **[Alert Dialog:](modules/alertdialog)** Create simple alert dialogs with simple code.\n- **[Alert Dialog AppCompat:](modules/alertdialog-appcompat)** AppCompat version of\n  [Alert Dialog](modules/alertdialog).\n- **[Alert Dialog AppCompat Coroutines:](modules/alertdialog-appcompat-coroutines)**\n  `showAndAwait` extension functions for AppCompat AlertDialog.\n- **[Alert Dialog Material:](modules/alertdialog-appcompat)** Material Components extension of\n  [Alert Dialog AppCompat](modules/alertdialog-appcompat).\n\n### System UI (Android only)\n\n- **[Dangerous permissions:](modules/permissions)** Request runtime permissions without polluting your codebase.\n\n### Extensions for Views (Android only)\n\n- **[Views:](modules/views)** Extensions function and properties on `View`s.\n- **[Views AppCompat:](modules/views-appcompat)** AppCompat extension of [Views](modules/views). Includes helpers for `ImageView` tinting, `ActionBar` and tooltip.\n- **[Views CardView:](modules/views-cardview)** CardView extension of [Views](modules/views). Provides a `contentPadding` property.\n- **[Views Material:](modules/views-material)** Material Components extension of [Views](modules/views).\n- **[Views Coroutines Material:](modules/views-coroutines-material)** Material Components + Kotlin coroutines.\n- **[Views RecyclerView:](modules/views-recyclerview)** RecyclerView extension of [Views](modules/views).\n- **[Views Coroutines:](modules/views-coroutines)** Android Views + Kotlin coroutines.\n\n### Creating View based UIs with the power of Kotlin (Android only)\n\n- **[Views DSL:](modules/views-dsl)** Create UIs with readable Kotlin code (IDE preview supported).\n- **[Views DSL AppCompat:](modules/views-dsl-appcompat)** AppCompat extension of [Views DSL](modules/views-dsl).\n- **[Views DSL ConstraintLayout:](modules/views-dsl-constraintlayout)** ConstraintLayout extension of\n  [Views DSL](modules/views-dsl).\n- **[Views DSL CoordinatorLayout:](modules/views-dsl-coordinatorlayout)** CoordinatorLayout extension of\n  [Views DSL](modules/views-dsl).\n- **[Views DSL Material:](modules/views-dsl-material)** Material Components extension of [Views DSL](modules/views-dsl).\n- **[Views DSL RecyclerView:](modules/views-dsl-recyclerview)** RecyclerView extension of [Views DSL](modules/views-dsl).\n\n### Various UI utilities (Android only)\n\n- **[Resources:](modules/resources)** Extensions to get resources like strings, colors or drawables easily,\n  with support for themed attributes.\n- **[Dimensions:](modules/dimensions)** Android `dp` extensions for `View` and `Context`.\n  Particularly handy when using [Views DSL](modules/views-dsl).\n- Selectable views\n  - **[Selectable Views:](modules/views-selectable)** Selectable Views with `foreground` property before API 23.\n  - **[Selectable Views AppCompat:](modules/views-selectable-appcompat)** [Selectable Views](modules/views-selectable) for AppCompatTextView.\n  - **[Selectable Views ConstraintLayout:](modules/views-selectable-constraintlayout)** [Selectable Views](modules/views-selectable) for ConstraintLayout.\n- **[Typesafe RecyclerView:](modules/typesaferecyclerview)** Typesafe `ViewHolder` and `ItemViewHolder` for easy basic usage of `RecyclerView`.\n\n### Material Design helpers (Android only)\n\n- **[Material Colors:](modules/material-colors)** [2014 Material Design color palettes](\n  https://material.io/design/color/#tools-for-picking-colors) as color resources.\n- **[Material Lists:](modules/material-lists)** List item Views implementing [Material Design guidelines](\n  https://material.io/guidelines) (perfect for usage in a `RecyclerView`).\n\n## Inter and cross app communication: Activities, Fragments, Intents, and Bundles\n\n- **[Activities:](modules/activities)** Start activities with minimal boilerplate.\n- **[Intents:](modules/intents)** Transform `companion object`s into powerful typesafe intent specs,\n  and create `PendingIntent`s the clean and easy way.\n- **[Fragments:](modules/fragments)** Start activities from fragments and do transactions with\n  minimal boilerplate.\n- **[Fragment Args:](modules/fragmentargs)** Fragment arguments without ceremony thanks to\n  delegated properties.\n- **[Bundle:](modules/bundle)** `BundleSpec` to use `Bundle` with property syntax for `Intent`\n  extras and more.\n\n## Concurrency (Multiplatform)\n\n- **[Coroutines:](modules/coroutines)** General purpose extensions to kotlinx.coroutines.\n- **[Lifecycle Coroutines (Android only):](modules/lifecycle-coroutines)** Coroutines integration with AndroidX\n  [`Lifecycle`](https://developer.android.com/reference/kotlin/androidx/lifecycle/Lifecycle).\n- **[Main Thread:](modules/mainthread)** Properties and precondition checkers related to the main thread.\n- **[Main Handler (Android only):](modules/mainhandler)** Top-level `mainHandler` property to stop allocating multiple\n  `Handler`s for main `Looper`.\n- **[Checked Lazy (Android only):](modules/checkedlazy)** `mainThreadLazy` that checks property access on\n\n## Data persistence (Multiplatform)\n\n- **[Preferences:](modules/preferences)** Property syntax for Android's `SharedPreferences`/`DataStore` and macOS/iOS/watchOS `NSUserDefaults`.\n- **[Arch Room:](modules/arch-room)** Room helpers to instantiate your DB and perform\n  transactions in Kotlin.\n\n## Utilities (Multiplatform)\n\n- **[Bit Flags:](modules/bitflags)** `hasFlag`, `withFlag` and `minusFlag` extensions on `Long`, `Int`, `Short`, `Byte`, and their unsigned counterparts.\n- **[Collections:](modules/collections)** `forEach` for `List`s without `Iterator` allocation.\n\n## Debugging (Android only)\n\n- **[Stetho init:](modules/stetho-init)** Have [Stetho](https://github.com/facebook/stetho) for your debug\n  builds, without writing any code!\n\n## Legacy (Android only)\n\n- **[Exceptions:](modules/exceptions)** `unexpectedValue(…)`, `unsupportedAction(…)` and similar\n  functions that return `Nothing`.\n- **[Arch Lifecycle:](modules/arch-lifecycle)** Extensions to get `ViewModel`s, use `LiveData` and\n  observe `Lifecycle`s.\n\n## Download\n\n### Gradle instructions\n\nMake sure you have `mavenCentral()` in the repositories defined in your project's\n(root) `build.gradle` file (default for new Android Studio projects).\n\nTo make it easier to take advantage of the contents of Splitties for your Android projects, there\nare grouping artifacts that include _most_ splits.\n\n#### Android base\n\nAdding with [refreshVersions](https://github.com/jmfayard/refreshVersions): `Splitties.pack.androidBase` or `Splitties.pack.androidBaseWithViewsDsl`.\n\nThese 2 packs don't include AppCompat and are suitable for WearOS apps.\n\nIncludes the following modules:\n- [activities](modules/activities)\n- [appctx](modules/appctx)\n- [bitflags](modules/bitflags)\n- [bundle](modules/bundle)\n- [collections](modules/collections)\n- [coroutines](modules/coroutines)\n- [dimensions](modules/dimensions)\n- [fragments](modules/fragments)\n- [fragmentargs](modules/fragmentargs)\n- [intents](modules/intents)\n- [lifecycle-coroutines](modules/lifecycle-coroutines)\n- [mainhandler](modules/mainhandler)\n- [mainthread](modules/mainthread)\n- [material-colors](modules/material-colors)\n- [permissions](modules/permissions)\n- [preferences](modules/preferences)\n- [resources](modules/resources)\n- [systemservices](modules/systemservices)\n- [toast](modules/toast)\n- [views](modules/views)\n- [views-coroutines](modules/views-coroutines)\n- [views-recyclerview](modules/views-recyclerview)\n- [views-selectable](modules/views-selectable)\n- [views-selectable-constraintlayout](modules/views-selectable-constraintlayout)\n\nGradle dependency:\n\n```kotlin\nimplementation(\"com.louiscad.splitties:splitties-fun-pack-android-base:3.0.0\")\n```\n\nThere's also a version with Views DSL. It additionally includes the following modules:\n\n- [views-dsl](modules/views-dsl)\n- [views-dsl-constraintlayout](modules/views-dsl-constraintlayout)\n- [views-dsl-recyclerview](modules/views-dsl-recyclerview)\n\nGradle dependency:\n\n```kotlin\nimplementation(\"com.louiscad.splitties:splitties-fun-pack-android-base-with-views-dsl:3.0.0\")\n```\n\n#### Android AppCompat\n\nAdding with [refreshVersions](https://github.com/jmfayard/refreshVersions): `Splitties.pack.appCompat` or `Splitties.pack.appCompatWithViewsDsl`.\n\nThese 2 packs include the [Android base](#android-base) pack, and the following modules:\n- [alertdialog-appcompat](modules/alertdialog-appcompat)\n- [alertdialog-appcompat-coroutines](modules/alertdialog-appcompat-coroutines)\n- [views-appcompat](modules/views-appcompat)\n- [views-selectable-appcompat](modules/views-selectable-appcompat)\n\nGradle dependency:\n\n```kotlin\nimplementation(\"com.louiscad.splitties:splitties-fun-pack-android-appcompat:3.0.0\")\n```\n\nThere's also a version with Views DSL. It additionally includes the Views DSL version of the\n[Android base pack](#android-base) and the following module:\n- [views-dsl-appcompat](modules/views-dsl-appcompat)\n\nGradle dependency:\n\n```kotlin\nimplementation(\"com.louiscad.splitties:splitties-fun-pack-android-appcompat-with-views-dsl:3.0.0\")\n```\n\n#### Android Material Components\n\nAdding with [refreshVersions](https://github.com/jmfayard/refreshVersions): `Splitties.pack.androidMdc` or `Splitties.pack.androidMdcWithViewsDsl`.\n\nThese 2 packs include the [Android AppCompat](#android-appcompat) pack, and the following modules:\n- [alertdialog-material](modules/alertdialog-material)\n- [material-lists](modules/material-lists)\n- [snackbar](modules/snackbar)\n- [views-cardview](modules/views-cardview)\n- [views-coroutines-material](modules/views-coroutines-material)\n- [views-material](modules/views-material)\n\nGradle dependency:\n\n```kotlin\nimplementation(\"com.louiscad.splitties:splitties-fun-pack-android-material-components:3.0.0\")\n```\n\nThere's also a version with Views DSL. It additionally includes the Views DSL version of the\n[Android AppCompat pack](#android-appcompat) and the following modules:\n- [views-dsl-coordinatorlayout](modules/views-dsl-coordinatorlayout)\n- [views-dsl-material](modules/views-dsl-material)\n\nGradle dependency:\n\n```kotlin\nimplementation(\"com.louiscad.splitties:splitties-fun-pack-android-material-components-with-views-dsl:3.0.0\")\n```\n\n#### All the artifacts (47)\n\nSince you might use multiple artifacts, to not repeat yourself, we recommend you to put the version in a central place,\nso it's little effort to upgrade to newer versions.\n\nThe best way to do this is to use [refreshVersions](https://github.com/jmfayard/refreshVersions),\nit has built-in dependency notations for `Splitties`, and also many other popular and qualitative libraries,\nlike kotlinx, AndroidX, libraries from Square/CashApp and libraries from Google.\n\nMost importantly, with it, running the `refreshVersions` task will show you the available updates in a matter of seconds,\nfor all of your dependencies, right into the `versions.properties`, in a way that makes upgrading effortless,\neven with just the keyboard.\n\nFYI, the current latest release of Splitties is the version `3.0.0`\n\n\u003cdetails\u003e\n\u003csummary\u003e\n\u003cb\u003eHere are the maven coordinates of all the artifacts of this library, for reference. (Click to expand)\u003c/b\u003e\n\u003c/summary\u003e\n\n```\ncom.louiscad.splitties:splitties-activities\ncom.louiscad.splitties:splitties-alertdialog\ncom.louiscad.splitties:splitties-alertdialog-appcompat\ncom.louiscad.splitties:splitties-alertdialog-appcompat-coroutines\ncom.louiscad.splitties:splitties-appctx\ncom.louiscad.splitties:splitties-arch-lifecycle\ncom.louiscad.splitties:splitties-arch-room\ncom.louiscad.splitties:splitties-bitflags\ncom.louiscad.splitties:splitties-bundle\ncom.louiscad.splitties:splitties-checkedlazy\ncom.louiscad.splitties:splitties-collections\ncom.louiscad.splitties:splitties-coroutines\ncom.louiscad.splitties:splitties-dimensions\ncom.louiscad.splitties:splitties-exceptions\ncom.louiscad.splitties:splitties-fragments\ncom.louiscad.splitties:splitties-fragmentargs\ncom.louiscad.splitties:splitties-intents\ncom.louiscad.splitties:splitties-lifecycle-coroutines\ncom.louiscad.splitties:splitties-mainhandler\ncom.louiscad.splitties:splitties-mainthread\ncom.louiscad.splitties:splitties-material-colors\ncom.louiscad.splitties:splitties-material-lists\ncom.louiscad.splitties:splitties-permissions\ncom.louiscad.splitties:splitties-preferences\ncom.louiscad.splitties:splitties-resources\ncom.louiscad.splitties:splitties-snackbar\ncom.louiscad.splitties:splitties-stetho-init\ncom.louiscad.splitties:splitties-systemservices\ncom.louiscad.splitties:splitties-toast\ncom.louiscad.splitties:splitties-typesaferecyclerview\ncom.louiscad.splitties:splitties-views\ncom.louiscad.splitties:splitties-views-appcompat\ncom.louiscad.splitties:splitties-views-cardview\ncom.louiscad.splitties:splitties-views-coroutines\ncom.louiscad.splitties:splitties-views-coroutines-material\ncom.louiscad.splitties:splitties-views-dsl\ncom.louiscad.splitties:splitties-views-dsl-appcompat\ncom.louiscad.splitties:splitties-views-dsl-constraintlayout\ncom.louiscad.splitties:splitties-views-dsl-coordinatorlayout\ncom.louiscad.splitties:splitties-views-dsl-ide-preview\ncom.louiscad.splitties:splitties-views-dsl-material\ncom.louiscad.splitties:splitties-views-dsl-recyclerview\ncom.louiscad.splitties:splitties-views-material\ncom.louiscad.splitties:splitties-views-recyclerview\ncom.louiscad.splitties:splitties-views-selectable\ncom.louiscad.splitties:splitties-views-selectable-appcompat\ncom.louiscad.splitties:splitties-views-selectable-constraintlayout\n```\n\n\u003c/details\u003e\n\n#### Snapshots\n\nLet's say you need to try a new feature or a fix that did not make it to a release yet:\n\nYou can grab it in the snapshot version by adding the corresponding repository as shown below, and\nchanging the library version to the latest snapshot, `3.0.0-SNAPSHOT`:\n\n```groovy\nallProjects {\n    repositories {\n        mavenCentral()\n        google() // Add sonatype snapshots repo below\n        maven(url = \"https://oss.sonatype.org/content/repositories/snapshots\")\n    }\n}\n```\n\n## New versions notifications\n\nReleases are announced on GitHub, you can subscribe by [clicking on \"Watch\", then \"Releases only\"](\nhttps://docs.github.com/en/github/managing-subscriptions-and-notifications-on-github/setting-up-notifications/configuring-notifications#configuring-your-watch-settings-for-an-individual-repository\n).\n\nHowever, if you use [refreshVersions](https://github.com/jmfayard/refreshVersions),\nyou'll also learn about updates when you run the `refreshVersions` task right in the `versions.properties` file.\n\n## Improve this library\n\nIf you want this library to have **a new feature or an improvement** in a\nnew or in an existing module, please, open an issue or vote/comment a\nsimilar one first, so it can be discussed.\n\n**Documentation contributions** are also welcome.\nFor typos or other small improvements, feel free to submit a PR\n(pull request) directly.\nFor more significant doc contributions, please open an issue first, so it\ncan be discussed.\n\n**If you find a bug**, please open an issue with all the important details.\nIf you know a simple fix that is not API breaking and that does not have\nside effects that need to be considered, you may also directly submit a PR.\n\nYou can also join the discussion on Kotlin's Slack in the\n[#splitties](https://kotlinlang.slack.com/messages/splitties) channel (you can get an invitation\n[here](http://slack.kotlinlang.org/)).\n\n## What is a split\n\nA \"split\" is a module of the Splitties library that you can add as a\ndependency. It only includes the required transitive dependencies.\nThis allows you to only add what you need in your app or library module,\nso the final apk/ipa/app is as small as possible and doesn't include stuff not used\nby your app.\n\nLet's say you're building a Wear OS app using the Views DSL.\nWear OS apps don't need AppCompat. Including it would be a waste of\nbandwidth and storage. The Views DSL core module relies on the Android\nSDK but not on AppCompat, so you don't bloat your wrist app with AppCompat\nby using Views DSL. However, if you are building a phone, tablet or computer\nAndroid app, there's a Views DSL AppCompat split with a few extensions for\nyou to use.\n\n## Credits\n\nSpecial thanks to [Jovche Mitrejchevski](https://twitter.com/jovchem) for\nhelping in taking decisions for this project.\n\nThanks to JetBrains and the contributors for [Anko](https://github.com/Kotlin/anko),\nwhich was a great source of inspiration, especially for Views DSL, and of course\nthanks for the excellent [Kotlin](https://kotl.in) programming language that makes this project possible.\n\nThanks to [Doug Stevenson](https://twitter.com/CodingDoug) for his articles\n[\"Kotlin \u0026 Android: A Brass Tacks Experiment\"](\nhttps://medium.com/@CodingDoug/kotlin-android-a-brass-tacks-experiment-part-3-84e65d567a37\n). It is fair to say that Views DSL has its root in this experiment.\n\n## License\n\nThis library is published under Apache License version 2.0 which you can see\n[here](https://github.com/LouisCAD/Splitties/blob/master/LICENSE).\n","funding_links":["https://github.com/sponsors/LouisCAD","https://www.paypal.me/louiscad"],"categories":["Libraries","Extension","Kotlin"],"sub_categories":["SQL"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLouisCAD%2FSplitties","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLouisCAD%2FSplitties","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLouisCAD%2FSplitties/lists"}