{"id":3184,"date":"2017-06-12T10:36:25","date_gmt":"2017-06-12T09:36:25","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=3184"},"modified":"2026-03-17T08:32:47","modified_gmt":"2026-03-17T07:32:47","slug":"migrating-an-embedded-android-setup-part-1","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/","title":{"rendered":"Migrating an embedded Android setup: What could possibly go wrong? (Part 1)"},"content":{"rendered":"<p>Android updates are rare, especially for development boards. We were running such a deprecated board once built to demonstrate our knowledge in embedded Android. Since we didn&#8217;t want to rely on a deprecated showcase, we decided to build a completely new setup bringing together the old show case, an ordinary Android extended with a line LCD display, usable via an SDK-Add-on, and an integrated sensor, previously <a href=\"https:\/\/www.inovex.de\/blog\/android-sensor-integration-part-1-sensor-stack-and-kernel-module\/\" target=\"_blank\" rel=\"noopener noreferrer\">described here<\/a>.<\/p>\n<p><!--more--><\/p>\n<p>We wanted to base the new showcase on a modern development board for which at least sources for Android 5 were available, a touch display, the Grove-LCD display and finally the sensor integration.<\/p>\n<p>Simple enough, right? We&#8217;d just have to add the old code to the new Android version \u2013 Nope! That would have been too easy. Let&#8217;s have a look at everything that went wrong.<\/p>\n<p>At first, a new development board was needed. We chose the Wandboard Quad because Android 5 was available with 6 already announced. Indeed, Android 6 was released when we finally started development (let&#8217;s hope they keep up the support!).<\/p>\n<h2>Part 1 \u2013 Adding a touch display via HDMI? Just give me 5 minutes \u2026<\/h2>\n<p>So we had a board and wanted to attach a touch display. Due to some issues and limitations of the Wandboard\u2019s CPU we were limited to an HDMI connection and for simplicity the display should have a USB touch controller, both of which limited our choice. On the first try, the picture was distorted and we were not able to adjust the touch driver, so some UI elements were not touchable. The next try seemed to work much better\u2014sharper picture, much better touch controller\u2014while testing it with a Raspberry Pi. When we switched to the Wandboard we got a picture only while the boot loader was active, afterwards things went south.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-3211\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display-1024x768.jpg\" alt=\"The working display\" width=\"800\" height=\"600\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display-1024x768.jpg 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display-300x225.jpg 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display-768x576.jpg 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display-1536x1152.jpg 1536w, https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display-400x300.jpg 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display-360x270.jpg 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/display.jpg 1920w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n<p>Due to the display&#8217;s advantages, we absolutely wanted to run this one, so a long frustrating time of debugging started.<\/p>\n<p>Normally, Linux gets its parameters, amongst them the screen settings, as boot parameters. So we tried to modify them, but they were ignored. Analysing the dmesg logs brought us on the right track: the frame buffer, the Linux graphics memory. So we looked up the display settings with<\/p>\n<pre class=\"lang:sh decode:true \">cat \/sys\/class\/graphics\/fb0\/modes<\/pre>\n<p>which returned only one resolution:<\/p>\n<pre class=\"lang:sh decode:true \">V:640x480p-60<\/pre>\n<p>This didn&#8217;t match our display&#8217;s resolution of 1024&#215;600 pixels. Hence, we needed to define a new one. The dmesg log helped us again with this string:<\/p>\n<pre class=\"lang:sh decode:true \">mxc_sdc_fb<\/pre>\n<p>. Grepping for this string in the kernel files brought us to the right directory and the file <span class=\"lang:sh decode:true crayon-inline \">kernel_imx\/drivers\/video\/mxc\/mxc_hdmi.c<\/span>. There, neatly at the file&#8217;s beginning, we found a definition for the one existing frame buffer mode.<\/p>\n<p>Now we needed just one more thing to add a suitable mode for our display\u2014the matching parameters. A frame buffer mode definition consists of a pile of weird looking numbers. How do we find the right ones? This brought us back to the boot loader. As you may remember I wrote that during u-boot a correct picture was display. We looked up the u-boot sources and found what we needed. With this knowledge, it was just 5 lines to change in the file<\/p>\n<pre class=\"lang:sh decode:true \">kernel_imx6\/drivers\/video\/mxc\/mxc_hdmi.c<\/pre>\n<p>for a cool working display:<\/p>\n<pre class=\"lang:c decode:true \" title=\"kernel_imx6\/drivers\/video\/mxc\/mxc_hdmi.c\">static const struct fb_videomode waveshare_mode = {\r\n\r\n  NULL, 60, 1024, 600, 13806, 150, 40, 21, 7, 60, 10, 0,\r\n\r\n  FB_VMODE_NONINTERLACED, 0\r\n\r\n};<\/pre>\n<p>And in the same file in the function mxc_hdmi_edid_rebuild_modelist (struct mxc_hdmi *hdmi):<\/p>\n<pre class=\"lang:c decode:true \" title=\"mxc_hdmi_edid_rebuild_modelist (struct mxc_hdmi *hdmi)\">fb_add_videomode(&amp;waveshare_mode, &amp;hdmi-&gt;fbi-&gt;modelist);<\/pre>\n<p>Touch support worked out of the box and no calibration was needed, so after rebuilding and flashing we were could continue our adventure with a working touchscreen.<\/p>\n<h2>Read on<\/h2>\n<p>In the next part we will port the kernel drivers to the new Android version before we have a look at the HAL and the Android framework. In the meantime, have a look at our <a href=\"https:\/\/www.inovex.de\/en\/our-services\/smart-devices-robotics\/\" target=\"_blank\" rel=\"noopener noreferrer\">Smart Devices division<\/a> and learn how you can join us as a software developer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Android updates are rare, especially for development boards. We were running such a deprecated board once built to demonstrate our knowledge in embedded Android. Since we didn&#8217;t want to rely on a deprecated showcase, we decided to build a completely new setup bringing together the old show case, an ordinary Android extended with a line [&hellip;]<\/p>\n","protected":false},"author":35,"featured_media":13054,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[74],"service":[420],"coauthors":[{"id":35,"display_name":"Anna-Lena Marx","user_nicename":"amarx"}],"class_list":["post-3184","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-iot","service-apps"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Migrating an embedded Android setup: what could possibly go wrong?<\/title>\n<meta name=\"description\" content=\"We migrated our embedded Android showcase to a new Version. In this five part series we document, what worked \u2013\u00a0and what went horribly wrong.\" \/>\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.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating an embedded Android setup: what could possibly go wrong?\" \/>\n<meta property=\"og:description\" content=\"We migrated our embedded Android showcase to a new Version. In this five part series we document, what worked \u2013\u00a0and what went horribly wrong.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-12T09:36:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T07:32:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2300\" \/>\n\t<meta property=\"og:image:height\" content=\"876\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Anna-Lena Marx\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting-1024x390.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Anna-Lena Marx\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Anna-Lena Marx\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/\"},\"author\":{\"name\":\"Anna-Lena Marx\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/b7d6fd8c3ec8972f3b14f0205e25d022\"},\"headline\":\"Migrating an embedded Android setup: What could possibly go wrong? (Part 1)\",\"datePublished\":\"2017-06-12T09:36:25+00:00\",\"dateModified\":\"2026-03-17T07:32:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/\"},\"wordCount\":636,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/android-embedded-porting.jpg\",\"keywords\":[\"IoT\"],\"articleSection\":[\"Applications\",\"English Content\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/\",\"name\":\"Migrating an embedded Android setup: what could possibly go wrong?\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/android-embedded-porting.jpg\",\"datePublished\":\"2017-06-12T09:36:25+00:00\",\"dateModified\":\"2026-03-17T07:32:47+00:00\",\"description\":\"We migrated our embedded Android showcase to a new Version. In this five part series we document, what worked \u2013\u00a0and what went horribly wrong.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/android-embedded-porting.jpg\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2017\\\/06\\\/android-embedded-porting.jpg\",\"width\":2300,\"height\":876,\"caption\":\"Porting an Android Embedded Setup\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migrating-an-embedded-android-setup-part-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migrating an embedded Android setup: What could possibly go wrong? (Part 1)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/b7d6fd8c3ec8972f3b14f0205e25d022\",\"name\":\"Anna-Lena Marx\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/44ab0d3916e62a17054b8e4cea92702db304b9dcb6dd28fb9915484c1830409b?s=96&d=retro&r=ga8cfb531252ec2ef604ef3033c45111b\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/44ab0d3916e62a17054b8e4cea92702db304b9dcb6dd28fb9915484c1830409b?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/44ab0d3916e62a17054b8e4cea92702db304b9dcb6dd28fb9915484c1830409b?s=96&d=retro&r=g\",\"caption\":\"Anna-Lena Marx\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/amarx\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migrating an embedded Android setup: what could possibly go wrong?","description":"We migrated our embedded Android showcase to a new Version. In this five part series we document, what worked \u2013\u00a0and what went horribly wrong.","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.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/","og_locale":"de_DE","og_type":"article","og_title":"Migrating an embedded Android setup: what could possibly go wrong?","og_description":"We migrated our embedded Android showcase to a new Version. In this five part series we document, what worked \u2013\u00a0and what went horribly wrong.","og_url":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2017-06-12T09:36:25+00:00","article_modified_time":"2026-03-17T07:32:47+00:00","og_image":[{"width":2300,"height":876,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting.jpg","type":"image\/jpeg"}],"author":"Anna-Lena Marx","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting-1024x390.jpg","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Anna-Lena Marx","Gesch\u00e4tzte Lesezeit":"3\u00a0Minuten","Written by":"Anna-Lena Marx"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/"},"author":{"name":"Anna-Lena Marx","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/b7d6fd8c3ec8972f3b14f0205e25d022"},"headline":"Migrating an embedded Android setup: What could possibly go wrong? (Part 1)","datePublished":"2017-06-12T09:36:25+00:00","dateModified":"2026-03-17T07:32:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/"},"wordCount":636,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting.jpg","keywords":["IoT"],"articleSection":["Applications","English Content","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/","url":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/","name":"Migrating an embedded Android setup: what could possibly go wrong?","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting.jpg","datePublished":"2017-06-12T09:36:25+00:00","dateModified":"2026-03-17T07:32:47+00:00","description":"We migrated our embedded Android showcase to a new Version. In this five part series we document, what worked \u2013\u00a0and what went horribly wrong.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting.jpg","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2017\/06\/android-embedded-porting.jpg","width":2300,"height":876,"caption":"Porting an Android Embedded Setup"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/migrating-an-embedded-android-setup-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Migrating an embedded Android setup: What could possibly go wrong? (Part 1)"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/b7d6fd8c3ec8972f3b14f0205e25d022","name":"Anna-Lena Marx","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/44ab0d3916e62a17054b8e4cea92702db304b9dcb6dd28fb9915484c1830409b?s=96&d=retro&r=ga8cfb531252ec2ef604ef3033c45111b","url":"https:\/\/secure.gravatar.com\/avatar\/44ab0d3916e62a17054b8e4cea92702db304b9dcb6dd28fb9915484c1830409b?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/44ab0d3916e62a17054b8e4cea92702db304b9dcb6dd28fb9915484c1830409b?s=96&d=retro&r=g","caption":"Anna-Lena Marx"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/amarx\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/3184","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=3184"}],"version-history":[{"count":2,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/3184\/revisions"}],"predecessor-version":[{"id":66572,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/3184\/revisions\/66572"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/13054"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=3184"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=3184"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=3184"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=3184"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}