A pragmatic Kotlin library for Android application development: reactive events and properties, JSON, persistent stores and presets, a view-controller layer over a single Activity, and a set of UI widgets and extensions — the foundation of the Renetik Instruments apps and Motorkari app.
- API docs: https://renetik.github.io/renetik-android/
- Sample:
sample/— its main screen is a live checklist that exercises every published module at runtime. - Changelog: CHANGELOG.md
repositories {
google()
mavenCentral()
maven { url = 'https://jitpack.io' }
}
dependencies {
// everything at once (aggregate artifact):
implementation 'com.github.renetik.renetik-android:renetik-android-framework:2.0.1'
debugImplementation 'com.github.renetik.renetik-android:renetik-android-core-leakcanary:2.0.1'
}Use master-SNAPSHOT instead of 2.0.1 to follow the current master.
Prefer individual modules from the matrix below for a smaller footprint.
| Module | Description |
|---|---|
Core |
Kotlin/Android foundation: logging, lang, math, colors, files, lazy/atomic/variable primitives |
Core-Leakcanary |
LeakCanary wiring for core's CSLeakCanary facade (debug builds) |
Event |
Events, observable properties, registrations, coroutines integration |
Json |
JSON mapping for objects, lists and maps with CSJsonObject |
Store |
Key-value stores (json/file/preferences) with typed property delegates |
Preset |
Presets: named snapshots of store-backed properties with save/load |
UI |
CS views, view/widget extensions, graphics helpers, view protocols |
UI Picker |
CSNumberPicker wheel bound to Renetik Android properties |
Material |
Material Components: sliders, forms, dialogs, snackbar extensions |
Imaging |
Glide-based image loading and bitmap/file/uri processing |
Controller |
View-controller layer: CSActivityView, navigation, grid, pager |
Framework |
Aggregate artifact depending on all runtime modules above |
Testing |
Unit-test stack: JUnit4 + Robolectric + MockK + coroutines-test |
Testing UI |
Instrumented-test stack: Barista/Espresso + UI Automator helpers |
All artifacts share the group com.github.renetik.renetik-android
and are published via JitPack.
CSclass prefix — Renetik Android types are prefixedCS(CSView,CSProperty,CSJsonObject) so they never collide with platform names.Type+Topic.ktextension files — extensions ofTypelive in a file named after the receiver plus a topic, in the package of the type's domain:- lowercase topic = function name:
CSHasChangeValue+onChange.kt - PascalCase topic = type or functionality name:
CSHasChangeValue+Boolean.kt,View+Appearance.kt,+Coroutines.kt - plain
Type+.ktholds the type's general extensions.
- lowercase topic = function name:
- One topic per file — small focused files instead of grab-bag modules.
sample/ is a standalone Gradle project consuming the published
artifacts (from mavenLocal in CI, JitPack otherwise) — proving all libraries
resolve. Its main screen is a module checklist built with Renetik Android's own
controller/ui DSL: every row runs a real mini-exercise of one module and
shows ✓/✗, with embedded picker/slider/image demos and a navigation
push/pop demo.
Run the Renetik Android build and sample app before publishing a release or when checking a local change:
./gradlew build --no-daemon --no-configuration-cache
./gradlew publishToMavenLocal --no-daemon --no-configuration-cache -Pgroup=com.github.renetik.renetik-android -Pversion=0.0.0-smoke
./gradlew -p sample assembleDebug --no-daemon --no-configuration-cache -PsmokeVersion=0.0.0-smoke
./gradlew -p sample testDebugUnitTest --no-daemon --no-configuration-cache -PsmokeVersion=0.0.0-smokeAfter pushing master or creating a release tag, verify JitPack POMs:
./verify_jitpack.sh master-SNAPSHOT
./verify_jitpack.sh 2.0.1Release publishing is separate from verification. See RELEASE.md
for the full release process, including how ./release.sh <version> tags the
repository and verifies JitPack.
The docs site is a curated landing page (docs/index.html)
that lists the modules in product order (foundation → UI → testing → aggregate)
with descriptions, linking into the per-module Dokka API pages. Each module's
page gets its description and package guidance from a Module.md next to it.
Build the full site locally with ./build_docs.sh (landing page at
build/site/index.html, Dokka output under build/site/api/). On push to
master, docs.yml assembles the same site and
deploys it to GitHub Pages.
Released under the terms of LICENSE.txt.
— If you find this useful, consider supporting the broader Renetik Instruments effort at https://www.renetik.com or get in touch for hire.