build script Ġ{ ĊĠĠĠ Ġdependency Lock ing Ġ{ ĊĠĠĠĠĠĠĠ Ġlock Mode . set ( Lock Mode . STRICT ) ĊĠĠĠĠĠĠĠ Ġlock All Configurations () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġrepositories Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Repo Restriction Enabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġmaven (" https :// dl . google . com / dl / android / maven 2 /") Ġ{ Ġ// google () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Repo Restriction Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude Group (" android x . navigation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude Group (" com . android . tools ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude Group (" com . google . testing . platform ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude GroupBy Regex (" android x .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude GroupBy Regex (" com \\. android .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinclude GroupBy Regex (" com \\. android \\. tools .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmaven (" https :// plugins . gradle . org / m 2 /") Ġ{ Ġ// Ġgradle Plugin Portal () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Repo Restriction Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Group (" android x . navigation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Group (" com . android . tools ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Group (" com . google . testing . platform ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude GroupBy Regex (" android x .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude GroupBy Regex (" com \\. android .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude GroupBy Regex (" com \\. android \\. tools .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmaven (" https :// repo . maven . apache . org / maven 2 /") Ġ{ Ġ// Ġmaven Central () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Repo Restriction Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Group (" android x . navigation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Group (" com . android . tools ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Group (" com . google . testing . platform ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude GroupBy Regex (" android x .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude GroupBy Regex (" com \\. android .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude GroupBy Regex (" com \\. android \\. tools .* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġclasspath (" com . android . tools . build : gradle :${ properties [" ANDROID _ GRAD LE _ PLUGIN _ VERSION "] }") ĊĠĠĠĠĠĠĠ Ġclasspath (" android x . navigation : navigation - safe - args - gradle - plugin :${ properties [" AND RO IDX _ NAV IG ATION _ VERSION "] }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġid (" com . github . ben - man es . versions ") ĊĠĠĠ Ġid (" io . gitlab . art urb os ch . de te kt ") ĊĠĠĠ Ġid (" zc ash . kt lint - con ventions ") Ċ } Ċ Ċ tasks Ġ{ ĊĠĠĠ Ġregister (" de te kt All ", Ġio . gitlab . art urb os ch . de te kt . Det ek t :: class ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparallel Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġset Source ( files ( project Dir )) ĊĠĠĠĠĠĠĠ Ġinclude (" ** /*. kt ") ĊĠĠĠĠĠĠĠ Ġinclude (" ** /*. k ts ") ĊĠĠĠĠĠĠĠ Ġexclude (" **/ resources /** ") ĊĠĠĠĠĠĠĠ Ġexclude (" **/ build /** ") ĊĠĠĠĠĠĠĠ Ġexclude (" **/ common Test /** ") ĊĠĠĠĠĠĠĠ Ġexclude (" **/ jvm Test /** ") ĊĠĠĠĠĠĠĠ Ġexclude (" **/ android Test /** ") ĊĠĠĠĠĠĠĠ Ġconfig . set From ( files ("${ root Project . project Dir }/ tools / de te kt . yml ")) ĊĠĠĠĠĠĠĠ Ġbuild Up on Default Config Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġwith Type < com . github . ben man es . gradle . versions . updates . Dependency Updates Task > Ġ{ ĊĠĠĠĠĠĠĠ Ġgradle Release Channel Ġ= Ġ" current " ĊĊĠĠĠĠĠĠĠ Ġresolution Strategy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponent Selection Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Non Stable ( candidate . version ) Ġ&& Ġ! is Non Stable ( current Version )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreject (" Un stable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġun stable Keywords Ġ= ĠlistOf (" alpha ", Ġ" beta ", Ġ" rc ", Ġ" m ", Ġ" ea ", Ġ" build ") Ċ Ċ fun Ġis Non Stable ( version : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġversion LowerCase Ġ= Ġversion . toLowerCase () ĊĊĠĠĠ Ġreturn Ġun stable Keywords . any Ġ{ Ġversion LowerCase . contains ( it ) Ġ} Ċ } ĊĊ Ċ // ĠAll Ġof Ġthis Ġshould Ġbe Ġref actored Ġto Ġbuild - con ventions Ċ sub projects Ġ{ ĊĠĠĠ Ġplugin Manager . with Plugin (" com . android . library ") Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . the < com . android . build . gradle . Library Extension >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Base Extension () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ[# 5 ]: ĠFigure Ġout Ġhow Ġto Ġmove Ġthis Ġinto Ġthe Ġbuild - con ventions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Coverage Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj aco co Version Ġ= Ġlibs . versions . jac oco . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġplugin Manager . with Plugin (" com . android . application ") Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . the < com . android . build . gradle . App Extension >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure Base Extension () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġcom . android . build . gradle . Base Extension . configure Base Extension () Ġ{ ĊĠĠĠ Ġ// ĠTODO Ġ[# 2 2 ]: ĠFigure Ġout Ġhow Ġto Ġmove Ġthis Ġinto Ġbuild - con ventions ĊĠĠĠ Ġtest Options Ġ{ ĊĠĠĠĠĠĠĠ Ġanimations Disabled Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġif Ġ( project . property (" IS _ USE _ TEST _ OR CHE STR ATOR "). toString (). to Boolean ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Ġ= Ġ" AND RO IDX _ TEST _ OR CHE STR ATOR " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ