{"id":4897,"date":"2023-02-15T10:55:05","date_gmt":"2023-02-15T15:55:05","guid":{"rendered":"https:\/\/ionic.io\/blog\/?p=4897"},"modified":"2023-02-24T11:30:48","modified_gmt":"2023-02-24T16:30:48","slug":"building-and-releasing-your-capacitor-android-app","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app","title":{"rendered":"Building And Releasing Your Capacitor Android App"},"content":{"rendered":"\n<div class=\"wp-block-jetpack-markdown\"><blockquote>\n<p>This is a guest post from Simon Grimm, Ionic Developer Expert and educator at <a href=\"https:\/\/ionicacademy.com\/\">the Ionic Academy<\/a>, an online school with 70+ video courses focused entirely on building awesome mobile apps with Ionic!<\/p>\n<\/blockquote>\n<\/div>\n\n\n\n<p>You just built your first <a href=\"https:\/\/ionicframework.com\/docs\/react\">Ionic App<\/a> and want to show it to the world, but you have no idea how to submit it to the Store? Then you have come to the right place.&nbsp;<\/p>\n\n\n\n<p>In this guide, you will learn all the steps required to go from an Ionic app to a released Android app. You don\u2019t need to have any previous experience with building native mobile apps to follow along. All you need is basic knowledge of how to build modern web applications!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisite<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What is Capacitor?<\/h3>\n\n\n\n<p><a href=\"https:\/\/capacitorjs.com\/\">Capacitor<\/a> is a native runtime that gives modern web application access to native APIs such as Camera, File System, Notifications, Network, GPS, and more using JavaScript. In a nutshell, Ionic is for building UIs, and Capacitor makes it possible to build and run your app on a native device. It comes with a very slim API, so a lot of the build and deploy process we cover is actually just using the native iOS and Android tools!<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"814\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-1024x814.png\" alt=\"\" class=\"wp-image-4856 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-1024x814.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-300x238.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-768x610.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1.png 1233w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/814;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"814\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-1024x814.png\" alt=\"\" class=\"wp-image-4856\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-1024x814.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-300x238.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1-768x610.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/capacitor-1.png 1233w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Install Native Tools<\/h3>\n\n\n\n<p>To later build our app, we rely on the tools that native developers use as well.<\/p>\n\n\n\n<p>This means <a href=\"https:\/\/developer.android.com\/studio\/\">installing Android Studio<\/a> to download and manage your Android SDK.<\/p>\n\n\n\n<p>Once you reach the last step of submitting an app, you also need to be enrolled in the<a href=\"https:\/\/play.google.com\/apps\/publish\/signup\"> Google developer program<\/a>, which is a one-time fee of $25.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">App Preparation<\/h3>\n\n\n\n<p>For simplicity, I will explain all steps based on a sample<a href=\"https:\/\/ionicframework.com\/docs\/react\/quickstart\"> Ionic React app<\/a>. Most likely you arrived at this guide with an app yourself, so let&#8217;s get started with the configuration of our project!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Your Capacitor Configuration<\/h3>\n\n\n\n<p>Your project already comes with a capacitor.config.ts in which you can define some general settings.<\/p>\n\n\n\n<p>First, you should make sure that you replace the default appId with an actual bundle ID that matches your company\/app name. This is a unique identifier that we will later use for Android, so change it to something specific to your company or project.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Adding Native Platforms with Capacitor<\/h3>\n\n\n\n<p>To build your Ionic app with Capacitor, we need to create a native project for Android.<\/p>\n\n\n\n<p>Make sure you also run the build command before, because Capacitor will <strong>sync your web build to the native platform folder<\/strong> &#8211; which is essentially the magic of Capacitor.<\/p>\n\n\n\n<p>Later on, you will simply update your code and sync the changes again, for now, get started by running:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-shell\"># Build your app and add the Android platform\n\nionic build\nionic cap add android<\/code><\/pre>\n\n\n\n<p>At this point, you can open your native projects and deploy the app to a device or simulator:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">ionic cap open android<\/code><\/pre>\n\n\n\n<p>Alright, let&#8217;s continue with another important piece of the deployment puzzle.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Generating Splashscreen and App Icon<\/h3>\n\n\n\n<p>Every app needs a cool icon and splash screen, which is the first screen users see when starting your app later. For this task, we can use the Capacitor assets plugin, and to get started you should add an icon to a new <strong>assets<\/strong> folder at the root of your project:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">assets\/\n\u251c\u2500\u2500 icon.png\n\u2514\u2500\u2500 splash.png<\/code><\/pre>\n\n\n\n<p>Make sure you are using the right dimensions for those files:<\/p>\n\n\n\n<p>\u2022 assets\/icon.(png|jpg) must be at least 1024\u00d71024px<\/p>\n\n\n\n<p>\u2022 assets\/splash.(png|jpg) must be at least 2732\u00d72732px<\/p>\n\n\n\n<p>Now we can install the Capacitor assets plugin and run the generate command in our project:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">npm install @capacitor\/assets\nnpx capacitor-assets generate<\/code><\/pre>\n\n\n\n<p>This will generate the icon and splash in different dimensions, and if you get a success message, you can see that the images were updated in your native projects:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"642\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-1024x642.png\" alt=\"\" class=\"wp-image-4935 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-1024x642.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-300x188.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-768x481.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-1536x963.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-2048x1284.png 2048w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/642;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"642\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-1024x642.png\" alt=\"\" class=\"wp-image-4935\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-1024x642.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-300x188.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-768x481.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-1536x963.png 1536w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/Screenshot-2023-02-14-at-3.27.44-PM-2048x1284.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/figure>\n\n\n\n<p>Now let&#8217;s get that app released!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Android Play Store Deployment<\/h2>\n\n\n\n<p>To publish your app on the<a href=\"https:\/\/play.google.com\/\"> Play Store<\/a>, you need to sign your native app with a digital signature. In case you missed it, you also need a<a href=\"https:\/\/play.google.com\/console\/signup\"> Google Play Developer account<\/a> to upload and submit your app.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Generating a Signed Bundle with Android Studio<\/h3>\n\n\n\n<p>There are actually multiple ways to build your Android app, but let&#8217;s start with the easiest.<\/p>\n\n\n\n<p>First, let\u2019s build our app from the command line to make sure we have the latest web assets in your native project:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">ionic cap build android --prod\nionic cap open android<\/code><\/pre>\n\n\n\n<p>Now, we can select the <strong>Build <\/strong>menu and click on <strong>Generate Signed Bundle\/APK<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"462\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build.png\" alt=\"\" class=\"wp-image-4859 lazyload\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build.png 799w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build-300x173.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build-768x444.png 768w\" data-sizes=\"auto, (max-width: 799px) 100vw, 799px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 799px; --smush-placeholder-aspect-ratio: 799\/462;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"799\" height=\"462\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build.png\" alt=\"\" class=\"wp-image-4859\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build.png 799w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build-300x173.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-studio-build-768x444.png 768w\" sizes=\"auto, (max-width: 799px) 100vw, 799px\" \/><\/noscript><\/figure>\n\n\n\n<p>This will open a new window in which we select <strong>Android App Bundle<\/strong>. Click next, and you will get a dialog to choose or create a <strong>key store<\/strong>.<br>The key store is the way you can verify with Android\/Google that you are the owner\/developer of the app. If this is your first time going through this (or it&#8217;s a new app) you can simply click on <strong>Create new&#8230;<\/strong> to create a new key store file.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store.png\" alt=\"\" class=\"wp-image-4860 lazyload\" width=\"443\" height=\"444\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store.png 590w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store-300x300.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store-150x150.png 150w\" data-sizes=\"auto, (max-width: 443px) 100vw, 443px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 443px; --smush-placeholder-aspect-ratio: 443\/444;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store.png\" alt=\"\" class=\"wp-image-4860\" width=\"443\" height=\"444\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store.png 590w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store-300x300.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/create-key-store-150x150.png 150w\" sizes=\"auto, (max-width: 443px) 100vw, 443px\" \/><\/noscript><\/figure>\n\n\n\n<p>After filling in the data and clicking <strong>Ok<\/strong>, that information should be automatically used in the last open dialog to create our signed bundle:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-variant.png\" alt=\"\" class=\"wp-image-4861 lazyload\" width=\"576\" height=\"358\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-variant.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-variant-300x186.png 300w\" data-sizes=\"auto, (max-width: 576px) 100vw, 576px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 576px; --smush-placeholder-aspect-ratio: 576\/358;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-variant.png\" alt=\"\" class=\"wp-image-4861\" width=\"576\" height=\"358\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-variant.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/android-variant-300x186.png 300w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/noscript><\/figure>\n\n\n\n<p>If the build is successful, you should pretty soon find a file under <strong>android\/app\/release\/app-release.aab<\/strong> in your project.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Generating a Bundle through the Terminal<\/h3>\n\n\n\n<p>Alternatively, if you prefer to work through the CLI, or have a CI\/CD pipeline, you can sign your app with the command line tools provided by Android. For this, we can now add a new file at <strong>android\/keystore.properties<\/strong> and insert our key store credentials:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">storePassword=yourstorepassword\nkeyPassword=yourkeypassword\nkeyAlias=yourkeyalias\nstoreFile=.\/..\/..\/release-keystore<\/code><\/pre>\n\n\n\n<div class=\"wp-block-jetpack-markdown\"><p>Now we need to load this file inside the <strong>android\/app\/build.gradle<\/strong>, load the values into a <code>signingConfigs<\/code> object, and add this to the <code>release<\/code> build type like this:<\/p>\n<\/div>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">apply plugin: &#039;com.android.application&#039;\n\ndef keystorePropertiesFile = rootProject.file(&quot;keystore.properties&quot;)\ndef keystoreProperties = new Properties()\nkeystoreProperties.load(new FileInputStream(keystorePropertiesFile))\n\nandroid {\n    compileSdkVersion rootProject.ext.compileSdkVersion\n    defaultConfig {\n        applicationId &quot;com.devdactic.filesapp&quot;\n        minSdkVersion rootProject.ext.minSdkVersion\n        targetSdkVersion rootProject.ext.targetSdkVersion\n        versionCode 1\n        versionName &quot;1.0&quot;\n        testInstrumentationRunner &quot;androidx.test.runner.AndroidJUnitRunner&quot;\n        aaptOptions {\n            ignoreAssetsPattern &#039;!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~&#039;\n        }\n    }\n     signingConfigs {\n        release {\n            keyAlias keystoreProperties[&#039;keyAlias&#039;]\n            keyPassword keystoreProperties[&#039;keyPassword&#039;]\n            storeFile file(keystoreProperties[&#039;storeFile&#039;])\n            storePassword keystoreProperties[&#039;storePassword&#039;]\n        }\n    }\n\n    buildTypes {\n        release {\n            signingConfig signingConfigs.release\n            minifyEnabled false\n            proguardFiles getDefaultProguardFile(&#039;proguard-android.txt&#039;), &#039;proguard-rules.pro&#039;\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<p>As a result, you can now perform a build directly from your terminal by navigating into the android folder and directly calling the Gradle build tools to create a release bundle:<\/p>\n\n\n\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-\">cd .\/android\n.\/gradlew bundleRelease<\/code><\/pre>\n\n\n\n<p>If the build is successful, you can find the resulting bundle at <strong>android\/app\/build\/outputs\/bundle\/release\/app-release.aab<\/strong> in your project.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Submitting your Android Build<\/h2>\n\n\n\n<p>Now, regardless of which approach you took, you should have an AAB file that can build uploaded to the Play Store. Let\u2019s visit the<a href=\"https:\/\/play.google.com\/apps\/publish\"> Google Play Store Developer Console<\/a> and create a new app.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-1024x520.png\" alt=\"\" class=\"wp-image-4862 lazyload\" width=\"768\" height=\"390\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-1024x520.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-300x152.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-768x390.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create.png 1233w\" data-sizes=\"auto, (max-width: 768px) 100vw, 768px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 768px; --smush-placeholder-aspect-ratio: 768\/390;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-1024x520.png\" alt=\"\" class=\"wp-image-4862\" width=\"768\" height=\"390\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-1024x520.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-300x152.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create-768x390.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-create.png 1233w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/noscript><\/figure>\n\n\n\n<p>Fill out the form about general app information and click <strong>Create app<\/strong> to add a new app to your Play console!<\/p>\n\n\n\n<p>You will now arrive at the dashboard of your project, from where you can scroll down to the <strong>Set-up your app<\/strong> section and expand all required tasks that you need to finish before releasing your app:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-1024x804.png\" alt=\"\" class=\"wp-image-4863 lazyload\" width=\"768\" height=\"603\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-1024x804.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-300x236.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-768x603.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks.png 1424w\" data-sizes=\"auto, (max-width: 768px) 100vw, 768px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 768px; --smush-placeholder-aspect-ratio: 768\/603;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-1024x804.png\" alt=\"\" class=\"wp-image-4863\" width=\"768\" height=\"603\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-1024x804.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-300x236.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks-768x603.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-tasks.png 1424w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/noscript><\/figure>\n\n\n\n<p>We will not go through all the forms, simply check all tasks and fill in the required information about your app!<\/p>\n\n\n\n<p>After you are done you can head over to <strong>Production<\/strong> from where we click on <strong>Create new release<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-1024x649.png\" alt=\"\" class=\"wp-image-4864 lazyload\" width=\"768\" height=\"487\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-1024x649.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-300x190.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-768x486.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release.png 1361w\" data-sizes=\"auto, (max-width: 768px) 100vw, 768px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 768px; --smush-placeholder-aspect-ratio: 768\/487;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-1024x649.png\" alt=\"\" class=\"wp-image-4864\" width=\"768\" height=\"487\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-1024x649.png 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-300x190.png 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release-768x486.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-release.png 1361w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/noscript><\/figure>\n\n\n\n<div class=\"wp-block-jetpack-markdown\"><blockquote>\n<p><strong>Note:<\/strong> We haven&#8217;t touched testing in here, but you could instead upload your build to the open\/closed testing track of Google Play and start rolling out to specific testers before creating your production release!<\/p>\n<\/blockquote>\n<p>Now the most important step happens as we <strong>drop our aab bundle into the upload area<\/strong>!<\/p>\n<\/div>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-952x1024.png\" alt=\"\" class=\"wp-image-4865 lazyload\" width=\"714\" height=\"768\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-952x1024.png 952w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-279x300.png 279w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-768x826.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-1428x1536.png 1428w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload.png 1527w\" data-sizes=\"auto, (max-width: 714px) 100vw, 714px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 714px; --smush-placeholder-aspect-ratio: 714\/768;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-952x1024.png\" alt=\"\" class=\"wp-image-4865\" width=\"714\" height=\"768\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-952x1024.png 952w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-279x300.png 279w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-768x826.png 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload-1428x1536.png 1428w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/play-store-bundle-upload.png 1527w\" sizes=\"auto, (max-width: 714px) 100vw, 714px\" \/><\/noscript><\/figure>\n\n\n\n<p>Google will automatically detect the version of our file, target SDK level, and other information.<\/p>\n\n\n\n<p>If you did all the previous steps in the right order, the bundle should be accepted, and you can click on <strong>Review release<\/strong>.<\/p>\n\n\n\n<p>At this point, you might see some warnings, but they are not blocking your release.<\/p>\n\n\n\n<p>Before you click on <strong>Start roll-out to Production<\/strong>, keep in mind that this action will release your app to the Google Play Store (after they review it). If everything looks good to you, hit that button and wait for a review, which might take 1-5 days depending on how busy Google is!<\/p>\n\n\n\n<p>Congratulations &#8211; after some waiting, your app will be available for everyone to download through the Play Store. \ud83c\udf89<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Updating Your App<\/h2>\n\n\n\n<p>Let&#8217;s jump forward in time a few weeks (honestly, sometimes it&#8217;s just a minute until the next release) when you want to update your app. This process is the same in many aspects, but a lot faster because you don&#8217;t have to fill out all the general information of your app again.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Android App Update Process<\/h3>\n\n\n\n<p>To update your Android app, you also need to generate a new signed bundle, but before you create the bundle, it&#8217;s time to update your app version.<\/p>\n\n\n\n<p>For Android, this can be done inside the <strong>android\/app\/build.gradle<\/strong> of your Ionic project.<\/p>\n\n\n\n<p>Within the defaultConfig block, you can increment the: &#8211; versionCode in order for the Play Store to recognize that there is a new version for users.<\/p>\n\n\n\n<p>Sync your web assets with the Android project, save the new Gradle settings and then create a new signed bundle through Android Studio or the command line and upload it within your developer console as a new version!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Managing Settings with Trapeze<\/h3>\n\n\n\n<p>Although Capacitor will never magically overwrite your native projects, there is a handy package called<a href=\"https:\/\/trapeze.dev\/\"> Trapeze<\/a> which allows applying changes to your projects based on a YAML file.<\/p>\n\n\n\n<p>Especially if you run your builds on a server, Trapeze can automate the task of updating native project settings with a single command based on your configuration. You can also<a href=\"https:\/\/youtu.be\/lYEkdSn7uFw?t=1269\"> check out my video if you want to see Trapeze in action<\/a> if you are curious and want to know more.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Live Updates with Appflow<\/h3>\n\n\n\n<p>Now wouldn&#8217;t it be nice if you didn&#8217;t have to worry about builds, signing, upload, or even <strong>app store review times<\/strong> anymore? Well, all of that is actually possible with<a href=\"https:\/\/useappflow.com\/\"> Appflow<\/a>, a paid cloud platform for teams building any kind of mobile applications &#8211; yes, Appflow can build Cordova, Capacitor, and even React Native and traditional iOS and Android apps!<\/p>\n\n\n\n<p>Appflow can manage your signing keys, connect to your repository and automatically build your native iOS or Android app after pushing to a specific branch. By defining different pipelines, you can set up <strong>powerful automations<\/strong>, like automatically uploading a new build to Google or Apple after it&#8217;s been built in the cloud.<\/p>\n\n\n\n<p>On top of that, you get access to a feature called <strong>live updates<\/strong>:<\/p>\n\n\n\n<p>With live updates, you can actually skip the app store review process because apps connected with Appflow can load their web sources from a remote server.<\/p>\n\n\n\n<p>There&#8217;s also an<a href=\"https:\/\/ionicacademy.com\/\"> in-depth look at Appflow inside the Ionic Academy<\/a>, so if you want to learn how to use it or build even better Ionic React apps, become a member and get immediate access to 70+ video courses, app templates and our private community of Ionic developers. \u2764\ufe0f<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Parting Thoughts<\/h2>\n\n\n\n<p>While it can seem like a complex process, building, signing, and releasing your app is actually a lot more approachable than you might think. While this guide only covered Android, keep an eye out for the next guide which will go over this same process, but for iOS!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You just built your first Ionic App and want to show it to the world, but you have no idea how to submit it to the Store? Then you have come to the right place.&nbsp; In this guide, you will learn all the steps required to go from an Ionic app to a released Android [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":4960,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"1","publish_post_category":"26","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"559568","discourse_permalink":"http:\/\/forum.ionicframework.com\/t\/building-and-releasing-your-capacitor-android-app\/231127","wpdc_publishing_response":"success","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[124],"tags":[125,128,151],"class_list":["post-4897","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-android","tag-appflow","tag-capacitor"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Building And Releasing Your Capacitor Android App - Ionic Blog<\/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:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building And Releasing Your Capacitor Android App\" \/>\n<meta property=\"og:description\" content=\"You just built your first Ionic App and want to show it to the world, but you have no idea how to submit it to the Store? Then you have come to the right place.&nbsp; In this guide, you will learn all the steps required to go from an Ionic app to a released Android [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-15T15:55:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-02-24T16:30:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2240\" \/>\n\t<meta property=\"og:image:height\" content=\"1120\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Simon Grimm\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@schlimmson\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon Grimm\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. 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:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app\"},\"author\":{\"name\":\"Simon Grimm\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/24d44b251756bd6488dcb741eec0bef6\"},\"headline\":\"Building And Releasing Your Capacitor Android App\",\"datePublished\":\"2023-02-15T15:55:05+00:00\",\"dateModified\":\"2023-02-24T16:30:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app\"},\"wordCount\":1785,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png\",\"keywords\":[\"Android\",\"Appflow\",\"Capacitor\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app\",\"url\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app\",\"name\":\"Building And Releasing Your Capacitor Android App - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png\",\"datePublished\":\"2023-02-15T15:55:05+00:00\",\"dateModified\":\"2023-02-24T16:30:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png\",\"width\":2240,\"height\":1120},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building And Releasing Your Capacitor Android App\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/24d44b251756bd6488dcb741eec0bef6\",\"name\":\"Simon Grimm\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg\",\"caption\":\"Simon Grimm\"},\"sameAs\":[\"https:\/\/x.com\/schlimmson\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/schlimmson\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building And Releasing Your Capacitor Android App - Ionic Blog","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:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app","og_locale":"en_US","og_type":"article","og_title":"Building And Releasing Your Capacitor Android App","og_description":"You just built your first Ionic App and want to show it to the world, but you have no idea how to submit it to the Store? Then you have come to the right place.&nbsp; In this guide, you will learn all the steps required to go from an Ionic app to a released Android [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app","og_site_name":"Ionic Blog","article_published_time":"2023-02-15T15:55:05+00:00","article_modified_time":"2023-02-24T16:30:48+00:00","og_image":[{"width":2240,"height":1120,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png","type":"image\/png"}],"author":"Simon Grimm","twitter_card":"summary_large_image","twitter_creator":"@schlimmson","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Simon Grimm","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app"},"author":{"name":"Simon Grimm","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/24d44b251756bd6488dcb741eec0bef6"},"headline":"Building And Releasing Your Capacitor Android App","datePublished":"2023-02-15T15:55:05+00:00","dateModified":"2023-02-24T16:30:48+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app"},"wordCount":1785,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png","keywords":["Android","Appflow","Capacitor"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app","url":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app","name":"Building And Releasing Your Capacitor Android App - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png","datePublished":"2023-02-15T15:55:05+00:00","dateModified":"2023-02-24T16:30:48+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png","width":2240,"height":1120},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/building-and-releasing-your-capacitor-android-app#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Building And Releasing Your Capacitor Android App"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/24d44b251756bd6488dcb741eec0bef6","name":"Simon Grimm","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/08\/simon-150x150.jpg","caption":"Simon Grimm"},"sameAs":["https:\/\/x.com\/schlimmson"],"url":"https:\/\/ionic.io\/blog\/author\/schlimmson"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2023\/02\/cap-android-feature-image.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=4897"}],"version-history":[{"count":4,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4897\/revisions"}],"predecessor-version":[{"id":4936,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/4897\/revisions\/4936"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/4960"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=4897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=4897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=4897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}