{"id":10508,"date":"2025-09-22T20:06:11","date_gmt":"2025-09-23T00:06:11","guid":{"rendered":"https:\/\/learndash.com\/support\/?post_type=docs&#038;p=10508"},"modified":"2025-09-23T10:16:33","modified_gmt":"2025-09-23T14:16:33","password":"","slug":"how-to-generate-android-release-apps","status":"publish","type":"docs","link":"https:\/\/learndash.com\/support\/kb\/learndash-app\/app-builds\/how-to-generate-android-release-apps\/","title":{"rendered":"How to Generate Android Release Apps"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"h-introduction\"><strong>Introduction<\/strong><\/h2>\n\n\n\n<p>Android Release Apps allow you to prepare production-ready builds for Google Play submission, real-world testing, and accurate In-App Purchase validation. Built using our cloud-based servers, Release Apps compile your site\u2019s configuration, branding, menus, and any GitHub-connected customizations into an <strong>Android App Bundle (AAB)<\/strong> file.<\/p>\n\n\n\n<p>While <strong>Test Apps<\/strong> are ideal for daily QA and rapid development previews, <strong>Release Apps<\/strong> are required for publishing to Google Play and verifying actual subscription pricing, durations, and purchase flows.<\/p>\n\n\n\n<p>This guide will walk you through creating an Android Release App build, uploading it to a Google Play testing track, inviting testers, and managing build updates.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-release-vs-test-apps\"><strong>Release vs Test Apps<\/strong><\/h2>\n\n\n\n<p><strong>Test Apps<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Best for daily QA, stakeholder demos, and custom code previews.<\/li>\n\n\n\n<li>Installable via QR code without using Google Play.<\/li>\n\n\n\n<li>Simulate purchases with placeholder pricing (no real transactions).<br><\/li>\n<\/ul>\n\n\n\n<p><strong>Release Apps<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Required for Google Play Store submission and live testing.<\/li>\n\n\n\n<li>Generated as AAB files for Google Play upload.<\/li>\n\n\n\n<li>Display actual pricing, subscription durations, and terms.<\/li>\n\n\n\n<li>Enable genuine In-App Purchase transactions.<br><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creating-an-android-release-app-build\"><strong>Creating an Android Release App Build<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In WordPress Admin, go to <strong>Learndash App > Build<\/strong>.<br><\/li>\n\n\n\n<li>Click <strong>Request Build<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXd7hr3IxBwMN2e-lwYX0AZjMevJLocMfrqx_KYX6qWMRsCsZN75t45GeQiGcSwjQEt15p6zSDk6UnrcemhbYT2Um-XpCbC5PfYHq-qhpQJSxLB0NK6_7yjQag6df9fgKLvXJANmqQ?key=BBtWRUC0ngh1eQ0be4JFNg\" alt=\"\"\/><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Select <strong>Android<\/strong> as the Platform and <strong>Release App<\/strong> as the Build Type.<br><\/li>\n\n\n\n<li>Click <strong>Next Step<\/strong>, then <strong>Send Build Request<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXc1Gwm_GWJ6NrhB0ZzD3-K05PRVG2bURmAMsXPAg1fyeH-LA37AxAEOOBqDBa61txLQmDrjj493elv-iO97Ui_W9fpiwdcTmB1G8ivJ_4F99f1X3v8dovT0rs5JMIR8y2ebnqsTZA?key=BBtWRUC0ngh1eQ0be4JFNg\" alt=\"\"\/><\/figure>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Wait for the build to complete.<br><\/li>\n\n\n\n<li>In <strong>Build History<\/strong>, click <strong>Download AAB File<\/strong> for the finished release build.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdCXH6CRZaGxz2ODpoHk2AjNr3D-PGJ2bGcmFoQq4IkiFuNuvOHBdS7X1qaqfrOTF3ybRlHglTYKC3Xv7V36JRdJLLm_Ac_D0BdAZgaKTKks9GoBggZESpRplx9UO96Pqqm3B86Fw?key=BBtWRUC0ngh1eQ0be4JFNg\" alt=\"\"\/><\/figure>\n\n\n\n<p><strong>Note:<\/strong> Since August 2021, Google requires AAB uploads. APK uploads are only possible if previously published.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-uploading-your-aab-to-a-google-play-testing-track\"><strong>Uploading Your AAB to a Google Play Testing Track<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Log in to the Google Play Console.<br><\/li>\n\n\n\n<li>Open your app under <strong>All apps<\/strong>.<br><\/li>\n\n\n\n<li>Under <strong>Release > Production<\/strong>, confirm your target countries\/regions are set.<br><\/li>\n\n\n\n<li>Go to <strong>Release > Testing<\/strong> and choose <strong>Closed testing<\/strong> (recommended for In-App Purchase QA).<br><\/li>\n\n\n\n<li>Click <strong>Manage track<\/strong> (e.g., Alpha) > <strong>Create new release<\/strong>.<br><\/li>\n\n\n\n<li>In <strong>App bundles and APKs<\/strong>, upload your downloaded AAB.<br><\/li>\n\n\n\n<li>Under <strong>Release details<\/strong>:<br>\n<ul class=\"wp-block-list\">\n<li>Leave the auto-filled release name as is.<br><\/li>\n\n\n\n<li>Paste the Learndash App release notes.<br><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Click <strong>Save<\/strong>, then <strong>Review release<\/strong>, then <strong>Start rollout to [track name]<\/strong>.<br><\/li>\n\n\n\n<li>Wait for Google approval (may take minutes to days).<br><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-inviting-testers-to-your-track\"><strong>Inviting Testers to Your Track<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In Play Console, go to <strong>Release > Testing > Closed testing<\/strong> and open the <strong>Testers<\/strong> tab.<br><\/li>\n\n\n\n<li>Under <strong>Email lists<\/strong>, select or create a new list.<br><\/li>\n\n\n\n<li>Add tester emails (must match their Google Play account) and click <strong>Save Changes<\/strong>.<br><\/li>\n\n\n\n<li>Scroll to <strong>How testers join your test<\/strong> and copy the join link.<br><\/li>\n\n\n\n<li>Share the link with testers.<br><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configuring-license-testing\"><strong>Configuring License Testing<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>In the sidebar, go to <strong>Settings > License testing<\/strong>.<br><\/li>\n\n\n\n<li>Add the same tester emails and click <strong>Save Changes<\/strong>.<br><\/li>\n<\/ol>\n\n\n\n<p>Testers can now install your Release App with full In-App Purchase functionality.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-updating-your-testing-track-with-new-builds\"><strong>Updating Your Testing Track with New Builds<\/strong><\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Generate a new Release App build in <strong>Learndash App > Build<\/strong>.<br><\/li>\n\n\n\n<li>In Play Console, go to <strong>Release > Testing > Closed testing > Manage track<\/strong>.<br><\/li>\n\n\n\n<li>Click <strong>Create new release<\/strong>, upload the new AAB, and start the rollout.<br><\/li>\n\n\n\n<li>Testers will see the update in their Play Store testing link.<br><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-troubleshooting-and-faqs\"><strong>Troubleshooting and FAQs<\/strong><\/h2>\n\n\n\n<p><strong>Q: My testers can\u2019t access the build.<\/strong><strong><br><\/strong> A: Make sure their exact Google Play account emails are added in <strong>both<\/strong> the Testers list and License Testing, and that Google has approved the testing track.<\/p>\n\n\n\n<p><strong>Q: In-App Purchase prices aren\u2019t showing.<\/strong><strong><br><\/strong> A: Only Release Apps from an approved closed testing track display real pricing. Ensure testers install from the track URL.<\/p>\n\n\n\n<p><strong>Q: Build upload fails with \u201cAAB version is lower than previous.\u201d<\/strong><strong><br><\/strong> A: Increase the versionCode in your app\u2019s build.gradle before rebuilding.<\/p>\n\n\n\n<p><strong>Q: Google rejected my build.<\/strong><strong><br><\/strong> A: Review the rejection email for specific policy violations and address them before resubmitting.<\/p>\n\n\n\n<p><strong>Q: Can I switch from Closed to Open testing?<\/strong><strong><br><\/strong> A: Yes. Go to <strong>Release &gt; Testing<\/strong> and select your preferred testing type.<\/p>\n\n\n\n<p><strong>Q: My testers see \u201cApp not available in your country.\u201d<\/strong><strong><br><\/strong> A: Verify your target countries are set under <strong>Release &gt; Production<\/strong> in the Play Console.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Android Release Apps allow you to prepare production-ready builds for Google Play submission, real-world testing, and accurate In-App Purchase validation. Built using our cloud-based servers, Release Apps compile your site\u2019s configuration, branding, menus, and any GitHub-connected customizations into an Android App Bundle (AAB) file. While Test Apps are ideal for daily QA and rapid&#8230;<\/p>\n","protected":false},"author":58,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_helpful_status":1,"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_swpsp_post_exclude":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"doc_category":[289],"doc_tag":[],"knowledge_base":[283],"class_list":["post-10508","docs","type-docs","status-publish","hentry","doc_category-app-builds","knowledge_base-learndash-app"],"year_month":"2026-04","word_count":628,"total_views":"650","reactions":{"happy":"0","normal":"0","sad":"0"},"author_info":{"display_name":"Stephanie Liy","author_link":"https:\/\/learndash.com\/support\/author\/stephaniei\/"},"doc_category_info":[{"term_name":"App Builds","term_url":"https:\/\/learndash.com\/support\/kb\/learndash-app\/app-builds\/"}],"doc_tag_info":[],"taxonomy_info":{"doc_category":[{"value":289,"label":"App Builds"}],"knowledge_base":[{"value":283,"label":"LearnDash App"}]},"featured_image_src_large":false,"comment_info":0,"knowledge_base_info":[{"term_name":"LearnDash App","term_url":"https:\/\/learndash.com\/support\/kb\/learndash-app\/","term_slug":"learndash-app"}],"knowledge_base_slug":["learndash-app"],"_links":{"self":[{"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/docs\/10508","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/comments?post=10508"}],"version-history":[{"count":1,"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/docs\/10508\/revisions"}],"predecessor-version":[{"id":10509,"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/docs\/10508\/revisions\/10509"}],"wp:attachment":[{"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/media?parent=10508"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/doc_category?post=10508"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/doc_tag?post=10508"},{"taxonomy":"knowledge_base","embeddable":true,"href":"https:\/\/learndash.com\/support\/wp-json\/wp\/v2\/knowledge_base?post=10508"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}