Difference between revisions of "Android application frameworks overview"

[quality revision] [quality revision]
m
m
 

The diagram below gives an overview of the Android application frameworks (Linux user space components) that rely on Linux kernel.

This Linux kernel is based on the Android Common Kernel[1] following Google recommendation for its configuration[2].

It shows the main components grouped per functional domain, however it is not exhaustive.
OpenSTLinux OE legend.png

The Android framework is structured in several layers:

  • hardware interfaces providing a standard way to configure the underlaying driver, based on the Android HIDL (Hardware Interface Definition Language) mechanism
  • the Android core (ART virtual machine, useful daemons including vold, adbd, and debuggerd, and system services)
  • Android services (providing interfaces to the application = SDK)
  • Android applications (including the launcher)

The Android services are often implemented partly in native cpp, and partly in Java. The JNI (Java Native Interface) IPC mechanism is available to allow communication between the two worlds.

In addition to the standard Android services, a proprietary coprocessor service for Android has been introduced (for development purposes only). The CoproService is composed of two parts:

  • firmware management (check running firmware, start/stop firmware, get/set the firmware name)
  • TTY management (open/close and read/write the TTY interface). You must implement your own protocol on top of this.

References[edit]

Applicable for STM32MP13x lines, STM32MP15x lines

Warning white.png Warning
STM32MPU Embedded Software distribution for Android™ is no more supported by ST. You can contact our ST partner, Witekio, who can help you to port and maintain it on STM32MP15 platform.


The diagram below gives an overview of the Android application frameworks (Linux user space components) that rely on [[STM32MP15_Linux_kernel_overview|Linux kernel]].

This Linux kernel is based on the Android Common Kernel<ref>AOSP: https://android.googlesource.com/kernel/common/</ref> following Google recommendation for its configuration<ref>AOSP: https://android.googlesource.com/kernel/configs/</ref>.
<br>

It shows the main components grouped per functional domain, however it is not exhaustive.
<br>


[[File:Android_architecture_overview.png|1000px|link=|center]]<br>

[[File:OpenSTLinux_OE legend.png|link=|center]]
<br>


The Android framework is structured in several layers:
* hardware interfaces providing a standard way to configure the underlaying driver, based on the Android HIDL (Hardware Interface Definition Language) mechanism
* the Android core (ART virtual machine, useful daemons including vold, adbd, and debuggerd, and system services)
* Android services (providing interfaces to the application = SDK)
* Android applications (including the launcher)

The Android services are often implemented partly in native cpp, and partly in Java. The JNI (Java Native Interface) IPC mechanism is available to allow communication between the two worlds.

In addition to the standard Android services, a proprietary coprocessor service for Android has been introduced (for development purposes only). The CoproService is composed of two parts:
* firmware management (check running firmware, start/stop firmware, get/set the firmware name)
* TTY management (open/close and read/write the TTY interface). You must implement your own protocol on top of this.

== References ==<references/>

<noinclude>

[[Category:Applications and UI <noinclude>{{ApplicableFor
|MPUs list=STM32MP13x, STM32MP15x
|MPUs checklist=STM32MP13x, STM32MP15x
}}</noinclude>

{{Warning|{{EcosystemFlow/Archives | custom=Android | flow=v2}}}}
<noinclude>

[[Category:Application frameworks]]
[[Category:Android]]
{{PublicationRequestId |12861 | 30Jul'19}}</noinclude>
(8 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The diagram below gives an overview of the Android application frameworks (Linux user space components) that rely on [[STM32MP15_Linux_kernel_overview|Linux kernel]].
+
<noinclude>{{ApplicableFor
 
+
|MPUs list=STM32MP13x, STM32MP15x
This Linux kernel is based on the Android Common Kernel<ref>AOSP: https://android.googlesource.com/kernel/common/</ref> following Google recommendation for its configuration<ref>AOSP: https://android.googlesource.com/kernel/configs/</ref>.
+
|MPUs checklist=STM32MP13x, STM32MP15x
 
+
}}</noinclude>
<br>
+
{{Warning|{{EcosystemFlow/Archives | custom=Android | flow=v2}}}}
It shows the main components grouped per functional domain, however it is not exhaustive.
 
 
 
<br>
 
 
 
[[File:Android_architecture_overview.png|1000px|link=|center]]
 
<br>
 
[[File:OpenSTLinux_OE legend.png|link=|center]]
 
 
 
<br>
 
 
 
The Android framework is structured in several layers:
 
* hardware interfaces providing a standard way to configure the underlaying driver, based on the Android HIDL (Hardware Interface Definition Language) mechanism
 
* the Android core (ART virtual machine, useful daemons including vold, adbd, and debuggerd, and system services)
 
* Android services (providing interfaces to the application = SDK)
 
* Android applications (including the launcher)
 
 
 
The Android services are often implemented partly in native cpp, and partly in Java. The JNI (Java Native Interface) IPC mechanism is available to allow communication between the two worlds.
 
 
 
In addition to the standard Android services, a proprietary coprocessor service for Android has been introduced (for development purposes only). The CoproService is composed of two parts:
 
* firmware management (check running firmware, start/stop firmware, get/set the firmware name)
 
* TTY management (open/close and read/write the TTY interface). You must implement your own protocol on top of this.
 
 
 
== References ==
 
<references/>
 
   
 
<noinclude>
 
<noinclude>
[[Category:Applications and UI frameworks]]
+
[[Category:Application frameworks]]
 
[[Category:Android]]
 
[[Category:Android]]
 
{{PublicationRequestId |12861 | 30Jul'19}}
 
{{PublicationRequestId |12861 | 30Jul'19}}
 
</noinclude>
 
</noinclude>