{"id":44267,"date":"2019-05-29T11:34:18","date_gmt":"2019-05-29T18:34:18","guid":{"rendered":"http:\/\/devblogs.microsoft.com\/xamarin\/?p=44267"},"modified":"2019-08-30T08:31:08","modified_gmt":"2019-08-30T15:31:08","slug":"64-bit-requirements-xamarin-android-apps","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/xamarin\/64-bit-requirements-xamarin-android-apps\/","title":{"rendered":"Preparing Android Apps for Google Play&#8217;s 64-bit Requirements"},"content":{"rendered":"<p>The introduction of Android 5.0 back in 2014 brought official support for 64-bit CPUs. This is a great advancement in Android as 64-bit CPUs deliver great performance improvements for all users running apps. Earlier this year, <a href=\"https:\/\/android-developers.googleblog.com\/2019\/01\/get-your-apps-ready-for-64-bit.html\" target=\"_blank\" rel=\"noopener noreferrer\">Google announced<\/a> that Android apps which include native code, such as Xamarin apps, must also provide a 64-bit version starting in August 2019.<\/p>\n<h2>Support for 64-bit<\/h2>\n<p>If your app needs updating, you may have received an email from Google looking similar to this:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-44270\" src=\"http:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/Capture.png\" alt=\"\" width=\"609\" height=\"436\" srcset=\"https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/Capture.png 609w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/Capture-300x215.png 300w\" sizes=\"(max-width: 609px) 100vw, 609px\" \/><\/p>\n<p>Alternatively, you may not have received this email or only saw a few of your apps. This is due to Xamarin.Android having supported 64-bit CPU architectures for some time and is the default in Visual Studio 2019. In fact, you may already be shipping a 64-bit version of your app based on the <a href=\"https:\/\/docs.microsoft.com\/xamarin\/android\/app-fundamentals\/cpu-architectures?tabs=windows&amp;WT.mc_id=docs-xamarinblog-jamont\" target=\"_blank\" rel=\"noopener noreferrer\">Application Binary Interfaces<\/a> (ABIs) that were selected when building your <b>Release<\/b>.<\/p>\n<h3>Four Types of ABIs<\/h3>\n<p>There are four ABIs that can be selected when building your mobile app:<\/p>\n<ul>\n<li><strong>armeabi-v7a<\/strong> \u2013 ARM-based CPUs with hardware floating-point operations and multiple CPU (SMP) devices.<\/li>\n<li><strong>arm64-v8a<\/strong> \u2013 CPUs based on the 64-bit ARMv8 architecture.<\/li>\n<li><strong>x86<\/strong> \u2013 CPUs that support the x86 (or IA-32) instruction set.<\/li>\n<li><strong>x86_64 <\/strong>\u2013\u00a0CPUs that support the 64-bit x86 (also referred to as x64 and AMD64) instruction set.<\/li>\n<\/ul>\n<p>Select which ABIs your application supports in the project properties. Remember that any native libraries your application uses will receive an optimized version for each ABI selected.<\/p>\n<h4>Visual Studio 2019<\/h4>\n<p>In Visual Studio 2019 the ABIs are found in <b>Project Properties -&gt; Android Options -&gt; Advanced<\/b>.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-44272\" src=\"http:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/01-abi-selections-sml.png\" alt=\"\" width=\"700\" height=\"496\" srcset=\"https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/01-abi-selections-sml.png 600w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/01-abi-selections-sml-300x213.png 300w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<h4>Visual Studio for Mac<\/h4>\n<p>In Visual Studio 2019 for Mac the settings are found in <b>Project Options -&gt; Android Build -&gt; Advanced<\/b>.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-44275\" src=\"http:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/01-abi-selections-sml-1.png\" alt=\"\" width=\"700\" height=\"584\" srcset=\"https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/01-abi-selections-sml-1.png 800w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/01-abi-selections-sml-1-300x250.png 300w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/01-abi-selections-sml-1-768x640.png 768w\" sizes=\"(max-width: 700px) 100vw, 700px\" \/><\/p>\n<p>At a minimum, your Android application should ship with <b>armeabi-v7a<\/b> selected while adhering to Google&#8217;s new 64-bit policy. It should also ship with <b>arm64-v8a<\/b> starting on August 1st, 2019. Remember to assemble this on your <b>Release<\/b> configuration in order to take effect when shipping to the Google Play Store.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-44274\" src=\"http:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/release.png\" alt=\"\" width=\"518\" height=\"42\" srcset=\"https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/release.png 518w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/release-300x24.png 300w\" sizes=\"(max-width: 518px) 100vw, 518px\" \/><\/p>\n<h2>Timeline<\/h2>\n<p>Be sure to check the official 64-bit support timeline for roadmap updates.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-44284\" src=\"http:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/download.png\" alt=\"\" width=\"800\" height=\"450\" srcset=\"https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/download.png 1600w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/download-300x169.png 300w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/download-768x432.png 768w, https:\/\/devblogs.microsoft.com\/xamarin\/wp-content\/uploads\/sites\/44\/2019\/05\/download-1024x576.png 1024w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<h2>Learn More<\/h2>\n<p>Get more insight into the many different flavors of architectures that Xamarin.Android supports. Read through our <a href=\"https:\/\/docs.microsoft.com\/xamarin\/android\/deploy-test\/multicore-devices?WT.mc_id=docs-xamarinblog-jamont\" target=\"_blank\" rel=\"noopener noreferrer\">documentation on multi-core devices support<\/a>. Additionally, check out the <a href=\"https:\/\/docs.microsoft.com\/xamarin\/android\/app-fundamentals\/cpu-architectures?tabs=macos&amp;WT.mc_id=docs-xamarinblog-jamont\" target=\"_blank\" rel=\"noopener noreferrer\">full documentation<\/a> on configuring your Xamarin.Android app for release.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Starting on August 1st, 2019 all Android apps that ship native libraries will need to provide a 64-bit version of their app. Xamarin.Android already includes support for 64-bit CPUs and can be enabled with a simple check of a checkbox! See how easy it is to optimize your apps for multiple CPU architectures.<\/p>\n","protected":false},"author":544,"featured_media":44271,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[313,2,291],"tags":[],"class_list":["post-44267","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-developers","category-xamarin-platform"],"acf":[],"blog_post_summary":"<p>Starting on August 1st, 2019 all Android apps that ship native libraries will need to provide a 64-bit version of their app. Xamarin.Android already includes support for 64-bit CPUs and can be enabled with a simple check of a checkbox! See how easy it is to optimize your apps for multiple CPU architectures.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/44267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/users\/544"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/comments?post=44267"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/posts\/44267\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/media\/44271"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/media?parent=44267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/categories?post=44267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/xamarin\/wp-json\/wp\/v2\/tags?post=44267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}