About Android:
Android is a special case in a lot of things.
Behind the screens, iOS runs on BSD in Linux compatibility mode, just because that has a commercial license. You don't have to publish your changes and you can ask money for them.
Android uses Linux as well, so it seems that it is very comparable. But that's not the case. Because Android runs in the Dalvik JVM. It is completely written in Java.
For example, if you want to play a video on Android, you need a Java application, that creates a Java Framework Media Player.
(https://quandarypeak.com/wp-content/uploads/android-media-player-architecture.png)
If you would want to use real native code (ARM instructions), you would have to supply an IPC and JNI interface, and still need a Java application on top.
So, for all intents and purposes, Java bytecode is the native code on the Android platform.
And, FPC 3.0 has that as a compilation target.
But there is more. While you would think, that writing native applications on Android gives you more control, Google has created their own platform: Google Play Services. That is what you need to interface to use the specific Android services. And you do that through Java as well.
To recap, as a stack:
Your application
Android Framework
Dalvik JVM
JNI
Google Play Services
IPC Framework
Linux
And if you want to create IPC extensions, you can do that with FPC as well. It's a different target platform, but that doesn't matter.