I am a 60-year old Linux guru: coding Bismon (documented here) and using and coding on Unix since 1987 (SunOS3.2) and Linux since 1993 (but I never used Windows, and very probably never will). Of course, I do like command line interfaces. My sight is not very good but did improve (I got cataract surgery a few months ago). BTW, I did contribute to GCC plugin system thru GCC MELT (an obsolete Lisp-like DSL -that I designed and implemented- to extend GCC)
For my 60 years birthday, my grown-up kids gave me a tablet: Huawei MediaPad M5 (Android 8) which I completed with a Logitech bluetooth physical keyboard.
I want to understand much more how Android works. Of course it runs a Linux kernel (so same syscalls(2)), with a strange bionic libc. I knew (and wrote a technical report - some internal survey document) the internals of JVM and JNI in 2001. I do know a bit of Java.
I don't have the time to study all the source code of the open source parts of Android. I probably would have the skills to do that, but not the motivation and time.
It seems that Android is using setuid & chroot techniques quite differently than usual Linux distributions do. Where is that documented? Apparently, each JVM (for every Android app) is running under its own uid.
I would like to be able to code small GPLv3+ applications for Android. What do I need to learn. I just did download the SDK tools for my Linux AMD2970 desktop.
What are the next steps? I know that Qt has been ported to Android and wish to code for it.
What would be the Android equivalent of the ALP book to code Android applications with both Java and C++ (Android NDK). Or where is the equivalent of section 3 of man pages for Android? I am considering cross-compiling musl-libc for my tablet.
I am afraid of rooting my brand new tablet (that could lost the warranty). I might be tempted to install some Debian-like thing on it within a year. Is that reasonable?
I might port SBCL to my tablet (if that is easy, which I don't know).
PS. I am a free software enthusiast.