The 100 most popular Android applications have been installed 54 billion times (as of December 2018). And 85% of those apps contain native code with 1000+ individual native libraries. If you’ve worked on any of those 100 applications, or on similar large applications, that’s a lot of opportunity for something to go wrong!
The previous post in the series showed R8 (and D8) invoking string methods at compile-time when the inputs were all constants. R8 is able to do this because the content of constant strings is available inside the bytecode. That post also claimed that strings are the only non-primitive type that can be manipulated like this at compile-time.
Reified: made (something abstract) more concrete or real. This keyword in Kotlin makes Kotlin a much better language for Android development.
Big class hierarchies are out of fashion, an item of the book Effective Java written by Joshua Bloch suggests to favor composition over inheritance. But sometimes a class hierarchy can be useful to model the data in an application, if used with attention it can simplify the code and avoid duplication without increasing the complexity.
I would like to walk you through setting up a simple Android Native Activity. I will walk through the basic setup, and try to give you the tools you need to move forward.