{"id":7884,"date":"2025-11-29T07:32:16","date_gmt":"2025-11-29T06:32:16","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=7884"},"modified":"2026-02-13T08:50:19","modified_gmt":"2026-02-13T07:50:19","slug":"customized-android","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/angepasstes-android\/","title":{"rendered":"Customized Android"},"content":{"rendered":"<h2>Ein Tauchgang in die Untiefen der Android-Anpassungsarchitektur<\/h2>\n<p style=\"text-align: left;\" align=\"center\">Autor: Martin Becker, Fraunhofer Institut f\u00fcr Experimentelles Software Engineering (IESE)<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2017<\/h3>\n<p>Das Android&#8211;Betriebssystem wird seit Jahren in einer Vielzahl von eingebetteten Systemen eingesetzt. Dabei kann es hochgradig und weitreichend an die spezifischen Einsatzkontexte angepasst werden. Dies gelingt durch ein ausgefeiltes Zusammenspiel von unterschiedlichen Mechanismen auf verschiedenen Systemebenen. Diese Konfigurations- und Anpassungsarchitektur ist ein sehr guter Ideengeber, wie man in der eigenen Systemlandschaft notwendige Anpassungen effizient umsetzen und beherrschen kann. Leider ist es nicht ganz einfach, sich einen entsprechenden \u00dcberblick zu verschaffen. Der Beitrag beleuchtet daher, welche Arten von Anpassungen in Android unterst\u00fctzt werden und wie diese in der Android-Architektur umgesetzt sind.<\/p>\n<h2>Motivation<\/h2>\n<p>Der Bedarf an Softwarel\u00f6sungen, die passgenau auf den Kundenbedarf zugeschnitten sind, steigt ungebremst. Im Entwicklungsalltag stellt sich hier oftmals die Frage, wie man die notwendigen Anpassungen geschickt unterst\u00fctzen kann. In fr\u00fcheren Beitr\u00e4gen haben wir hierzu typische Mechanismen und Architekturen betrachtet. In diesem Beitrag beleuchten wir, wie die notwendigen Anpassungen im Open-Source-Betriebssystem Android unterst\u00fctzt werden.<\/p>\n<p>Android wird seit einigen Jahren in einer Vielzahl von eingebetteten Systemen sehr erfolgreich eingesetzt. Neben der mobilen Unterhaltungselektronik finden sich auch Anwendungen im Automobilbereich und der Gesundheitsversorgung [1]. Die Codebasis von Android ist sehr gro\u00df und umfasst einen erheblichen Anteil von anderen Open-Source-Projekten. Der breite Einsatz von Android l\u00e4sst vermuten, dass es hochgradig an die spezifischen Einsatzkontexte angepasst werden kann.<\/p>\n<p>Neben einer Vielzahl von Hardwareplattformen werden auch weitreichende Anpassungen des Funktionsumfangs unterst\u00fctzt. Dies gelingt durch ein ausgefeiltes Zusammenspiel von unterschiedlichen Mechanismen auf verschiedenen Ebenen. Diese Konfigurations- und Anpassungsarchitektur ist ein guter Ideengeber, wie man in der eigenen Systemlandschaft notwendige Anpassungen effizient umsetzen und beherrschen kann. Leider ist es nicht ganz so einfach, sich einen entsprechenden \u00dcberblick zu verschaffen. Um hier Abhilfe zu leisten, haben wir das Android-Buildsystem tiefergehend analysiert. Dieser Beitrag stellt die Analyseergebnisse aus [2][3] kurz vor. Er beleuchtet dabei, welche Arten von Anpassungen in Android unterst\u00fctzt werden und wie diese in der Android-Anpassungsarchitektur umgesetzt sind.<\/p>\n<h2>Android Code-Repository<\/h2>\n<p>Unserer Analyse liegt das Code-Repository von Android 6 [4] zugrunde. Obwohl Android eine Vielzahl von anderen Open-Source-Projekten verwendet, haben wir das komplette Code-Repository analysiert. Der Repository-Inhalt ist wie in Abb. 1 (s.\u00a0<a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) dargestellt sehr gro\u00df und im Hinblick auf die verwendeten Dateitypen auch recht heterogen. Offenkundig kommen mit Java, C, C++, Python, Go und Javascript eine Reihe von Programmiersprachen zum Einsatz, wobei der Gro\u00dfteil von Android in C\/C++ programmiert ist. Der Buildprozess wird \u00fcber 4475 Makefiles gesteuert \u2013 eine durchaus stattliche Anzahl, die sich nicht einfach \u00fcberblicken l\u00e4sst.<\/p>\n<p>Der Code ist grob \u00fcber drei Ebenen verteilt (s.\u00a0<a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>, Abb. 2).<\/p>\n<p>Die Android Configuration-Ebene umfasst Produkt- und Boardkonfigurationen. Letztere befinden sich haupts\u00e4chlich im Ordner\u00a0<span class=\"quellcode\">Device<\/span>. Einige generische Produktkonfigurationen finden sich in\u00a0<span class=\"quellcode\">\/build\/target\/product<\/span>. Die entsprechenden Configuration-Items werden in Makefiles definiert, welche sich typischerweise in\u00a0<span class=\"quellcode\">device\/&lt;vendor_name&gt;\/&lt;device_name&gt;<\/span>\u00a0befinden. Dadurch lassen sich diese im Buildsystem und im Quellcode verwenden. Produktkonfigurationen umfassten generelle Produktinformationen, wie Produktname und Hersteller, sowie eine Liste von Modulen, die f\u00fcr ein Ger\u00e4t ben\u00f6tigt werden. Boardkonfigurationen werden immer in einem Makefile namens\u00a0<span class=\"quellcode\">BoardConfig.mk<\/span>\u00a0festgelegt, in denen eine Vielzahl von Parametern rund um Peripherieger\u00e4te auf dem Board gesetzt werden. Diese Parameter werden in den Codemodulen verwendet.<\/p>\n<p>Das Android Buildsystem besteht aus zwei Teilen: i) globalen Builddateien, die den \u00fcbergeordneten Buildprozess festlegen und ii) lokalen Builddateien, die einzelne Module bauen. Wie in Abb. 2 dargestellt, befinden sich die globalen Builddateien im\u00a0<span class=\"quellcode\">build<\/span>\u00a0Ordner. Das Makefile\u00a0<span class=\"quellcode\">main.mk<\/span>\u00a0stellt den Einstiegspunkt in den Buildprozess dar. Das Makefile\u00a0<span class=\"quellcode\">product.mk<\/span>\u00a0definiert Hilfsfunktionen, z.B. um Produktabh\u00e4ngigkeiten aufzul\u00f6sen. In jedem Codemodul existiert ein Makefile namens\u00a0<span class=\"quellcode\">Android.mk<\/span>, welches das Modul baut. Makefiles des Buildsystems k\u00f6nnen Konfigurationsvariablen, die in den Konfigurationsdateien definiert wurden, verwenden.<\/p>\n<p>Android Quellcode ist in Module strukturiert, die sich in getrennten Ordnern befinden. Die Ordner sind dabei hierarchisch geschachtelt. Einige davon geh\u00f6ren zur Android Basisinfrastruktur (z.B. der Linux Kern), andere geh\u00f6ren zur Applikationsunterst\u00fctzung (z.B. Phone). Einige Module sind Hersteller-spezifisch und befinden sich deshalb im\u00a0<span class=\"quellcode\">device<\/span>\u00a0Ordner.<\/p>\n<h2>Anpassungen auf der Konfigurationsebene<\/h2>\n<p>Konfigurationen werden \u00fcber Makefile-Variablen definiert, die Software- und Hardware-Einstellungen vornehmen. Die entsprechenden Makefiles befinden sich im\u00a0<span class=\"quellcode\">device<\/span>\u00a0Ordner. Insgesamt haben wir mit einem selbstgebauten Parser 206 Konfigurationsvariablen gefunden. Die meisten Variablen folgen der Namenskonvention\u00a0<span class=\"quellcode\">PRODUCT_*<\/span>\u00a0oder\u00a0<span class=\"quellcode\">BOARD_*<\/span>. Unsere Analyse zeigte, dass ein Gro\u00dfteil der Produktvariablen lediglich zu Beschreibungszwecken verwendet wird. Im Gegensatz dazu, werden die Boardvariablen zur Steuerung des Buildprozesses verwendet. Dabei wird eine recht kleine Anzahl von Variablen h\u00e4ufig referenziert, w\u00e4hrend die Mehrzahl der Variablen nur an wenigen Stellen verwendet wird. Hier hinterl\u00e4sst das Buildsystem einen recht aufger\u00e4umten Eindruck. Eine \u00dcbersicht hierzu findet sich in Tab. 1. Dabei werden Referenzen im globalen\u00a0<span class=\"quellcode\">build<\/span>\u00a0Ordner, in Hersteller-spezifischen Modulen im\u00a0<span class=\"quellcode\">device<\/span>\u00a0Ordner sowie sonstigen Modulen unterschieden. Zu den am meistverwendeten Konfigurationsvariablen z\u00e4hlen\u00a0<span class=\"quellcode\">TARGET_ARCH<\/span>\u00a0und\u00a0<span class=\"quellcode\">TARGET_BOARD_PLATFORM<\/span>, was letztlich zu erwarten war.<\/p>\n<p>&nbsp;<\/p>\n<div align=\"center\">\n<table border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<p align=\"left\"><strong># Config References<\/strong><\/p>\n<\/td>\n<td width=\"32\">\n<p align=\"center\">1<\/p>\n<\/td>\n<td width=\"35\">\n<p align=\"center\">2~3<\/p>\n<\/td>\n<td width=\"41\">\n<p align=\"center\">4~50<\/p>\n<\/td>\n<td>\n<p align=\"center\">51~246<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>Sum<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong># Configs in Global<\/strong><\/p>\n<\/td>\n<td width=\"32\">\n<p align=\"center\">19<\/p>\n<\/td>\n<td width=\"35\">\n<p align=\"center\">23<\/p>\n<\/td>\n<td width=\"41\">\n<p align=\"center\">41<\/p>\n<\/td>\n<td>\n<p align=\"center\">3<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>86<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong># Configs in Device<\/strong><\/p>\n<\/td>\n<td width=\"32\">\n<p align=\"center\">6<\/p>\n<\/td>\n<td width=\"35\">\n<p align=\"center\">6<\/p>\n<\/td>\n<td width=\"41\">\n<p align=\"center\">4<\/p>\n<\/td>\n<td>\n<p align=\"center\">0<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>16<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><strong># Configs in Others<\/strong><\/p>\n<\/td>\n<td width=\"32\">\n<p align=\"center\">38<\/p>\n<\/td>\n<td width=\"35\">\n<p align=\"center\">28<\/p>\n<\/td>\n<td width=\"41\">\n<p align=\"center\">25<\/p>\n<\/td>\n<td>\n<p align=\"center\">3<\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>94<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><em>Tab. 1: Referenzen auf Konfigurationsvariablen im Buildsystem<\/em><\/p>\n<p>Abb. 3\u00a0(s.\u00a0<a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt eine typische Verwendung der Konfigurationsvariablen in den Makefiles. Hier werden Abh\u00e4ngigkeiten rund um dex-preoptimization<a title=\"\" href=\"https:\/\/www.microconsult.de\/2036-0-Angepasstes-Android---ESE-2017.html#_ftn1\" name=\"_ftnref1\"><\/a>\u00a0umgesetzt. In Abh\u00e4ngigkeit vom Wert von \u00fcbergeordneten Variablen wird der Wert von anderen Variablen gesetzt.<\/p>\n<p>Zwischen den Produktkonfigurationen wird eine Art von Vererbung unterst\u00fctzt. Dabei kann ein Makefile von mehreren Parent-Makefiles Einstellungen erben. Dies wird durch die Hilfsfunktion\u00a0<span class=\"quellcode\">inherit-produc<\/span>t in\u00a0<span class=\"quellcode\">product.mk<\/span>\u00a0erm\u00f6glicht. Hierdurch lassen sich gemeinsame Einstellungen einfacher wiederverwenden. Dabei sind Einstellungen in den \u00fcbergeordneten Makefiles als Default-Werte zu sehen, die in spezifischeren Produktkonfigurationen \u00fcberschrieben werden k\u00f6nnen. Der Vererbungsgraph zwischen den Produktkonfigurationsdateien ist in Abb. 4 dargestellt (s.\u00a0<a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>). Er l\u00e4sst sich mit\u00a0<span class=\"quellcode\">make product-graph<\/span>\u00a0erstellen. Wie man sieht, kommt dabei auch an mehreren Stellen eine Mehrfachvererbung zum Einsatz. Hier muss darauf geachtet werden, dass die Belegungen richtig \u00fcberlagert werden.<\/p>\n<h2>Anpassungen auf der Buildsystem-Ebene<\/h2>\n<p>Im Gegensatz zu anderen Make-basierten Buildsystemen werden in Android Makefiles nicht rekursiv aufgerufen. Globale Makefiles tragen zun\u00e4chst alle\u00a0<span class=\"quellcode\">Android.mk<\/span>\u00a0Dateien innerhalb der Code-Basis zusammen, inkludieren deren Inhalt und f\u00fchren dann die Make-Anweisungen aus. Wieso wird das so gemacht? Es erm\u00f6glicht eine einfache Analyse und Optimierung des Buildprozesses. Doch dazu sp\u00e4ter mehr.<\/p>\n<p>In den Modul-Makefiles werden dann unter anderem die Dateien ausgew\u00e4hlt, aus denen das Modul gebaut wird. Abb. 5 (s.\u00a0<a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) zeigt hierf\u00fcr ein typisches Beispiel. Es handelt sich dabei um eine Art von Polymorphismus auf Dateiebene. Dateien, die optional oder alternativ zum Bauen verwendet werden, lassen sich dadurch einfach ermitteln. Man verzichtet wohl gezielt auf die Verwendung des Pr\u00e4prozessors (#ifdefs) zugunsten von Module-Replacement, wodurch sich die Verst\u00e4ndlichkeit der Quellcode Dateien erh\u00f6ht.<\/p>\n<p>Um die Anpassungsarchitektur besser zu verstehen, haben wir die Auswahl-Konstrukte und die verwendeten Variablen n\u00e4her analysiert. Hierf\u00fcr haben wir das Kati-Werkzeug [5] etwas modifiziert und anschlie\u00dfend bei der Analyse eingesetzt. Bei Kati handelt es sich um ein Open-Source-Werkzeug von Google, das Makefiles parst und diese in Ninja-Dateien umwandelt. Mit den Ninja-Dateien kann Android dann optimiert gebaut werden, wodurch der Buildprozess deutlich beschleunigt wird &#8211; ein durchaus interessanter Ansatz. Wir haben dabei 682 Buildvariablen gefunden, die sich in 4 Kategorien einteilen lassen: Produktkonfiguration, Boardkonfiguration, Build-OS und Build-Details. Abb. 7 (s.\u00a0<a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) gibt einen \u00dcberblick, ob diese Variablen im Buildsystem oder im Quellcode zum Einsatz kommen.<\/p>\n<h2>Anpassungen auf der Code-Ebene<\/h2>\n<p>Da Androids Konfigurationsvariablen in Makefiles definiert werden und nicht in Header-Dateien, stehen sie dem Pr\u00e4prozessor bei der Verarbeitung der Quellcode-Dateien nicht direkt zur Verf\u00fcgung, sondern m\u00fcssen explizit \u00fcbergeben werden. Ein entsprechendes Beispiel ist in Abb. 8\u00a0(s.\u00a0<a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) dargestellt: In Abh\u00e4ngigkeit von \u00fcbergeordneten Konfigurationsvariablen werden zun\u00e4chst untergeordnete Konfigurationsvariablen gesetzt. Anschlie\u00dfend werden im Buildsystem in Abh\u00e4ngigkeit von den untergeordneten Konfigurationsvariablen Compilerflags gesetzt und dar\u00fcber die Werte der Variablen an den Pr\u00e4prozessor \/ Compiler \u00fcbergeben. Zun\u00e4chst erscheint dies vielleicht etwas umst\u00e4ndlich.<\/p>\n<p>Bei n\u00e4herer Betrachtung zeigt sich allerdings eine klare Konfigurationsarchitektur, welche die Anwendungskonfiguration klar von der technischen Konfiguration der Module separiert. Da die entsprechenden Zusammenh\u00e4nge nur \u00fcber die Makefiles zum Ausdruck kommen, l\u00e4sst sich die Anpassungsarchitektur recht gut werkzeuggest\u00fctzt analysieren, optimieren und weiterentwickeln. Hier kann man f\u00fcr gro\u00dfe Projekte sicherlich etwas von Android lernen. Bei Bedarf ist das Kati-Werkzeug [5] hier sicherlich ein guter Startpunkt. Wir haben es etwas erweitert, um so an weitere Informationen zu gelangen, die bei der Analyse des Buildsystems im Werkzeug vorliegen.<\/p>\n<h2>Zusammenfassung<\/h2>\n<p>Den Android-Entwicklern gelingt es ein breites Ma\u00df an Anpassungen basierend auf einer heterogenen Codebasis, die sich nebenl\u00e4ufig weiterentwickelt, zu unterst\u00fctzen. Damit liegt die Vermutung nahe, dass die Anpassungs- und Konfigurationsarchitektur von Android sicherlich ein sehr guter Ideengeber f\u00fcr Praktiker ist, die im Entwicklungsalltag mit der Variantenbeherrschung k\u00e4mpfen. Da es leider nicht ganz einfach ist, sich einen entsprechenden \u00dcberblick zu verschaffen, haben wir eine entsprechende Analyse durchgef\u00fchrt und in [2][3] umfassend dokumentiert.<\/p>\n<p>Die Analyse f\u00fchrte bei uns zu folgenden Erkenntnissen: Die Anpassungsunterst\u00fctzung in Android kommt deutlich einfacher daher als wir das erwartet hatten. Statt ausgewieften Konfigurationsmodellen, -techniken und -werkzeugen sowie klaren Codierstandards, kommen eher die \u00fcblichen Verd\u00e4chtigen zum Einsatz. Es f\u00e4llt auf, dass die 3-Ebenen-Konfigurations- und Anpassungsarchitektur sehr klar ist und sich im Wesentlichen auf Makefiles st\u00fctzt. Die Konfiguration aus Anwendersicht ist strikt von der technischen Konfiguration der Module getrennt. Ein Muster, was uns auch schon an anderen Stellen begegnet ist. Die Abh\u00e4ngigkeiten zwischen Anwendungskonfiguration, Buildsystem und Quellcode steckt in den Makefiles und kann unter Verwendung des Kati-Werkzeuges extrahiert werden. In den n\u00e4chsten Releases von Android soll Make durch Kati\/Ninja ersetzt werden. Am diesem Beispiel zeigt sich auch, wie die Transition zwischen verschiedenen Buildsystemen auch in komplexen Systemen gelingen kann.<\/p>\n<h2>Danksagung<\/h2>\n<p>Die vorgestellten Analysen wurden von Nicolas Fu\u00dfbender im Rahmen eines Studentenprojektes der TU Kaiserslautern am Fraunhofer IESE durchgef\u00fchrt. Vasil Tenev und Dr. Bo Zhang haben die Durchf\u00fchrung der Arbeit ma\u00dfgeblich unterst\u00fctzt.<\/p>\n<h2>Literatur- und Quellenverzeichnis<\/h2>\n<p>[1]\u00a0\u00a0<a href=\"https:\/\/www.statista.com\/statistics\/278305\/daily-activations-of-android-devices\/\" target=\"_blank\" rel=\"noopener\">Android Device Statistics<\/a><\/p>\n<p>[2]\u00a0 Nicolas Fu\u00dfberger: &#8222;<a href=\"https:\/\/wwwagse.informatik.uni-kl.de\/publication\/papers\/Fussberger2016.pdf\" target=\"_blank\" rel=\"noopener\">Analyzing the Variability Realization in Androi<\/a>d&#8220;, TU Kaiserslautern<\/p>\n<p>[3]\u00a0 Nicolas Fu\u00dfberger, Bo Zhang, and Martin Becker: &#8222;<a href=\"https:\/\/doi.org\/10.1145\/3106195.3106213\" target=\"_blank\" rel=\"noopener\">A Deep Dive into Android&#8217;s Variability Realizations<\/a>&#8222;, in Proceedings of the 21st International Systems and Software Product Line Conference (SPLC &#8217;17). DOI<\/p>\n<p>[4]\u00a0\u00a0<a href=\"https:\/\/github.com\/%E2%80%8Bandroid\/%E2%80%8Bplatform_development\" target=\"_blank\" rel=\"noopener\">Android Source Repository<\/a><\/p>\n<p>[5]\u00a0\u00a0<a href=\"https:\/\/github.com\/%E2%80%8Bgoogle\/%E2%80%8Bkati\" target=\"_blank\" rel=\"noopener\">Kati Tool<br \/>\n<\/a><\/p>\n<h2>Autor<\/h2>\n<p>Dr. Martin Becker ist Informatiker und leitet die Abteilung Embedded Systems Engineering am Fraunhofer IESE. In einer Vielzahl von Forschungs- und Industrieprojekten hat er in den letzten 17 Jahren vielf\u00e4ltige Erfahrungen mit Varianten-Management in verschiedenen Anwendungsgebieten gesammelt, sowie neue Methoden, Techniken und Werkzeuge auf diesem Gebiet entwickelt.<\/p>\n<p><a title=\"Fachinfo_ESE_angepasstes-android_fraunhofer-iese_becker\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_angepasstes_android_fraunhofer-iese_becker.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF downloaden<\/strong><\/a><\/p>\n<hr \/>\n<h2>Open Source &#8211; unsere Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"MicroConsult Training\" href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Open Source \/ Embedded Software Engineering.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Open Source &#8211; Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema\u00a0Open Source \/ Embedded Software Engineering steht\u00a0<a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>hier\u00a0<\/strong><\/a>f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>Fachwissen zu weiteren Themen unseren Portfolios finden Sie <a title=\"MicroConsult Fachwissen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Tauchgang in die Untiefen der Android-Anpassungsarchitektur Autor: Martin Becker, Fraunhofer Institut f\u00fcr Experimentelles Software Engineering (IESE) Beitrag &#8211; Embedded Software Engineering Kongress 2017 Das Android&#8211;Betriebssystem wird seit Jahren in einer Vielzahl von eingebetteten Systemen eingesetzt. Dabei kann es hochgradig und weitreichend an die spezifischen Einsatzkontexte angepasst werden. Dies gelingt durch ein ausgefeiltes Zusammenspiel von [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-7884","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Angepasstes Android - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/customized-android\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Angepasstes Android - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Ein Tauchgang in die Untiefen der Android-Anpassungsarchitektur Autor: Martin Becker, Fraunhofer Institut f\u00fcr Experimentelles Software Engineering (IESE) Beitrag &#8211; Embedded Software Engineering Kongress 2017 Das Android&#8211;Betriebssystem wird seit Jahren in einer Vielzahl von eingebetteten Systemen eingesetzt. Dabei kann es hochgradig und weitreichend an die spezifischen Einsatzkontexte angepasst werden. Dies gelingt durch ein ausgefeiltes Zusammenspiel von [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/customized-android\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T06:32:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-13T07:50:19+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"Angepasstes Android\",\"datePublished\":\"2025-11-29T06:32:16+00:00\",\"dateModified\":\"2026-02-13T07:50:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/\"},\"wordCount\":1830,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/\",\"name\":\"Angepasstes Android - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-29T06:32:16+00:00\",\"dateModified\":\"2026-02-13T07:50:19+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/angepasstes-android\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Angepasstes Android\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Customized Android - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/customized-android\/","og_locale":"en_GB","og_type":"article","og_title":"Angepasstes Android - MicroConsult Academy GmbH","og_description":"Ein Tauchgang in die Untiefen der Android-Anpassungsarchitektur Autor: Martin Becker, Fraunhofer Institut f\u00fcr Experimentelles Software Engineering (IESE) Beitrag &#8211; Embedded Software Engineering Kongress 2017 Das Android&#8211;Betriebssystem wird seit Jahren in einer Vielzahl von eingebetteten Systemen eingesetzt. Dabei kann es hochgradig und weitreichend an die spezifischen Einsatzkontexte angepasst werden. Dies gelingt durch ein ausgefeiltes Zusammenspiel von [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/customized-android\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-29T06:32:16+00:00","article_modified_time":"2026-02-13T07:50:19+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/angepasstes-android\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/angepasstes-android\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"Angepasstes Android","datePublished":"2025-11-29T06:32:16+00:00","dateModified":"2026-02-13T07:50:19+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/angepasstes-android\/"},"wordCount":1830,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/angepasstes-android\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/angepasstes-android\/","url":"https:\/\/www.microconsult.de\/angepasstes-android\/","name":"Customized Android - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-29T06:32:16+00:00","dateModified":"2026-02-13T07:50:19+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/angepasstes-android\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/angepasstes-android\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/angepasstes-android\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Angepasstes Android"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7884","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=7884"}],"version-history":[{"count":6,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7884\/revisions"}],"predecessor-version":[{"id":11705,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7884\/revisions\/11705"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=7884"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=7884"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=7884"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}