import Ġcom . android . build . gradle . Library Extension Ċ import Ġcom . android . build . api . variant . Library Android Components Extension Ċ import Ġcom . android . build . gradle . App Extension Ċ import Ġcom . android . build . gradle . App Plugin Ċ import Ġcom . android . build . gradle . Base Extension Ċ import Ġcom . android . build . gradle . Library Plugin Ċ Ċ // ĠTop - level Ġbuild Ġfile Ġwhere Ġyou Ġcan Ġadd Ġconfiguration Ġoptions Ġcommon Ġto Ġall Ġsub - projects / modules . Ċ build script Ġ{ ĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġgoogle () ĊĠĠĠĠĠĠĠ Ġmaven Central () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġclasspath ( Build Plugins . ANDROID ) ĊĠĠĠĠĠĠĠ Ġclasspath ( Build Plugins . G MS ) ĊĠĠĠĠĠĠĠ Ġclasspath ( Build Plugins . SAFE _ ARGS ) ĊĠĠĠĠĠĠĠ Ġclasspath ( kotlin ( module Ġ= ĠBuild Plugins . Kotlin . ID , Ġversion Ġ= ĠBuild Plugins . Kotlin . VERSION )) ĊĠĠĠĠĠĠĠ Ġclasspath (" org . jetbrains . kotlin : kotlin - gradle - plugin : 1 . 6 . 1 0 ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġproject Jvm Target Ġ= ĠJava Version . VERSION _ 1 _ 8 Ċ Ċ sub projects Ġ{ ĊĠĠĠ Ġproject . plugins . configure App And Modules ( sub Project Ġ= Ġproject ) Ċ } Ċ Ċ fun ĠPlugin Container . configure App And Modules ( sub Project : ĠProject ) Ġ= Ġapply Ġ{ ĊĠĠĠ Ġwhen Plugin Added Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApp Plugin Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Project . extensions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getBy Type < App Extension >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply App Common s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLibrary Plugin Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsub Project . extensions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getBy Type < Library Extension >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Library Common s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠProject . disable Variants () Ġ{ ĊĠĠĠ Ġval Ġextension Ġ= Ġproject . extensions ĊĠĠĠĠĠĠĠ Ġ. get ByName (" android Components ") Ġas ĠLibrary Android Components Extension ĊĠĠĠ Ġextension . before Variants ( extension . selector (). with Build Type (" debug ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . enabled Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠApp Extension . apply App Common s () Ġ= Ġapply Ġ{ ĊĊĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠ Ġapplication Id Ġ= ĠAndroid . Client . APP _ ID ĊĠĠĠĠĠĠĠ Ġversion Code Ġ= ĠAndroid . Client . VERSION _ CODE ĊĠĠĠĠĠĠĠ Ġversion Name Ġ= ĠAndroid . Client . VERSION _ NAME ĊĊĠĠĠĠĠĠĠ Ġjava Compile Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Processor Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ+= Ġmap Of (" room . schema Location " Ġto Ġ"$ project Dir / schemas ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbuild Types Ġ{ ĊĠĠĠĠĠĠĠ Ġget ByName (" release ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Min ify Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Shrink Resources Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Debug gable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpro guard Files ( getDefault Pro guard File (" pro guard - android . txt "), Ġ" pro guard - rules . pro ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget ByName (" debug ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Debug gable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Min ify Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġapply Base Common s () Ċ } Ċ Ċ fun ĠLibrary Extension . apply Library Common s () Ġ= Ġapply Ġ{ ĊĠĠĠ Ġapply Base Common s () Ċ } Ċ Ċ fun ĠBase Extension . apply Base Common s () Ġ= Ġapply Ġ{ ĊĊĠĠĠ Ġ// ĠCreate Ġa Ġvariable Ġcalled Ġkeystore Properties File , Ġand Ġinitialize Ġit Ġto Ġyour ĊĠĠĠ Ġ// Ġkeystore . properties Ġfile , Ġin Ġthe Ġroot Project Ġfolder . ĊĠĠĠ Ġval Ġkeystore Properties File Ġ= Ġroot Project . file (" keystore . properties ") ĊĊĠĠĠ Ġ// ĠInitialize Ġa Ġnew ĠProperties () Ġobject Ġcalled Ġkeystore Properties . ĊĠĠĠ Ġval Ġkeystore Properties Ġ= Ġjava . util . Properties () ĊĊĠĠĠ Ġ// ĠLoad Ġyour Ġkeystore . properties Ġfile Ġinto Ġthe Ġkeystore Properties Ġobject . ĊĠĠĠ Ġkeystore Properties . load ( java . io . FileInputStream ( keystore Properties File )) ĊĊĠĠĠ Ġsigning Configs Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate (" release ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Alias Ġ= Ġkeystore Properties . getProperty (" key Alias ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey Password Ġ= Ġkeystore Properties . getProperty (" key Password ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore File Ġ= Ġfile ( keystore Properties . getProperty (" store File ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore Password Ġ= Ġkeystore Properties . getProperty (" password ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompile Sdk Version ( Android . Sdk . COMPILE ) ĊĠĠĠ Ġdefault Config . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġmin Sdk Ġ= ĠAndroid . Sdk . MIN ĊĠĠĠĠĠĠĠ Ġtarget Sdk Ġ= ĠAndroid . Sdk . TARGET ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompile Options . apply Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Compatibility Ġ= Ġproject Jvm Target ĊĠĠĠĠĠĠĠ Ġtarget Compatibility Ġ= Ġproject Jvm Target ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġflavor Dimensions (" type ") ĊĊĠĠĠ Ġproduct Fl avors Ġ{ ĊĊĠĠĠĠĠĠĠ Ġcreate (" dev ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdimension Ġ= Ġ" type " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Configurations . addAll ( listOf (" en ", Ġ" xx hdpi ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcreate (" prod ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdimension Ġ= Ġ" type " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// signing Config Ġ= Ġsigning Configs . get ByName (" release ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ