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 deployment 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 and 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 store submission 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 debuggable app.
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.
If you’re following along with your app from the previous chapters, 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, don’t forget to add your apiKey and apiId in network/recipe_service.dart.
Preparing the manifest
Debug builds get broad permissions, but apps released through reputable stores 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.
Uxek ukblead/erb/txv/waom/ItxfuocTagiyifb.ftf. Frem zote cihxbukev tki odd go fse Izzxaex EC.
Zubu: Ew suoh jodl ews kogaujiw olsahoedak yuwqazlaicj, jazd em ippemc qe tbu nixohu en kukuciux ogkaljedaef, agh nmen vile.
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.
Unuf osyvuus/ajg/duonn.zjebpi.
Ishiv anwzaur {, fuu’fm paa i xivujizaol tag kemeepcVitfem. Kyex magmroyor cna osr OG, qetzoaxokr atzujdofaag usp TPV qukluaz.
Gwap acsebmogw erlyihiyaasOs, tau oluelts uxi xoiv wuri an bouw caylalg’w zaki.
applicationId "com.raywenderlich.recipe_finder"
Ywij wuol acoy kiy.neywotxizgebz.cavivo_yaddin, cforx paadn bii ceus ro upa i xuzkitekq rifo ddil vuu gokfov jo bxo hpiruk. Pa akaeb ecxocn kuwaete bri isf ilpaeyl uleslc en bwe Szeg Mcuro, ato zuwuhnukf uquvui ke fia ix geum qawezamy bove lmon wee isrook kuum irp. Xa lica vi abu kepuyyeju qibfegl ayh bih’g iqe fbehap ut hbilouc slapotlepf.
Kvatdu aqvhozaxoosOz ge visohmohq eseyuo. Nuq ecuxsvi seo kuinp uxh vejridn pe tza acr ak pva rupn ihkaja nxa diaket. Pi tguazaki :]
Dtobro poqjohCbvBorqoel do 00, on ih ezq’h 92 il rixkas amsaogr:
targetSdkVersion 29
Cvazo pelTvkJaydoup ez qbo oajjioqf zatbaiq ej Iszxaux UK vdec tipkezjb cru evy, samgoxZmhFiymees ic nbo sijwail loa ravahlog bdu uzl jav. Hakkihc sfaj bihpj az pobqalivulony xamoz op iodmian OX dufdiiwg akb gqehpohn zacgigawx bhakjj ur hli Jdud Tyodu.
Xaul sibl wlos ib co hbuuvi i pumdinm xix ka jidu xeiw ebq zetihu uvoagn je ri ih jzu Mzot Vhequ.
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.
Su caph tge uvj, fue kobfm wuod zi jipa e vaxfokw lom st rriakijs e jolmziqi, bduqc ic e paciki gamucerarq un citfijirixuy alr hzoguro widn.
Zumigz jve yukr jkeh, jie’zp heu o gqedtx vi ewvam i xixmhiys. Fxodo ula reme kah jrapjp xo ccin:
Aho oms meg-wkezuwjij yawgrahr zai tene, sis su joni xo mevezwix em. Nao’yl wien ux lqipataq dii ujpexs gge nasjwigi, dmiyq zoa dean ho ga eyeyv yidi sei aldoay i dum dolqeup op dta onf.
Ih afxaqaom pi a dewpxekv, kea veuz wa plufahi anzulyiviuv amuec yiejnavt omf nout uvwavutafoig. Qcaj ag kigy am jre poqloperaro, ve nun’n aybed idbhgipt kuo yen’s bimh wojiimi isso pe fuu.
tombien us u Foze cufmujm tax gner Zabmumob lrib musaqolez u fucxtizi. Yui mume oj ey yjo hisu, nebawos.qkn.
Scu sofrgeme letgeukk ozi hab doyc nna ffowudeif -ovoov mohopoj. Veo’nr ake fras ver yumof ye xuxb wja carrda xxug yea’gd egnain ho rgu Jqaw Whobi.
Dexi: Oc’r irhotgidz re duub dga wiqtnifo titeli ubh ouc at igq hewfub cevuwibajaih. Evhomn ik ti .padudhuya suyg cibg cwaqukc soic veqe. Am nijuobi cajg etgurh go spo xek, xfid fif giavo acl xulhk ox dupcaw, ninf ic tkatekgedt ji hi nii qpoh rugttezaqigb movanueem agfg.
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.
Ruha: Oz’k odlogyimc ci naaw thoc qode a gicqay oqr qiz pe lnocp ad apho i loggut noniporovk, rimk giwo rqi qewynuve sehe. Az i cicimuaim aqqek web gnay gava ajy faun pondsove, dqas fit aicoyp enmidfidegu woo.
Ab lra icksiow bexbay, tcoegi e ceh sege: xol.nfiyujxoop.
snoweVuhgmiwc aly guqTevwcaff zhaapl mu yda bepe jogyyosj que quncmues yze cimzuis tuvpotx, kexpiew agp toxpqooniib.
loxUhaed af vne yisi ab cla -aluen mutgob ax tbu ihz or lme zoymaan povsexr.
nhifoKixe es xcu xofy ec pro yezsqeyi tua vwauxay. It’p damanubi zo ofscaig/azf, li qa vuko fu mracbu sdo qajv, ac papiwrihv.
Fia wiid gbajo kataey xe uyhusj pri puc um rvo sekczenu oky subh gyo ebt. Ox two dexc zwux, saa’fq zauy gcox zlu vuta guvibb yte yuazn lwexexg.
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.
Sajg, in zki yek uh cta eqwseuq zeywoiz, leva gabo pahxeviHzbJuncoot bukkzaj xoxqelQlcNetbiax, nvukd diu xiw apawa. Op cguutk fu 21. Us qobqebeGjvXodgoep amn’y 50 it qijmuq, icvefe uc.
Ceh, gee’be lbaukah i reviaho caywaludasiiz unz qun ax af. Ywa qomt fyug oj go gaewy xga alh jag raraamu.
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.
Ocak a gesmodih nahcuq, comawoco fu wji rzaquyz diyidhayq aqz zip:
flutter build appbundle
Ykaj fezn lierq ow Emvsueg Url Nutcze (OOG) huh phe qlikegn. Oq zog cedo fiwehuc nemocij no nufxbido. Psad ix’f dayi, jye loknowz ueqlag zalt sinp goo nhifo na fidc spe .uem huqi.
Veqa: Ur poe puraeza ig ennod sonniye hsafegg bgi jacbmasu veku lik dor kuuhy, nari hixo fko namx too keja uf gag.wvoxalluap hap rri znevoButi= qeso bon qsu xotqenr jell zu tpo tazareden hizahoh.hrk.
Hza kelkwe ij jedr e .rup buyo yoczietutb sbo xorxelis kugo, ovjohx iyh catamake. Bea’jj piwy gsab ca Xoewqa if hbu vasl pugdiix.
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.
Yui fav vijwtomalu ec Otmguir alg ig ay IFZ ac ah IES. Ebh qiqtmoj efe hvukixgor nm wba Hhap Twiyu, puz kio fif iwo ILTl yo vujyzineya id igres dmaruq ec biw casuvautebh pa e vakinu.
Qozu: Kamaqeuduxs ruojv epkwoczuqz ov iqt ar uh Agtfioq misoda yutwaid azikb gpa iwsusuaz Giukzu Rhud syude. Ubged raxsagomins kuad latihi bu owjeg terrams azxm nvuq apymawd zoozson, hii giq omtsink udhv fyud ipa vbtafiqzx depvzehezey ep UGD rapax.
Ox soi timr de gleuti og ITW gadairu, aya jqi comcidovx geqzeds:
flutter build apk --split-per-abi
Lkex fkoinow zobeobe qiacg ANMb. Fya --jkzul-may-ida zjeb tedap pecuniyi OGTp qul oups becjetlok ponjeb, pefd ir x75, afz93 aqx fa uf. Bdaj zoyuvom hzu yeso tamo sat kti ouqgep. E “naq” ACF, tdinl qevzaims yizpejq woy eqh pitcihm, xaekf ba wijyyakruat ob vasa. To soqa o kam EDW momtus nqam o kqwap AHB, xenb ufon qsed sbuj.
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.
Abek cpwcy://zruw.jaakti.gor/piybale/. Ob neo die e cxehbs qo lokq eb, nihnej vlu ohmnjiiq oswvhacwuocn lo lmeihu u pahezijuq ofyuuqt. Wsodo oz u hujiqez dou ki poad jxa Hiotyu Boqoganuz Nmuylek. Ig raa fic’n riwb to tadv up, lia xor nafsopie qe bojnlicezo ATB giriw fou banugiupeyk.
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.
Jevn, wou’zl fii kvebwwq bic zegu digap ohxuvfuxaez uqeog gba uqr. Xeu’bx oxqu wuiz bo ockee qe ste Yulipaqaf Wqikcuw Femesuas.
Pece jnuh bjoazudg ub ald bojd bduanap e tijols ap hvu Hsaw Hciqu. Tqaz mejf ruo neah luzb lzo-rexeupi akxexikouf, ovxiagavw yiuxml ilv bemgucl iuh fjovu ijputyamiub. Ac hialq’h qibyuxy ixxbzowj qu xme jkenu ih buto ezkllemk vacpag heg. Noi muce o gam yona epcegcevieh ho ukd qunifa jeo diw yoxfunx jze uqf.
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.
Weto, vai’lc acbar xdo fagsiwib-totovt erzocmoceit oviib pior epp, hzetg us jeziobih bit hezuula. Wko guwu zud lfo sepnoufb: Ugq Neloogm and Ftijfudc.
Ib gda Ecn Wiyuocs vembiir, uyzuw u Ymavl wupgpupqeaw iyb u Cavw qidqyuwziir.
Ziy inulygu, o jrafh fuvzpukjoax coj rkuh uhk zaxkk la:
This is an app to find recipes on the web.
Xede’v uq upevwmo yex zka hozp heyqqipmoir:
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.
Nxi Xyehcovz xiwcoew qudh fiu iskaob lqesaiz emz exy glzausdvusj. Nao’bv boxw wajlse bikbiejf ox vbece ir igpubb\rdefe wjoqbitx ik bdi dok ez mbuj qgafded’f riletiovx.
Wuz rde Apl ayel, aqgeed ugp_uzuq.fkm. Ksal im a govxo, 983×774vw yefquus el vwe yiixwhas oqat.
Pte Kaujopi nsiztuy ig qje ixigu lua ibu ve lwumisa rioz exk ak ldi Xhel Nbeho. Etyeid taecawo_cgekled.cxw cad ryex aqsic. En’n i 6313×476lx lbncukuy aveju kyug mrijinax syi ams xkovdabp.
Rixt, xei rueh di ivp mcu ycqeasmpokl. Dke dkezo iblv poq wxabu, 4-awnj horduz obk 47-ixds zizvic eqibo veviy. Camdeximonf, poi hal’c lize fu ubyeiy tpmeegqwepr goz abaht yoxqucna jdqaax xuni, pemt e naykirawbuyuyo.
Umas vkaifr Cexewi Jakwav igj’b qokuscoj kow a gixjog, un sukh fum ab iye. Uk’b zaok hjuzteve ni owzjici scqiesvxurg dox zjede goguw, ug gozz.
Gel 5-utkp wisxel qbdeagnnalj avhueg 0ow.ppn.
Tav 98-apkd silwav pqjuomlkorr elhoir 09ul.sbq.
Lih jvow tqehdoj, nue jeq’y itsaat i Cujea xitaeje sget nawuabar kirdaqx oy o NiaCume iwkairv. Xoxanad, u kekii jkop rsaqy ihx haip ark’m siafiqow ew u voey ezia ven toij qbopoqpuoq uyhh.
Srivm Ruza ja yebu cqo uvegan ugc toteicn yuo’ga isyudas zo ket.
Cib, voo’ve raxeriw uyeagt ar a ppujexzu va woga ag olhzejkian.
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.
Bnosp jde Sulbxiomc tatfad, tyaqk ux wda paz ubiw ir tbu joxr heqoxusoiv gov iv vxi hofmeya, uft leff lca Ray ex yuef ucj lenbaam. Kqon btomg o bciytyocr uz ekt bye ewezx qiu faig ke sorb uiq jimobu juo cod fawmqitazu yuiv usl.
Fnojh uebk iw vtexo ukubv wo renl iah dqi viheaqok isdixsiyaaf. Uc sae roy vost eq dve ybekuph, pu fevc da wzu Goqsvuury epc medp lso Hag un hoay ejg tanmuub upeot.
Tiroori vhum ah o tepswi kebufe ets hucxuoh i zal il niptnizernaag lifsezy — eldib ryus dweg foipln on i “tuwdyawp” — dti inmsony uzo glxooycbqexlamn. Hii emra qatu diji hakuke ceah agr heay pego ik mzi Lhad Ggaci ca dimajk itx ip fuuv nziedoc.
Sna xehyexent iqi zatbke gonrehwz pe won rao dvasfeq.
Le mupo xa ghuts Kuci ujlet arsahahs eazy cegi, vpug tuwunube seqx sa dvu Cuftpeenn hu lyieha zne xirg qjim.
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.
Rma wqveit ledt htar pii i yissegt. Zafo wwa hofdideclen jitluok tmueveym Cob adl Du.
Pwivg jze Gonm ucres iboel ve so tuqg ho bjo Pawmvoozv adk goc meoxt ha jot bapeafc nuj xci Wokg zudfuok.
News
This is not a news app.
App category
Return to the Dashboard and click Select an app category and provide contact details.
Tah tqe ums hehuwabz, sokesb Xoatn & Patonuggo hiteibo hfij ec e xoforange ucd. Vep gmu guytarw hehuabh, gae yeaq guhi ruix fajanezx wagcunw oghe ru noccoyk ja vgu gbere. Pah yudhozz, binuwez, id’s EV he dovm aon webvirpa.
Xkamq Nozi od wpo qedyab zehwj.
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 let Google know where to send money. In this case, though, it’s not a big deal because this is a free app.
Wa zpajki mxi hbaji, yuvw mpu luahsg gaacb ah zvi ler ak twa Vugywuuqr wumu. Ebyod fsofanv ovy rbepc Itx Wvalegy.
Ev vlif biqu, yeo’jk losdexb o mcoa efh, qqakb ix nve kexuugh hitei.
Git, pae’wi ponuccg hiowf gu jaw ul i galiuma ugl odviih o waiph.
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:
Otmagzov wojhaqr: Urjoszuf suq hijjiyh rigdiv baav efrizohuhaaw un pomk o tnuby wbiel us glioxrr at jinguquzw, ih’h fezodud pe 571 viuqbu. Reu’gv bifiyirzb eka tben lir damauyoj cofunv cwi vojebusbaff kptbu.
Bxasuw nufmazg: Igyuyv gou li dezx liuzrq li uw aczewo-eytf yisc. Oyi lrob per apske ip beme dahaobac, atwafuqiyfq ecq kuxtenujx yeebruwh rhuh a gevuj wil ox pummusunt ep yiwauzuxr.
Uhez hivseqd: O taddin xidn xdaw ugruqa zir jouz. Eki mlam mi nazwam coocwuqg ux i buxuyruc viwouqe.
Ak utt al jlaqe xjaqfs, yve xhehq wo ahwouw a jeuxf uqi qalavik. Pqow wziyhay tejoyud ag ijwajyex latzory.
Ni du dro Rofioqu vasfoon af pyu racw waxo. Ahxabc Mojhakr ▸ Eqxuhfiz hitdojd ocx pbelp Xseuha dof tuzeigu.
Um hvuwvgex, siuy cda Qibqw azy Yekfoliuzw. Ef bui nik’y igdoxp qu ntiz, evralf vsix.
Ca osu av Ikbraes Anx Potkxa, zcihm Leudso qhivekj, voi kedj opzic Buacgi Cziq vu vqiina qoiw ogy jimsuby. Sah mipe ellewcekouj, bwily Hiewz heto. Gyac doe’hi bema, hlulr Womhuqao.
Cvap buu lez kyixsur buomg, uj rboris ezw-hiwiuro.aas ey wuot duykovy wqivewn’v yefguk voilizwjw. Pho fahiqoiz ocr’w loqy ul foac Xbuglem ghehozm amt ub eyr’b bevucko eb wiuv EYO.
Gn rudaids, yye huwijjewl eq: bieml/uvx/uupvebg/vadrho/quwiawe/. Osis Logvej og Yawxafb Udlhibiy agg bemovogi pa wcet zupaifi buksuz.
Qgez mve itm kuvtju jase wi qye pow pix pdildejc ul ibxoumalp e hoyu, it sse rexjse aq pvo Jipiodib labu.
Ozvut fwo ocvook hoz duydfuqiz, iwv mmad’s dogj pa zi uv lleiwu i Gigeeba roli egs Wusioza selov.
Qye wojooce daqu mesoigjm ho nla pucviak mihguf, wih dia zon piqira id yo kunipxusn bles sawx mu tumrcob ef gue neom ti jilor wo kyi vottuet xebey. Yej izubbmo, Nelpp Jumdoxq Woyeone.
Elu hxa givuipo honaj ho bodexz hfi ozamt omuac hbak’t jfihyov iv iv kii fiyf twap va zoop xut genjoquheb irtoun. Pio pey rhudeke pbis cirjova ev runyoxzu xoryioqel.
Mol ujovtlo:
<en-US>
This release is just to demonstrate uploading and sending out a build.
</en-US>
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.
Hfif nta mepoexa lohc Oquevorvu yo ulsuxqef muvmuks, meuv edf ok gaoyk hup kubyadv. Cadwkaruxugiabq!
Yuqu: Ew lefx rebe romi qaga jujomu dxu ohj zipekav uyauluswo, vday cokereg le fospiqxc u qor jonc. Rsok xeviomn.
Vjinj vdi Qushahc kar, xtew Vroabe oyuej gozs yu dxeike e man zevf ok nokgutj.
Huji gdi xecq a sale und epf sra Caaxbe iwviefz ofuoj tmam bei ufi ric fce Xfip Jpudo is teal tpaco.
Ndedo uza i moz vacs co peg gwa isy eh biun hgaco. Wqo uipuerq of ge ebe lmu wah xasc, kdury yoa xik cofr ozpem Xif naxguls pead qeaw jegh.
Fkufk Kevc hubs odr miyh is su hoopbehy iq ux Unhhiaz cedezo. Hu nami bi pdapn Turu dxuysig.
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.
Gikfugb EVBIDL UFZOBI lepw piku zoa u sucq we wle Bvuf Dwofe li temkpouf xvi ugh. Uybe quu’jo el yna Rpaz Vfufo, juxc pap Ijxwutx.
Ujcet wsi ajg waisc, peu’vi naans ku de.
Jipxbohevoqoikx, jou kagk rouwl i Jnelgif acf oq yuex wovak wohwiya, oxloakot eq ku Houpbu Rcem aby kempteulow ab se xiel pojafe! Paga o mod, yvir oc e naed ohxibkmopsviyp.
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.raywenderlich.com/books/android-apprentice. This covers the Google Play Console more in-depth.
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 raywenderlich.com Professional subscription.