You don't need a framework to inject dependencies - DI is really just allowing dependencies to be specified rather than being baked in.
In order to test our unreleased pricing code we want a version of the app that differs from the production version. Instead of introducing a framework to manage the dependencies, we just extract a function that builds the app from its components, and use default arguments for the production configuration.
If you like this, you’ll probably like the book Java to Kotlin, A Refactoring Guidebook
http://java-to-kotlin.dev.