A family of small Kotlin libraries for delightful Android development
Clone or download
Latest commit beb45da Jul 3, 2018
Permalink
Failed to load latest commit information.
activities Add default empty lambda to startActivity(…) Jun 10, 2018
alertdialog-appcompat Prepare for release 2.0.0-alpha2 May 21, 2018
alertdialog Prepare for release 2.0.0-alpha2 May 21, 2018
appctx Prepare for release 2.0.0-alpha2 May 21, 2018
arch-lifecycle Fix observe { … } sample snippets in README May 30, 2018
arch-room Prepare for release 2.0.0-alpha2 May 21, 2018
bitflags Prepare for release 2.0.0-alpha2 May 21, 2018
bundle Update Bundle README Jun 8, 2018
checkedlazy Prepare for release 2.0.0-alpha2 May 21, 2018
collections Prepare for release 2.0.0-alpha2 May 21, 2018
dimensions Prepare for release 2.0.0-alpha2 May 21, 2018
exceptions Prepare for release 2.0.0-alpha2 May 21, 2018
fragmentargs Move Fragment arg() and argOrNull() package Jun 7, 2018
fragments Add default empty lambda to startActivity(…) Jun 10, 2018
gradle/wrapper AGP 3.2.0-alpha16 Jun 5, 2018
initprovider Prepare for release 2.0.0-alpha2 May 21, 2018
intents Prepare for release 2.0.0-alpha2 May 21, 2018
mainhandler Prepare for release 2.0.0-alpha2 May 21, 2018
material-colors Prepare for release 2.0.0-alpha2 May 21, 2018
material-lists Prepare for release 2.0.0-alpha2 May 21, 2018
preferences Prepare for release 2.0.0-alpha2 May 21, 2018
resources Prepare for release 2.0.0-alpha2 May 21, 2018
sample Replace calls to deprecated add(…) in sample Jun 13, 2018
selectableviews-appcompat Prepare for release 2.0.0-alpha2 May 21, 2018
selectableviews-constraintlayout Prepare for release 2.0.0-alpha2 May 21, 2018
selectableviews Prepare for release 2.0.0-alpha2 May 21, 2018
snackbar Prepare for release 2.0.0-alpha2 May 21, 2018
stetho-init Prepare for release 2.0.0-alpha2 May 21, 2018
systemservices Prepare for release 2.0.0-alpha2 May 21, 2018
toast Prepare for release 2.0.0-alpha2 May 21, 2018
typesaferecyclerview Prepare for release 2.0.0-alpha2 May 21, 2018
uithread Prepare for release 2.0.0-alpha2 May 21, 2018
viewdsl-appcompat-styles Prepare for release 2.0.0-alpha2 May 21, 2018
viewdsl-appcompat Prepare for release 2.0.0-alpha2 May 21, 2018
viewdsl-constraintlayout Prepare for release 2.0.0-alpha2 May 21, 2018
viewdsl-design Replace deprecated call in addInput(…) function Jun 13, 2018
viewdsl-ide-preview Prepare for release 2.0.0-alpha2 May 21, 2018
viewdsl-recyclerview Prepare for release 2.0.0-alpha2 May 21, 2018
viewdsl Add replaceWith to deprecated add(…) functions Jun 13, 2018
views-appcompat Prepare for release 2.0.0-alpha2 May 21, 2018
views-cardview Prepare for release 2.0.0-alpha2 May 21, 2018
views-design Prepare for release 2.0.0-alpha2 May 21, 2018
views-recyclerview Prepare for release 2.0.0-alpha2 May 21, 2018
views Prepare for release 2.0.0-alpha2 May 21, 2018
.gitignore Remove all files under .idea/ from git Feb 18, 2017
LICENSE chore: Add Apache License v2.0 Aug 12, 2016
README.md Prepare for release 2.0.0-alpha4 Jul 3, 2018
RELEASING.md Fix RELEASING guide steps order Jul 3, 2018
build.gradle Prepare for release 2.0.0-alpha4 Jul 3, 2018
debug.keystore Add direct boot awareness and example for multiprocess appctx Feb 18, 2017
gradle.properties Initial commit Jul 30, 2016
gradlew chore: Update gradle to version 3.0 Aug 20, 2016
gradlew.bat chore: Update gradle to version 3.0 Aug 20, 2016
no-version-ranges.gradle Add a guard to prevent version ranges in dependencies Apr 17, 2017
publish.gradle Make artifactoryPublish fail if run from IDE Mar 18, 2018
settings.gradle Create collections module with forEachByIndex() May 20, 2018

README.md

Splitties

Splitties is a collection of small independent Android libraries that aims to make developing apps and libraries for Android (including Wear, TV, Things, Auto and ChromeOS targeted) easier and more fun.

Some modules are similar to what Anko provides.

This project is named "Splitties" because it is split in small modules, distributed as independent Android libraries, so you can add only the ones you need to your project/module, helping reduce the size of the final apk.

Each module has been designed to have a small footprint and be as efficient as possible.

All the splits

Download

Gradle instructions

Make sure you have jcenter() in the repositories defined in your project's (root) build.gradle file (default for new Android Studio projects).

Add the version of the library to not repeat yourself if you use multiple artifacts, and make sure their versions are in sync by adding an ext property into your root project build.gradle file:

allProjects {
    ext {
        splitties_version = '2.0.0-alpha4'
    }
}
Here are all the artifacts of this library. Just use the ones you need. (Click to expand)
implementation "com.louiscad.splitties:splitties-activities:$splitties_version"
implementation "com.louiscad.splitties:splitties-alertdialog:$splitties_version"
implementation "com.louiscad.splitties:splitties-alertdialog-appcompat:$splitties_version"
implementation "com.louiscad.splitties:splitties-appctx:$splitties_version"
implementation "com.louiscad.splitties:splitties-arch-lifecycle:$splitties_version"
implementation "com.louiscad.splitties:splitties-arch-room:$splitties_version"
implementation "com.louiscad.splitties:splitties-bitflags:$splitties_version"
implementation "com.louiscad.splitties:splitties-bundle:$splitties_version"
implementation "com.louiscad.splitties:splitties-checkedlazy:$splitties_version"
implementation "com.louiscad.splitties:splitties-collections:$splitties_version"
implementation "com.louiscad.splitties:splitties-dimensions:$splitties_version"
implementation "com.louiscad.splitties:splitties-exceptions:$splitties_version"
implementation "com.louiscad.splitties:splitties-fragments:$splitties_version"
implementation "com.louiscad.splitties:splitties-fragmentargs:$splitties_version"
implementation "com.louiscad.splitties:splitties-initprovider:$splitties_version"
implementation "com.louiscad.splitties:splitties-intents:$splitties_version"
implementation "com.louiscad.splitties:splitties-mainhandler:$splitties_version"
implementation "com.louiscad.splitties:splitties-material-colors:$splitties_version"
implementation "com.louiscad.splitties:splitties-material-lists:$splitties_version"
implementation "com.louiscad.splitties:splitties-preferences:$splitties_version"
implementation "com.louiscad.splitties:splitties-resources:$splitties_version"
implementation "com.louiscad.splitties:splitties-selectableviews:$splitties_version"
implementation "com.louiscad.splitties:splitties-selectableviews-appcompat:$splitties_version"
implementation "com.louiscad.splitties:splitties-selectableviews-constraintlayout:$splitties_version"
implementation "com.louiscad.splitties:splitties-snackbar:$splitties_version"
debugImplementation "com.louiscad.splitties:splitties-stetho-init:$splitties_version"
implementation "com.louiscad.splitties:splitties-systemservices:$splitties_version"
implementation "com.louiscad.splitties:splitties-toast:$splitties_version"
implementation "com.louiscad.splitties:splitties-typesaferecyclerview:$splitties_version"
implementation "com.louiscad.splitties:splitties-uithread:$splitties_version"
implementation "com.louiscad.splitties:splitties-viewdsl:$splitties_version"
implementation "com.louiscad.splitties:splitties-viewdsl-appcompat:$splitties_version"
implementation "com.louiscad.splitties:splitties-viewdsl-appcompat-styles:$splitties_version"
implementation "com.louiscad.splitties:splitties-viewdsl-constraintlayout:$splitties_version"
implementation "com.louiscad.splitties:splitties-viewdsl-design:$splitties_version"
debugImplementation "com.louiscad.splitties:splitties-viewdsl-ide-preview:$splitties_version"
implementation "com.louiscad.splitties:splitties-viewdsl-recyclerview:$splitties_version"
implementation "com.louiscad.splitties:splitties-views:$splitties_version"
implementation "com.louiscad.splitties:splitties-views-appcompat:$splitties_version"
implementation "com.louiscad.splitties:splitties-views-cardview:$splitties_version"
implementation "com.louiscad.splitties:splitties-views-design:$splitties_version"
implementation "com.louiscad.splitties:splitties-views-recyclerview:$splitties_version"

Snapshots

Let's say you need a new feature or a fix that did not make it to a release yet:

You can grab it in the latest snapshot by adding the snapshots repository and changing the library version to the -SNAPSHOT version in your root project build.gradle file:

allProjects {
    repositories {
        google()
        jcenter() // Add snapshots repo below
        maven { url 'https://oss.jfrog.org/artifactory/oss-snapshot-local' }
    }
    ext {
        splitties_version = '2.0.0-SNAPSHOT' // Change this line
    }
}

If you need to, you can browse the deployed snapshots on artifactory with the native browser or the web app so you can pick a specific snapshot.

Other build systems

For maven and alternative build-systems, check the Bintray page.

New versions notifications

To get notified for new versions, be sure to click on "Watch" on the splitties Bintray page.

Improve this library

If you want this library to have a new feature or an improvement in a new or in an existing module, please, open an issue or vote/comment a similar one first, so it can be discussed.

Documentation contributions are also welcome. For typos or other small improvements, feel free to submit a PR (pull request) directly. For more significant doc contributions, please, open an issue first so it can be discussed.

If you find a bug, please open an issue with all the important details. If you know a simple fix that is not API breaking and that does not have side-effects that need to be considered, you may also directly submit a PR.

What is a split

A "split" is a module of the Splitties library that you can add as a dependency. It only includes the required transitive dependencies. This allows you to only add what you need in your app or library module, so the final apk is as small as possible and doesn't include stuff not used by your app.

Let's say you're build an Android Wear app using the View DSL. Android Wear apps don't need AppCompat. Including it would be a waste of bandwidth and storage. The View DSL core module relies on the Android SDK but not on AppCompat, so you don't bloat your wrist app with AppCompat by using View DSL. However, if you are building a phone, tablet or computer Android app, there's a View DSL AppCompat split with a few extensions for you to use.

License

This library is published under Apache License version 2.0 which you can see here.