package Ġcom . al per br y . build tracker . util . android . extension Ċ Ċ import Ġcom . al per br y . build tracker . data . android . Android Project Type Ċ import Ġcom . al per br y . build tracker . data . android . Build Tracker Android Extensions Ċ import Ġcom . al per br y . build tracker . util . extension . Extension Extractor Ċ import Ġcom . al per br y . build tracker . util . android . Android Variant Mapper Ċ import Ġcom . al per br y . build tracker . util . extension . android Extension Ċ import Ġcom . android . build . gradle . App Extension Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Unknown Domain Object Exception Ċ Ċ class ĠApplication Extension Extractor ( ĊĠĠĠ Ġprivate Ġval Ġmapper : ĠAndroid Variant Mapper , ĊĠĠĠ Ġprivate Ġval Ġbase App Module Extension Extractor : ĠBase App Module Extension Extractor Ċ ) Ġ: ĠExtension Extractor < Build Tracker Android Extensions > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġwith Extensions ( project : ĠProject , Ġblock : Ġ( Build Tracker Android Extensions ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase App Module Extension Extractor . with Extensions ( project , Ġblock ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnknown Domain Object Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUnless Ġit Ġis Ġthe Ġbase Ġmodule Ġof Ġapp Ġwith Ġdynamic Ġfeatures ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġandroid Extension < App Extension >( project ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġextension . application Variants . all Ġ{ Ġapp Variant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBuild Tracker Android Extensions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsdk Directory Ġ= Ġextension . sdk Directory , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodule Ġ= Ġproject . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariant Ġ= Ġmapper . map ( variant Ġ= Ġapp Variant ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject Type Ġ= ĠAndroid Project Type . APPLICATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). let ( block ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ