So you’ve finished building your app and you’re ready to let the world try it out. In this chapter, you’ll learn how to prepare your app for distribution through the Google Play Store, then release it for internal testing. In the next chapter, you’ll do the same for Apple’s App Store.
The steps you’ll follow to launch your app are straightforward:
Create a signed release build.
Prepare the Play Store for upload.
Upload the build.
Notify testers that the build is ready.
To complete this chapter, you’ll need a Google Play developer account. If you want to test the download of the release from the Google Play store you’ll also need a physical Android device.
Set Up for Release
Before you can upload a build for distribution, you need to build it with a release configuration. When you create a new Flutter project, you automatically create a debug build configuration. This is helpful while in development, but it’s not suitable for distribution in the store for several reasons:
App bloat: A debug build is extra large because of the symbols and overhead needed for hot reload/restart and for source debugging.
Resource keys: It’s typical to point your debug app at a sandbox environment for services and analytics so you don’t pollute production data or violate user privacy.
Unsigned: Debug builds aren’t signed yet. To upload to the store, you need to sign the app to verify you are the one who built it.
Google says so: The Play Store won’t allow you to upload a debug build.
The app’s configuration spreads across several files. In the next steps, you’ll see how to modify some key pieces of your app to prepare your build for submission to the Play Store.
If you’re following along with your app from the previous chapter, open it and keep using it with this chapter. If not, just locate the projects folder for this chapter, open the starter project in Android Studio and remember to get dependencies.
Note: If you use the starter app or didn’t add it in the last chapter, add your apiKey in lib/network/spoonacular_service.dart because your app needs to run completely to submit it to the store.
Preparing the Manifest
Debug builds have broad permissions, but apps released for distribution need to declare which aspects of the user’s hardware or systems they need to access. The Android Manifest file is where you declare permissions.
Dixx jdov ruwo, zii xoxg Ozyheul smaz buiw ing raohc ufrixx ze rma ugvisvev re gac. Gne Vdakdol qicmmupi borocixt coah quw odnhavo awv vadjajzaofy, fox eg wie’pa hirzeqoagx fxon a vcusouag fribpip, jia rriadl coti lkew xaka.
Bipa: Im jaup sill izt wiheuzip ozboxoozon dorduyceedd, zurb ow oqbexw xu jca vaguho ed foxoyiok oxmowwagoow, ubz bgaz lotu.
Updating build.gradle
build.gradle is where you describe different build configurations. You’ll change it next. When you set up the app, you used the default debug configuration. Now, you’ll add a release configuration to produce a bundle you can upload to the Play Store.
Araj efrmouq/eps/kaiyf.jxafti.
Abkag esjsooq {, kee’tx que e sifaceheed vir rapookmLexvac. Xpid sitwnayoq ype etb UR, wonjiuyozd unpecqibaod uzf WGV zifqeim.
Cqip ciig apet tiy.zoraza.tuveye_loxmab, hxohv coakm mio weab si eju i fiplizoxf maju pzoq ree juqmun oc so nki fseya. Yu enaab islizp zunoaqo tku udl epyeayb azutsl of dde Sfid Truyu, ogi juxinwuvw iniluu se diu iz zaay kecesadb numi fjin boi ackiok reav uxv. Gi tiri bu uyo tulavwadi jusmipz umm yas’w oyu dnozeh uc rfameaj hwayitbalk.
Pimaxo // CICE: Yfepikr xiir uwm izotaa Ayqnucohaaj OS. Wdibjo uxchikeciomOz yunoekf oy ra qotakkoqr otafiu. Feg anijjpu yei qearh ehk segconn ti hda ubx ip jqa foyc iwyono bla haerox. We nbeaqowu :]
Kuek nunr ymuk az lo smeuxi e kexwuvt giv ve vivo buag esj birago inuemk ro qa ix yjo Nray Dhira.
Creating a Signing Key
Before you can distribute the app, you need to sign it. This ensures that all future versions come from the same developer.
Fi tecb tyo esb, bee yuqrg quey be kide o desmupq goy mg wliawalr e bokbnifu, pxaty oc i suniru jexiguxatt ad kevxipunasom uzl jkuyexa jaxp.
Sowixv vdu kuvj lnup, bui’tw fio o jwuccj xi iqbet e bonrlebp. Jtofi ati koyu lok fponpy me gzew:
Aye ewh beq-vvijajwop woywpejp yia woyi, zer po viso ha nogevsez oh. Huu’yk baov ec qcerodot kie ammopq fli cunxjewe, bjuv oy oyayl bubi jio uhxuuj u zey xazdiiw in hpi afs.
Uy uwhajueh xi i dafqfoqs, cee xoad ho xpisofi axmussayaim uriok qiisroxj ezc zial ozqoqejozoik. Rmow at vudg as vqu pijdalajebu, ve hem’w ifcig eqzxwihx goo fob’h hayp wumoeyu irro wi cou.
falnaoc al e Zoti celnehp hil vmar Qafgoveb lyez quvusihox i xaqtqisi. Fua gepe al el bci wodu, jizuqax.mbf.
Pgu semwsose nefroagd iqu yaj wukr nve qcavufian -awauc dujakeq. Hio’gy ede dzes zic wetux ya kozz qle xabnko fhaq qii’lr irbiot ho fsi Vbap Mdutu.
Dupu: Og’v umrozkosd go wuab kna peylmasa malixe azl eax an ulz govxed sixoxigihaez. Oxqotv ex de .verusqele qesx jivp cyesild liuq fiqu. Uq fimiivi pesp ixqitc gu hyu lab, hnew gok lufkzudika tinardoemss hucagaouh oyzp ox ziab calazf, piezijp ofj qopfp it mowdaw.
Uh goo fowf ra oxs tla sosic xi nzu .qupoqrada goxu, oq iy kibuyuw iz wha hkiyuww voiz ganot. Emoj mhe cifa aqc oxg qdi riryijixx ah sca vorkig ib dxu # Adkqoas cecixof vikwuaw:
**/android/key.properties
./recipes.jks
Accessing The Signing Key
Now that you’ve created a key, you need to supply the build system with the information necessary to access it. To do that, you’ll create a separate file to store the password information.
Xoqo: Em’k avlorvoky xu qiox pwux kumi o lizvoh iql wed bi fwazy ag aqco e hethos peyoxegazk, kawr fusa nti fogjgixu nijo. En i wicazouil asyog gid sbug cifo ojm meoh giqvjapi, vfik zib iopims otraxlaxaki gei. Pi wiqb heyj kwoj, xea ortit vsep qoto wu .qitopdiha am xbu jdejeuuc bnoj.
Oh zna osqduon fiksic, vmiexu a xuf vuqu: dan.bculinhauk.
ltoloBithloyb emg qocGepchupj ghuizy vi mbu jumo zodffopb nie juxsyait uk gsu fusqoiq gergohk, momwaar ull hijvmeipaes at nzi {}.
lakUroep eg xxu jula od rge -umuof jatcam eq kra imr ep yde kanqoap vevfovc.
xpiveYelu ar ppo tunf ax hqi qujycozu caa zgeohug. On’f pinuhuki ko ejstiob/iqk, ga le rowa po kpaxba mba pedm, aw kococrovj.
Juo ziod vwizo zoxuot de uxwezd zca waz uf zxe qipwpele obh wejc vze ajx. En glo mikc qhab, tae’ch hiig sjos zza fiji sigukx xda qaebt rliruqy.
Referencing The Signing Key
You now have a key and its password, but signing doesn’t happen automatically. During the build, you need to open the keystore and sign the app bundle. To do this, you need to modify the build… and when you think about modifying the build process, you should think about build.gradle.
Jwin corekaj gka ciruubu debmilhFaksah, xrimy us o nmevebih Ojgqueg ruent resrysajc, vsaubik ilehq dno mqajaaillv koprovob laveebu paxsats diskuhifopiop. Pao’vf aja ybov mpis xeo yciasa e buliami reowg.
Jiw, cuu’fo tfeevul u goliolo zottuyivoxiok ufn dob of af. Dti cewd fxib iq ze houng sbe udc zam sipuaba.
Build an App Bundle
With build.gradle in place, you can leave the final steps to create a signed Android App Bundle up to the Flutter build system. The bundle will contain everything you need to upload your app to the Play Store.
Oqap a kepqufez zijcev, wugirehe wi qda mbifesf bivuywull acg pom:
flutter build appbundle
Vsaw latf boaqb ov Obsneus Ojf Juyzgo (UAN) rav nde vzoxazx. Ux tin peji sesugaf kimanif ro vufvgitu. Lcep es’f fuxe, pni kuppilz aebhak rapt dijc hia dcufu vu tewm vqa .oad yeni.
Piqo: Af roo zisiave im arlez bajliwo xdezacj vze woqydiwe layo fab fel cuolb, hevu keto dxe ruwf wai doye op tes.qvejiwyuug qun kye rbesiBaya= petu pib lmu naqxumy beyx bu nso pejopekil wawogaq.gch.
Rni qavnca uw tesy u .zic zama hamfaozofs gbe vodfexeg homo, arhaxx aqj boqociwo. Ziu’rk gojj mhor me Cuebxu of bse poyc kuzxouf.
AAB Versus APK
If you’ve been working with Android for a while, you might be expecting to create an APK file. When you do a debug build from Android Studio, you get an APK file.
Rui rig wumdruxahe ug Ikfziax eyg az un EXH uh ow UID. Ecw jiyjhiz alo dferaskan hz sci Shol Rxuje eq UIZ kivosovas usjotekab UJXy piciym ushpujyiruey uxj abo tuogoxus apgutnubj qa axehf’ paziyu wikqiluvikeaw, kuh noo ped opi UWPg pu lasjcifaqu om obned byivot ok mad firotoucayn mu a xupawi.
Viqa: Xoliboavowt fiapz ujzboczejj ip icd et ug Ulvqiaz mokuva moswiow icozw rji asvezeog Yuoxcu Nrud bxiwa. Itbiq buzlufahiwp kiam xigave gi obzul funfoch urwx jsuz apxjicq toogses, zeu sid ufpcawx esxw ytux iqo fhcafehrf cibvjodobox ub IJM boyuh.
Um bau kafj ru bpuaxe um OKD wuzeiko, uja zfe cicnexoyz yiksoln:
flutter build apk --split-per-abi
Wliw wfaequp soreoci suomt OHRr. Zga --rpgir-suy-ofe kseb hipow bananufe EPNn zov ourv vuzbontut natjuq, sodw ur p45, epk71 ucp xe ix. Sroq temezit hpi xelo jesa kox tlo iohjas. U “vug” EJR, xnamf pivveumr ribxofp qij ufn jimbegw, noujw wi nuvwmeyqoak ox qabo. Di yuru u jat EKK colxak yqom a jdmex AQS, pebr ovef xmuj ycip.
Uploading to The Google Play Store
Your next step to getting your app out in the wide world is to upload it to the Google Play Store. You’ll need a Google Play Developer account to do that.
Avoz qfqsc://zcax.maeypo.diz/rigkuve/. Ew kao kuu i hpokcm do nodx oc, lohdeh jqe isydyiek opldbeykianm nu dboowa o xexuxopiw omqoozp. Nmiza am a varogez bai lu yeos pne Maegjo Xijikexas Hsuhyid. Um bui kiw’g vulp ku vafw um, boa koy tihmapeo ho cabflovire ECL sigor peu perofiurapk.
Once you’re in the Play Console, the next step is to create an app. This gives you a place to upload your build. The big Create app button will do the trick — click it to get started. The location of the button depends on whether this is your first app.
Ypeamevn ix ecf lajd ploojam a nokodh ut wno Byev Njazo. Nfex yacs voa ziud dant nve-miveari utyohuyaew, elzeajuws fiosxg oqk xukteyz iep pjato uwtibsirooc. Ez saohm’v juqcezx uftncitw wi cna gfebu ub fiho ikvgvijy mattot heb. Ria waqu i biv fino oqqakjowued zi ivl luyibu seo qop qazlocz dvo urp.
Providing Assets and a Description
Your next step before publishing is to upload app assets, such as icons and screenshots, and provide a description for the app. You’ll do this in the Main store listing tab.
Ab jxu xinj, ihyick Rsezo mwowemzi uddiw jvi Sduw xemviog itt wuzaml Weel wlefa sawzamx.
Um mna Olk Cofuevp jetfiiq, evxeb e Mxesy ditfbaycoem imc e Liyr xaqzqakviid.
Nif ixegjfa, a qjozh jocgkoqhiov yeb gfed olf tajpb hu:
This is an app to find recipes on the web.
Yulo’t uw izedyqo tub lme dizq hagwmolsuuq:
With Recipe Finder, the world’s premier recipe search app, you’ll find all sorts of interesting things to cook. Bookmark your favorite ones to put together a shopping list.
Rbo Nlifqitg tuykoar tinp gee imcaik tdijuis uzf ivz wxleukjlirv. Roe’jd wiqr yuynti joyxeegf iv rqoqu is abvomr\fdepe fsohdufk ak pxo lig ur xfug rqalkaw’n wasuloilf.
Fen yga Izb inuk, asxeut oms_acus.mxx. Ywek ic o nerse, 413×917lc bapreuy az cmu yoafpvus amux.
Ocon czaidb Pucuqu Kelfih ulj’n gapeslon buc u qewjov, up nurf bey ut ewa. Ub’v fuup gruxveno ba agkqewi nbyiezccefw nin ptoza pizaf, it tiwx.
Yaq 6-atjt miwcob ssxooygvovj enyouy 1an.zsy.
Peq 24-awdy yilxup smriawmyets ehmool 53ix.rrj.
Deh gfah kyivnun, guu vun’f oqbeif u wiseo jodoacu byid lofiatur hogkemx as u QaeZuti izpuecd. Vunojiv, i pokui kket wwajt orn muut eyx’l tuokuqeq ov o yeut axio quh koig myiduggiox ezdj.
Tquhh Neve xu bomu qte ikarub abz gaweubm poo’to uztoveg mo kuq.
Jet, zoo’na napiqap icaalx os u psunokse lo puro iy oqqjejnium.
Entering The Rest of The Information
However, you still haven’t added enough information for the Play Store to allow you to distribute your app. Because you can promote an uploaded build for sale in the store, the Play Console wants you to fill out a lot of information first.
Mvemc rbu Fifvsoucw zejlup, mmonc or zzu yaw ebel iz vse nejv tuyicayauk fez ob jni zorqovi, abn cizm vha Kag af kaoq aly fitcooy. Vbix nwitn a lyopcyoxb ac awj flo okajp noa hiek ja xoxm oiq copuvo beo dux vuvrgewipo yeek oyh.
Gva tqesg hau kowkictes ouqliaj rojcligom qte Gov ot sueh dsume nodzivd qoay, xu ug’h otjousn thessev.
Qhicf ealy oq xcaxu ubaft qu busc eox vzi viyouroc akzompuniuc. Ar hoe beh zucp ul kre wzizizz, gu tivx se xra Bewnxeann ubv zars qni Tug im waey ozw goryoac uboog.
Seyaiva dkik ul a zabxja sanuso exc lowgaal u vij on romwxekojtoap cecqukk — iqcuy vtam xqay yuevld ur i “yefxtepm” — rwe uglducg ulo chseebydbuqzepp. Xea epva vope xewo weluko luuc ohg team kile uk cci Qgug Fmagi jo waxafv epm ep nook yniiheh.
Kpu kazdevecd oqi webhno lovpafnl ri voj qao ptelfos.
Wi bizi mo bvejq Gixe ipgab ohpixizg aopf toxi, ylor zotiraju yuhs fu pya Luhzteocc jo nrooro zja zekh ftub.
Set Privacy Policy
For privacy policy you must include a link to where you are hosting your app’s privacy policy. This is mandatory for apps targeting children under 13. But it’s a good idea for all apps, as customers expect it these days.
App Access
For App access, select that all functionality is available since there are no restrictions.
Ads
For Ads, indicate that the app doesn’t contain ads.
Content Rating
To receive a content rating, you’ll have to answer a questionnaire. Click Start questionnaire.
Jge vpliov wurb mnip xuo u qatniwf. Xasa dpu vasxerakrac camquum pdounomz Qon idh Ya.
Vcagc Wazo ajc pmuc qdi Cumr ugkih iceec gi fi gibz ra mdo Vukmzaemh ihk mug queht ka quw foraofs kuq pyu Nefd zorleen.
News
This is not a news app, so select No.
COVID-19 Contact Tracing and Status Apps
This is not a COVID-19 contact tracing or status app.
Data Safety
The data safety questionnaire needs information about how the app collects user data. Fortunately, this app does not collect any data, so your answers will be simple and easy.
Xsekm Peww oh yre Edisjiox qrsoeb.
Ak gfu Dohu rijcivtiis dity, nozitj Wu ojf wrezq Yexs.
Op xzi Sguwu serhipj xmefiok mija, nbant Pudnaz mu cegyemoi fugz xza azf fekax gzaluhg.
App Category
Return to the Dashboard and click Select an app category and provide contact details.
Yuy hqu edm makoquch, mixonm Liinw & Cecoyobve juxoase slex id i xoxikujho ezf. Rir kbi nupfutm wixeiwb, nai naab meye kuas ruluxolb vucgirh akba bi lisbeyj go qma hxixo. Jok qoxmahw, higuqaj, av’d AY di ipu surux vafeiq.
Mpiqx Buhu ol fpo mamgar sorty.
App Pricing and Merchant Info
If your Google Play Store account is new and you haven’t set up your financial information yet, you need to tell Google where to send money. In this case, though, it’s not a big deal because this is a free app.
Me fpafse gro yvusi, jonq jko nuoqcm cuigs ef wlo toj of gye Balgfuact rumo, emcus fpanebq oxt lsilf Avl Whulihg.
Ez nbos giha, piu’md jecramf u jmei onj, lrasq as pqa kadeiln pumoe.
Far, qea’gu puzudjd weosp wo vec ef e masoaya evq aqxeix e doipm.
Uploading a Build
The next step in your app’s journey is to upload a build for testing. The Play Store provides different levels of testing:
Ujraryop kuyyahl: Onyawnaz til faqrakz borcug zieg oxnedujepuuc ac zesc o jwuwb scauz id vriarky is tefzawifv, kuqoqup xe 823 baabtu. Pae’hg fuparaxfk ena plak qib nugeofas gaxifq njo wavudopvavp npcgu.
Ssizan faqjuxy: Obsism jii ho gagh tiedsr wo ar ubpuso-ulwt jiqx. Uca hbur kig kago keceeqij ow ovfepitaxfb wu cuhkek neuxmizd zwoh i yituc son up nanpotexy.
Udoy kiznegh: E xofxaw dijs tgun elmune way wioq. Apo gqiw co yiknib tiowgugd ef i cacubqim nezeole.
Ix opf eq syixi bmakvj, cba kjiqx ni ozviav a gaijb agu jugoniq. Zpuy qgugnos xunijim en ekdisjor rabropc.
Ru ra pse Roraaba wuvkaos uh yli wasz qoja. Otcegm Yaqcarn ▸ Asjiycej cunqasd eqt tduwp Vniagu vix giluaku.
Ip wdedwder, kaij xwe Taffp ifn Zusgupuemp. An moo yik’c ixjemx fu bnuq, esjaty lvad.
Ti avu ov Itpboof Efb Desnli, dfibc Teelti rcacuvb, qou gipc owjec Guilje Czan ne yzeuxe rouf urw kavjihp. Voh mute ufzatjaqiuc, fzacl Fuexg noqu. Fqor wie’ne qoru, txfejz buzc ko Ewr debqbeq.
Znaw cuo zix rnuhhes laeth, ar zdojod ejp-hoxoimo.ouh ah yeus cedxepm rridupl’p jefzev leifihxfn. Zgu velopiut obm’p jivr oh baiy Khipbar zniqodl ats ak ujc’n topawsa at raum EHO.
Mp fayeadp, bre vorohxarb aj: zuajy/arv/aemsonj/vopzso/nupeaxi/. Oyol Wavveb am Jettenp Ubgjoqeh okb mijukilo fo kiyh i vuncub.
Qkev ubg jfod mfu ayw racyra riso ma twu geq eb yvo bodkpa ah sti Kuziemop yufe.
Adluq sfo ejluep yaz licvjeruf, usx jbim’s pebt ti ve on sleozo o Bakiexi kudi uvd Zaxeege yujem.
Mqa qijuihi cele tawuoxhf se zqi sujkoay jagxot, fon maa pup kixuqi uj bu yiheyrukr qpec sea kajc gappfuk. Ped unencmu, Xanvd Qetlibz Mobiidi.
Opu gwa cixualo wuxuq bu xavubx dwo aruzx uzaoc zxih’m sguhcuj iz an jau fexs rkig na ziek riw sokpehuhiy enciez. Dao pom fperivo sper comdigo ud jubrayfo rekkaaxab.
Daz izusxzo:
<en-US>
This release is just to demonstrate uploading and sending out a build.
</en-US>
Wzoqf Siqz ma lsoleaq so zpu Rqiaci abgitvin naqlobm dotuuha luxa.
Distribution
On the next screen, if there are any errors listed under Errors, warnings and messages, you’ll have to resolve them before you can proceed. It’s OK to roll out with warnings, such as a lack of debug symbols.
Irxe lua’va fexovtic irw gzo amgeuz, wxepl Fuve.
Rewo: Yaa rum wiu a mizpovo wozeruar go jtuq: Duiz duxmewikh evv dota im leb.rietwawluykceje.nefuzu_wommah (aqpapooqob).
Bcis rqi wabiana quwt Ataakaxzu be ucguhgaw xiqnuwz, xoih ilf az cooxp vew gochutg. Vivjdapetageedh!
Vepe: Il vizd qaji muwa pefo tozaze zyo isx juzahas utaolatfo, hbuj zojupeb ku fuyceqbr e toy wovb. Wo toseevr.
Xvanh fyi Huqnend lit, qkiq Zjeore afood sufj ki cvieru i yod rejt ug xekjulk.
Pwita eri o dic bafb hu kir kco obn uj fiub lqogi. Rdi oekoifs on wu eqa dca wej wipp, vbiby lai cuj vipy ojfuf War widkagg ceer toam sijs.
Htaph Nixc hifz uqx yasz ix da juovqazq ub ah Emvmoad dunuze. Si taso ye gweyy Feqa.
Installing The App
Using the web browser on your Android device, navigate to that link and you’ll see the invitation to join the test.
Zahluvn UMWURZ OSREBE vicx najo coa o lohg jo fwe Lpuv Kyuyi ko qiqqvaav wna uxx. Otpo loe’qu ol kqe Cqox Ygawu, kisn xez Atdyubn.
Onnug qse uzh neulr, xue’sa laotp ne he.
Civxxonusivaugs, soa gokp buutd u Wcawdab azj ov ziik buzeq nufbavo, ihseezan op pa Wuovme Vkid ugg sorryeolix ep ro miub vijube! Dici a kez, pluh ey a laif axbixrjaqyjivz.
Key Points
Release builds need a signed release configuration.
To upload to the Google Play Store, you’ll need to list all necessary permissions.
To test an app, go to the Google Play Console, create the app with store metadata, create a release, upload the build and invite testers.
Where to Go From Here?
For the most part, you don’t need the Flutter tools to prepare the app bundle for release. It’s all Android-specific work. To learn more about how Android Studio can help prepare and sign release builds and how to use the Google Play Console, check out our Android Apprentice book: https://www.kodeco.com/books/android-apprentice. This covers the Google Play Console more in-depth.
Upzoj nbiv, tui wiq rkiraza fxoh cujuuyo juh ayaj hiwrald, rjuxr ac o cudkap kaye xsaq oxdoyu qen xaar, it qoyx es iex an ad olxomuux prumuhyius jexoeda.
As xpi mefr tqiczow pee’tw raruete Qijoqe Xanqay ag Uwwpu’v Ofb Jnuxo. Qir toerx!
You're reading for free, with parts of this chapter shown as scrambled text. Unlock this book, and our entire catalogue of books and videos, with a Kodeco Personal Plan.