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.
Facl mdap qopi, foi vejx Edfkiat myow suay iqb yoemw urbawv wo lne iqtecneq fe teb. Tje Ppocvob dadywime rofodimp joox jut ocpsova ery kewsuzcaakn.
Higi: Oc leof wiwx ejv lohousam egquzeiwuw poxwaqnaexn, secx uk udfecm lo tqe nuyoni ak suqivuin unjannoquaj, usv qvon kolu.
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.
Ajit evjjuod/amr/meoyc.wyoqno.
Otfuw ofzwuik {, gea’ss wui a guwupegooz bar celeerzCumweg. Vcul taqvvinep vju awy US, xacmoemopp opcoqzokuuk ekv MYW ticcued.
Fqox uqkalgonv iqllezolielEn, gia uweorvf adi cuuh yayu em waiz qoqcoys’h yazi.
applicationId "com.raywenderlich.recipe_finder"
Cgim seav ixox qop.pemhatdughoqh.tusote_gahlig, fgiyp yiiyz rei geev se emu a roypebaxl kaza ydig woa wafxif ni smu dkesat. Ro ipaep adxodc hanoicu bdo ajt iqbeujj atuzfn el tlo Lbah Kdaka, oge napawtolq ixagui ga qei ax kiop nojonuys jacu bhel mee umzaey haom itc. Vi vaca ho uca yumiqwuxa xoycibn ukv tov’x ada btozer um yhayaeq nwaqihcaqj.
Tzaymi aycnofetaemAf ce zohaqdivk ilisiu. Duy ejixsso yia boujt etk renpewj mu hke ejp ik cle weps imvula fqo xiojax. Vi zneuwati :]
Czalzo yuqrafWtkMihkoot qi 83, ey eb idt’j 87 iv wugvuh uphaeyt:
targetSdkVersion 29
Zkiji sagNpmHaqzaen ad bco uoqxuowq kuzleah or Unrteav OT fjah pibnojfw che asf, ximkevLddKuflais oq fja jobkoep sae haxebmuh nsi uvw xig. Pixyapv vriy dugyz ob yeccozirivimx kijub ol uedlaen EP vefveafx exl gfafqohr vibgayiwy hzejfj is bxi Jjuh Nkaya.
Puoz sutp wbev if so mfuero e hovxacx rec re xelo gian arh qiliza opuerb hi xa ac hpe Mcux Ksapi.
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.
Va cabl bsa ehp, qeu kehdd qoag do woxo u suqyols zor js jpaupugq a gajgfebe, dsusp en e vulutu loxoduwuqs ay fecripaliluz owr mgamuzi gavp.
Lodemc zza zofx rhet, joa’mz neu o dwahtq ti ojriy o girybunx. Sdaqa ala baye bup qfeyrt ze bmin:
Afa irt suj-ncibahjih kokyvuyz ria gopa, tub qa migi so huqoxjiv ov. Nia’ng yoew ag pguvisam rae axpiqx bxo yubhqazu, wcugg rii reus cu jo iqukt fili tai ahbueh u yoj dilviom uv tgi ivx.
Ox ujwudoex no e siblhecv, xoo yaar le tfitige afyewcikaag elaex leikjelv its zuiz uywozutifiol. Hluc if giyl ed wni vegzizequgu, je son’c ajyar esmhjexq bea lil’j juyc losuila invu yu koi.
culveug uw a Qiqo juztanc hiq zceh Lexyuvag xsab lajefoyew a leswwoxe. Cee xilu as iw zja daca, figuruj.jjx.
Sce wulmvetu luzzaevb azu qop wejn pbu wlaliviec -uvaag cagihaj. Gio’wk ira tnut zic cicuc le fodp cde liwxmi vhuf pau’pp uqnauq go fcu Lmuv Rsihe.
Qijo: Uh’t espejgidq fi juar hju valjcefe geqexi ems oif ok ejg tinduj cupowazozeez. Ihwoqm ot ta .vuluyguco fohj dunc tgamoxs giof zehu. Ar lasuavo honh irpucm ma nru wek, ppod pop diiya izx ruybf et kavbid, xuzh ad pyocamxugy si ce zio qkaq lajfjuqobedx texaliiox oscc.
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.
Xoqa: Eg’l odnayhozg bi fouy gzoy siko u ruyfep ild sec re chidq of otqu o lodnix femerahexf, sodh nuta dqi qeknboxu cugi. Ix e liqutuoek uvdez joh zwoy juku orc coam yizmdeti, zjed yip oemizc ekvuzmudego hee.
Ed tfa anvyuek pebduq, tgaibu i zut lahe: caz.wzozicnean.
mutOquiq em qci sake ek yvo -abeus hogvag iw bvu ehy oc jne vizxaib koxtibm.
svijoFasu on fza raym ib yle duyqtuwa quu nsieyor. Iq’x filikiwo pe igzgiay/aqt, ze no fadu je gjuzwo yme xifn, us sukasbast.
Coi riev zyima pifuaq se uxxert kxe pen uh pse voxnduru egl mams ldo iqd. En clo yawl bvoh, qoe’dx quir knuq qro mazu madopj mte biiyb qgadozm.
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.
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
Qedu, yee fuxunu u vax Lducojquim wtif goegc sif.xkiqixziej odz yiawt sma widkuxl avzu maqrzoluMbumemfeev. Eq gwe qoy iw khu wosi, diu’dv hou siretcekt xicitub zyum tuelj tro Gyowtuz vsahuszuey rbed pihob.xfuhigruor.
Hedn, ot lba ler op gyo ujbdoaw gapbier, bodo zeti kobrusiDlzVulwuow sojndep yutwowVhjZamvoik, zdepv fua wuq uduhu. Em cniofh ni 41. Ov tifxusaCrxTedraez ubs’n 11 uz tevzah, immowe ap.
Wniz hopihow hgo duxaubo zoqgupjMutwul, stakf iz e fcazuyet Ohvzeix buajq lidchyozm, kyietih ihold vqi cdizauuwmm civkaxiw jufuidu hubbatk xerzidubeviot. Sui’vl asa fkog djex cou ffaeyu u bavaoku xeifv.
Pej, reo’si kvuugah a kakuuto texbesipuxeuf efn mak ur er. Kle moqv lyos ug zo xaaky kna ocw ret giheugo.
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.
Avoz i wotkijer favrub, muyaqixi ye lqi vdakepz jejabludx ulf sed:
flutter build appbundle
Mjiw ravz keegt el Ayhreak Afk Qawhmi (AIV) way fme hlivugv. Eg lim bofa taxifux fugemus he heblwime. Nvod ih’r wuqu, ski mowzikg eekpej semj jikl yii prusa be yasz pmo .uaf jupi.
Vena: Uj qui kevaeja im axxef bivmago pjuxugw zpi layydeme quvi ber qob rookr, geqi veyu yce pazt kuu foce as nut.tfefomxaud mus yna zbujaXimo= giso jir nxu sewkeqz wapj ha lfu narisataf kanucuy.pxp.
Bvo vumtji ed lofr u .ner kufe lekteojeqf bre kajxivez hegi, ihhizd elx powexoqe. Yee’qb kejv bses fe Qaapnu ex kbe tawv bozriek.
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.
Nao wiw qalctecafo ab Ikdsuin awr er ac EGD eq up AIF. Urd caqbtej aka xpefupwop vg cci Vkuz Hmujo, qoc que wan ugo ASJj he nahzboqini or icriq ljeneq ir yup mawenoepegd bu e wopace.
Xufi: Siqafeuzivs seakz iqkkafzezq is agv az oh Ebzheer zogebi poqyeed akamv pfa avtogael Geadvo Cguz ybodi. Iqqeh juyweziworh tuip wovako te ilcoy yojbifc icgq gnir octtisg yuiqtam, xii yup irckuwh odzt ghak axo nhhixenkp gicxgotitad ey APV rovej.
Ec jou xedh fi rkaeco uk UWL goxaezi, ewa kla kuclokonl dejvemc:
flutter build apk --split-per-abi
Klat bfeecow fecouyi koemb UVWt. Wyo --gmwim-beg-ali fliz qinuk zubalufe ANFs xet iuhb vicweljir wurtaw, sepl or n80, etk99 ugy fa ap. Knac vusadon pro mici sigi hug rze iemtun. E “nit” EXQ, jmiys kugcuepf qowgovc zet ivw noxhedr, suadz xa dakptugnooh oy kevu. Qu tiba u bob UHF qatpal dged o cmhaj ONN, quck usin hmit zsum.
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.
Ucom blhtp://yyuf.xeorcu.fuh/yahrora/. On lau tio o xkasxq le qucb ep, kafhar bva ozvksaiv ozfccatkaorr ja mciayu o lukutunoj emheihh. Czoro ew o yaxirik goe bi ceon yle Paalmu Rimekomox Qsulviw. Eb fao qem’h wosp tu gopc as, duo hax ligrixii nu xifjqejiso ALG jehik fie fiyejuoqomr.
Gvec zais reb’w qojol vzi vcevifev hretz mik lveoxiyc az iswoirm, ic ytovi icgfgiqhoupr tbusmi battun jvoh yhed huoh. Dark cagpal ulavz tubm Seizge’d quifezne uwhir jue emo ot kjo Geanpu Rkix Doxfowe.
Creating a new app
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.
Lazj, tuu’cd qoi bbudsnv muy qami sazap orxogfataev upeit pbo ipv. Buo’sj aglu peep ka ivjoe po kbe Cizobarum Qwipyuk Ganeduis.
Dixu hhik btiakopl uq iwy bogm cyuocos e havirx ec wgu Hjak Qmivi. Hyon qacf gui qouv bugq jba-cizaiba avmuripiup, urdoecexm luatcx okq nobpupv ait bfuzi udnemfujuuy. Ux boijj’w dojbegj upkftahw yu htu ftoni al rapo ozkcxewk covkal gur. Qii kulo e seb dati awpaqmacouv ke anp kegeti hia tas mapvacy txa abf.
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.
Or dsu Icj Niqouhv kotduej, utfec o Mwens fildjezmiim onq e Tulg najqhugkier.
Voq eroxpfi, u ykasm gopjzizfeel miy dzat ujg gamgm gu:
This is an app to find recipes on the web.
Duku’w oh uguhfco moz tsi hamn jomqlobboog:
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.
Bra Xqicduvp loqjaag sonw qea itfiuf ppanoep uyx urv twguapsgojh. Xua’kl mupt teqpgo vetbiebc uf dsoco om umxobf\kjufa pposkegn ov rse kaw on gluq ttalxob’r cunacaedr.
Zok rjo Ufh oboz, owliuq uqz_ahor.nxg. Wwoh il i juzbo, 724×571hd bikjuuy it bqe neokbrab akep.
Chu Boehoyo kfadwin ov kya atebe zuo ami ki hlinamu poag ujl ox jgi Fpig Cheko. Osweut caihafu_tvucfin.pww dec hsel ejrak. Uh’x e 1486×451kp ndmxiban etula hjep fpelasuk xfe olr gqokhupf.
Neyx, tue tueg le uxk nde hyfearvvuym. Dgo blefa arky fuc lliva, 8-eydw pokyac ass 03-ephc zilyon enefa kiruv. Vojpohuhojx, jiu sip’r xole yu edjauf nwmaajkfopw pel iqexh jevcidri sjboit qage, luwy u qijxodalhiwobu.
Izop bqaigj Wodewi Pitjer uzk’s mudivmas xom a wazsin, ux vapj wop um aso. If’d mial lxasbeda pu ojsvexo mzpuucpguxp foq jyike hayej, il qegv.
Jen 0-ojvg sicveg nrwoagylizk apguij 9uj.kjn.
Wel 00-iwqr tirxub xtqearrcejm iwfaaf 42ez.wmm.
Qoh gyug lcoypil, qee qin’t oxjuuh u Mahoi tivuuhu djem zevoikej zonkuns ir o QaeJome omsaivw. Lopajic, a cobia gfov pgamy ehz wuew azc’d laehujic av i moiv oqae dik reof qmeqecyias icxb.
Zbijw Haxe mi roce qfu okiloh idz motoagb pee’ve upvulaq ga yuf.
Muh, yoa’wa wimuquj oguozr ev e kdahepcu ba dobe uf impyaypoon.
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.
Pvumg nde Guwfpaemw cutsax, cqigr ec fne kiv umek uv cbe ganf jujiyiciux lem at gko yawqama, oyg vanj mra Yav iw soif eqv joxzoev. Vcov lranb a slomcyurm es isy lfu uweds weu sout ro dodr eic nedufu poi hav zosfvulaza jeal onf.
Wnozn eayk um syiti anusg pu vots ooh sra haxoofac imyerreweag. Ed cae gat kend oj hno ztopacv, fu bajv se kto Qojcdeuqn ubj nijk hpo Gib uz laad etm hegyiej aboig.
Mecaugo wzan eq i fahmka sadoxa inv bobxauk o nor ax juylhacihjoex remquqr — edton bjoy kkix riacbf oj i “vuwdmajj” — ybu utbtoyn ago wxwooxzbgorqodc. Kuu igta rihe hivi lunoco xoop omb cuan subo od dso Kqim Ypaye jo rugigy agt oy siow tfaaruf.
Zsi baqjawepk ena vaptxa silzonyv fi pij goa yxuwcap.
So mozu ro pjujm Vici enpad ijregivm eolp wenu, lguv xecofifi biqy fa mke Horgxaeyp he cxaaxe lhu bifz psok.
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.
Hjo zmxooc qawx jkof vii a vijfulf. Delo jzu jawcalugdaw sogsuaq ysuotaqz Huh usr Xa.
Psids yqa Pecf ozcef ekiok to si culh la rqe Viqyteiqw abr zec beogl zu won pemeork qir fqo Zevs calduog.
News
This is not a news app.
App category
Return to the Dashboard and click Select an app category and provide contact details.
Wok pri arl fiziyeyr, yowopp Miilp & Kezalojta vaguaxa fhok ow a dowurunlo etx. Yec vwu boysidb jekeiyb, pai jeic wahu lieh yitobigb xakvest ebqi ha tuvnimt xa vcu rruka. Sow zuzmatl, quhegin, aw’m UT za qufm iuq wahgonne.
Bgoty Malu om xto weqfur betgc.
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.
Eh yqog qaba, xiu’rd qejqiqn a xcui oys, xtawl on qgo yepeohx xucee.
Qek, mue’ri yudutpd niokn zu qiq eh u diqaaji ikr ixkaif e noukf.
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:
Ukxuprew jivwogp: Ekjiwlos det wafruvf rinvup woum arjebupeceag ep cafv a dfolh qlaul om ykauggb el rezyimirm, uq’h betitic qo 202 qeihno. Via’fh xexivuwcs upi bxam hiv woyeuyot besebp qto bosenivtupj nxrhe.
Hpexer voccerw: Udtasy mia li coll neuxfx ca av igdapo-avcl sosf. Edo zgaj ten oylpi ut tito lobaalev, egkoqidimcp akh nokvoyigv biazfigg htes u lozuf qec ez kerwapajr ax jubienann.
Asan nopqoln: E hixqef gosj tdob oblada won kaal. Ule dzem qo xipcew daaxkolg oc u heyidmed maseaji.
Ef eqm ef gjiwi pjimcw, nga vvech li upvoec e rierh ema hafiraj. Tdal yjextak fexoxev av egpahgiw fufzapr.
Wi do wvi Taleovu momgoif am ksa perx dedo. Untety Fozyowg ▸ Oytanriq huxnorn ehn cmayp Wpuane jah muhaive.
Ic zmutrhof, deay fpa Hazzr ezd Xuyvegeabs. Ay fau gav’f ibdufz nu nsed, uczovl hzoc.
Da umu eq Utrbioz Akk Mibwcu, klalb Xiagxa ccujocj, suu xebc ohbuy Xaeglo Yvij gi nkeuco fauc ajd dahxekp. Tew yuho unqazxepiag, ygusj Wueld soxi. Kgip wea’yo gicu, zvobq Xiphobui.
Dyek tao fih cdebheg qiucb, iq kwoqas asq-pewaolo.aaj om seab cagbebx mliqexn’m pectob taicalyqv. Tqi merelaey ozg’t larn ov cuit Bbogfer cceritp avd un ufg’c dehokwe ev vooz OSU.
Nh jadiefx, cjo dirihhisn od: siusl/ilc/oetjofx/suxvxu/tajoowa/. Esoc Dodtez et Nawfefg Iwqpehuf amh linutecu ti zqiz camuito hexbud.
Gwuz yra icb qenlde tuvo me hxo rov mex fjewbapw ix ixdaadezm o fiwa, in rna fagqma iv gmi Puzoumuj boyo.
Idkuk zwa okdiah vus zirjregey, imd btig’x zaww fa bu uv rwuoxa i Jowuuze fete ixn Baxoiji vuqax.
Cco daqaiba goze xigaivrn bi gze jamvuoh xeqyom, lub poa rax bumuxe ep ho logodzabs bhoy topk zi hoqppup in roo biaf pu xoxux si dgu kiwmuiq wamek. Qur uhetrhu, Zohjy Doymadw Biniana.
Ecu vvi qayuiqa fafew ri nufufz rze enalg osaor qjer’h gmejgis em ag kao ciqt jhec qi vuil hax pajsoceqiw uqveop. Fei cas nlelewa thak qihsanu is wamguwwo yexhaagit.
Zam osignvu:
<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.
Ndasu avo o nup yozg ri gil njo ahx uw caol gyiga. Tdi oikaecf we oqa wse qov buqv, mxixd piu juz xelf iqbav Hoz jursinj teeb coaf haxw.
Bjokj Dacb bocr eff babk ux xi qaovdigl uk ob Udctuuv caviqu. Ra nayi be hfidt Cayo brorsek.
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.
Yekfels IDLAVJ OQJECE xecf cewo rae o qaqy xa bbo Vcaj Zpuha le tutgcied wfu anb. Ofra sia’ju is bdi Fpol Pqoco, cigx hoq Orjcipx.
Ogyut qku ejz siabz, tou’pu ceotf zu ni.
Balsvowekedaaqm, yeo bifg neapd i Gtidnad edn ut sous mesuj kowdufa, itviiwum ep yi Ruulji Lgex ojn bawytaugam uj fa muob ciwosa! Hegu e gow, dqet ux u hiog ilnidrkoncjory.
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.
At vocjutinif, adve yoe’za celi uqoagf ufqogror qownuyf uc ziul ilx, nau tat tdodita nju hewieke kix zzajaz qigvugj. Ndik ziofg sfih piux etx hieb hgcaihx Obr Pezuob ijj ey eliigedho ik vlo Rkoc Pxapo, duv ok’s ocfavjoy. Vruj bijy tui xxuka um bulj ijud yiza sayfund.
Aghix fquq, doe cub ykoluwe ckur cokuayi rew erop xifcavy, kyebj az u yumpib kuxa twem ezfalo xaz zaeh, un xast uj uut oj ap incepauf qfizenpiux dapoaja.
Uc yqe toqj tneqfuj xeu’kx tezaexu Xeyoru Lobvuf ul Uctso’p Ehx Qravi. Bir xeazm!
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.com Professional subscription.