import Ġcom . android . build . gradle . internal . dsl . Base Flavor Ċ import Ġcom . android . build . gradle . internal . dsl . Default Config Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġid ( Gradle Plugin Id . ANDROID _ APPLICATION ) ĊĠĠĠ Ġid ( Gradle Plugin Id . K OT LIN _ ANDROID ) Ġ// Ġor Ġkotlin (" android ") Ġor Ġid Ġ' kotlin - android ' ĊĠĠĠ Ġid ( Gradle Plugin Id . K OT LIN _ K AP T ) Ġ// Ġor Ġkotlin (" k apt ") ĊĠĠĠ Ġid ( Gradle Plugin Id . K TL INT _ GRAD LE ) ĊĠĠĠ Ġid ( Gradle Plugin Id . SAFE _ ARGS ) ĊĠĠĠ Ġid ( Gradle Plugin Id . ANDROID _ J UNIT _ 5 ) Ċ } Ċ Ċ android Ġ{ ĊĠĠĠ Ġcompile Sdk Version ( Android Config . COMPILE _ SDK _ VERSION ) ĊĊĠĠĠ Ġdefault Config Ġ{ ĊĠĠĠĠĠĠĠ Ġapplication Id Ġ= ĠAndroid Config . ID ĊĠĠĠĠĠĠĠ Ġmin Sdk Version ( Android Config . MIN _ SDK _ VERSION ) ĊĠĠĠĠĠĠĠ Ġtarget Sdk Version ( Android Config . TARGET _ SDK _ VERSION ) ĊĠĠĠĠĠĠĠ Ġbuild Tools Version ( Android Config . BUILD _ TOOLS _ VERSION ) ĊĊĠĠĠĠĠĠĠ Ġversion Code Ġ= ĠAndroid Config . VERSION _ CODE ĊĠĠĠĠĠĠĠ Ġversion Name Ġ= ĠAndroid Config . VERSION _ NAME ĊĠĠĠĠĠĠĠ Ġtest Instrumentation Runner Ġ= ĠAndroid Config . TEST _ INSTR UMENT ATION _ RUN NER ĊĊĠĠĠĠĠĠĠ Ġbuild Config Field From Gradle Property (" api BaseUrl ") ĊĠĠĠĠĠĠĠ Ġbuild Config Field From Gradle Property (" api Token ") ĊĊĠĠĠĠĠĠĠ Ġbuild Config Field (" FEATURE _ MODULE _ NAMES ", Ġget Feature Names ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbuild Types Ġ{ ĊĠĠĠĠĠĠĠ Ġget ByName ( Build Type . RELEASE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Min ify Enabled Ġ= ĠBuild Type Release . is Min ify Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpro guard Files (" pro guard - android . txt ", Ġ" pro guard - rules . pro ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget ByName ( Build Type . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Min ify Enabled Ġ= ĠBuild Type Debug . is Min ify Enabled ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtest Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Tests . is Return Default Values Ġ= ĠTest Options . IS _ RETURN _ DEFAULT _ VALUES ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompile Options Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠEach Ġfeature Ġmodule Ġthat Ġis Ġincluded Ġin Ġsettings . gradle . k ts Ġis Ġadded Ġhere Ġas Ġdynamic Ġfeature ĊĠĠĠ Ġdynamic Features Ġ= ĠModule Dependency . get Feature Modules (). to Mutable Set () ĊĊĠĠĠ Ġlint Options Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠBy Ġdefault Ġlint Ġdoes Ġnot Ġcheck Ġtest Ġsources , Ġbut Ġsetting Ġthis Ġoption Ġmeans Ġthat Ġlint Ġwill Ġnot Ġeven Ġparse Ġthem ĊĠĠĠĠĠĠĠ Ġis Ignore Test Sources Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbuild Features . view Binding Ġ= Ġtrue ĊĊĠĠĠ Ġcompile Options Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 ĊĠĠĠĠĠĠĠ Ġtarget Compatibility Ġ= ĠJava Version . VERSION _ 1 _ 8 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġkotlin Options Ġ{ ĊĠĠĠĠĠĠĠ Ġj vm Target Ġ= ĠJava Version . VERSION _ 1 _ 8 . toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ dependencies Ġ{ ĊĠĠĠ Ġ// ĠGradle Ġ 7 Ġintroduces Ġversion Ġcatalog s Ġ- Ġa Ġnew Ġway Ġfor Ġsharing Ġdependency Ġversions Ġacross Ġprojects . ĊĠĠĠ Ġ// ĠDependencies Ġare Ġdefined Ġin Ġgradle . settings . k ts Ġfile . ĊĠĠĠ Ġ// ĠFalse Ġpositive Ġcannot Ġaccess Ġclass Ġ( fixed Ġin ĠInt eli J ĠIDEA Ġ 2 0 2 1 . 1 ĠE AP Ġ 1 Ġa fair ) ĊĠĠĠ Ġapi ( libs . bundles . kotlin ) ĊĠĠĠ Ġapi ( libs . bundles . ste tho ) ĊĠĠĠ Ġapi ( libs . bundles . ret rofit ) ĊĠĠĠ Ġapi ( libs . bundles . okhttp ) ĊĠĠĠ Ġapi ( libs . bundles . kode in ) ĊĠĠĠ Ġapi ( libs . play . core ) ĊĠĠĠ Ġapi ( libs . bundles . k tx ) ĊĠĠĠ Ġapi ( libs . bundles . navigation ) ĊĠĠĠ Ġapi ( libs . bundles . lifecycle ) ĊĠĠĠ Ġapi ( libs . bundles . room ) ĊĠĠĠ Ġapi ( libs . tim ber ) ĊĠĠĠ Ġapi ( libs . co il ) ĊĠĠĠ Ġapi ( libs . constraint layout ) ĊĠĠĠ Ġapi ( libs . coordinator layout ) ĊĠĠĠ Ġapi ( libs . appcompat ) ĊĠĠĠ Ġapi ( libs . recyclerview ) ĊĠĠĠ Ġapi ( libs . material ) ĊĠĠĠ Ġapi ( libs . coroutines ) ĊĠĠĠ Ġapi ( libs . lott ie ) ĊĊĠĠĠ Ġk apt ( libs . room . compiler ) ĊĊĠĠĠ Ġtest Implementation ( project ( Module Dependency . LIBRARY _ TEST _ UTILS )) ĊĠĠĠ Ġtest Implementation ( libs . bundles . test ) ĊĊĠĠĠ Ġtest Runtime Only ( libs . junit . jupiter . engine ) Ċ } Ċ Ċ /* Ċ T akes Ġvalue Ġfrom ĠGradle Ġproject Ġproperty Ġand Ġsets Ġit Ġas Ġbuild Ġconfig Ġproperty Ċ Ġ*/ Ċ fun ĠBase Flavor . build Config Field From Gradle Property ( gradle PropertyName : ĠString ) Ġ{ ĊĠĠĠ Ġval Ġproperty Value Ġ= Ġproject . properties [ gradle PropertyName ] Ġas ? ĠString ĊĠĠĠ ĠcheckNotNull ( property Value ) Ġ{ Ġ" Gradle Ġproperty Ġ$ gradle PropertyName Ġis Ġnull " Ġ} ĊĊĠĠĠ Ġval Ġandroid ResourceName Ġ= Ġ" GRAD LE _${ gradle PropertyName . to Snake Case ()} ". toUpperCase () ĊĠĠĠ Ġbuild Config Field (" String ", Ġandroid ResourceName , Ġproperty Value ) Ċ } Ċ Ċ /* Ċ Return Ġnames Ġof Ġthe Ġfeatures Ċ Ġ*/ Ċ fun Ġget Feature Names () Ġ= ĠModule Dependency . get Feature Modules () ĊĠĠĠ Ġ. map Ġ{ Ġit . replace (": feature _", Ġ"") Ġ} ĊĠĠĠ Ġ. toSet () Ċ Ċ fun ĠString . to Snake Case () Ġ= Ġthis . split ( Regex (" (? =[ A - Z ]) ")). join ToString ("_ ") Ġ{ Ġit . toLowerCase () Ġ} Ċ Ċ /* Ċ Adds Ġa Ġnew Ġfield Ġto Ġthe Ġgenerated ĠBuild Config Ġclass Ċ Ġ*/ Ċ fun ĠDefault Config . build Config Field ( name : ĠString , Ġvalue : ĠSet < String >) Ġ{ ĊĠĠĠ Ġ// ĠCreate ĠString Ġthat Ġholds ĠJava ĠString ĠArray Ġcode ĊĠĠĠ Ġval Ġstr Value Ġ= Ġvalue . join ToString ( prefix Ġ= Ġ"{ ", Ġseparator Ġ= Ġ",", Ġpostfix Ġ= Ġ" }", Ġtransform Ġ= Ġ{ Ġ"\" $ it \"" Ġ}) ĊĠĠĠ Ġbuild Config Field (" String [] ", Ġname , Ġstr Value ) Ċ } Ċ