It’s no secret that one of the greatest software design principles when extending functionality is to consider using plugins (where possible)*

I will keep this post short and avoid repetition, if you don’t know what a plugin system is then now would be a good time to find out from here. Now that is out of the way, let us create a small use-case that we need a solution for.

Problem statement

Given a broad category of devices that share similar functionality and a communication interface with indecent protocols, in this case let’s call them inverters (for a solar system). These inverters…

androix.startup is a new addition to the Jetpack suite of libraries. Read more about it here

Koin is a pragmatic lightweight dependency injection framework for Kotlin developers. Written in pure Kotlin using functional resolution only: no proxy, no code generation, no reflection!


I’m sure you’ve read a lot about writing good code using best practises like first five object-oriented design(OOD) by Uncle Bob, if you haven’t now would be a good time to quickly touch up on the top S.O.L.I.D: The First 5 Principles of Object Oriented Design as we will make some references to some of these principles.

Problem Statement


Not to bash your post or anything but in future I suggest you check your facts first, If you look around Medium you'll find a lot of similar blogs about securing secrets e.t.c pointing towards using NDK "to make it hard to de-compile" but as Jt has just pointed out, this technique does not assure security nor does it add much in the way of hardening sensitive information which all the aforementioned blogs fall prey to.

You seem to have read about something similar and ran with it without considering what goes into reverse engineering android applications.

As a rule of thumb, if it's embedded in the binary of the application it's really secure

It would be nice if work manager used bundle/parcel for complex structures instead of a Map which is restricted to native types. Now I don't know why (from a design perspective) map was used since Bundle has been and still is the primary medium transferring between components data

Additional quick find and replace for anyone who works under any linux env or has wsl. In your root project directory run:

find . -name "*.kt" -type f -exec sed -i "s/import kotlinx.parcelize.Parcelize/g" {} \;

More info about "find"

Freelancer and open source developer, growing my skills one byte a time :)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store