package Ġcom . ph od al . grad roid . plugin Ċ Ċ import Ġcom . ph od al . grad roid . Application Task Manager Ċ import Ġcom . ph od al . grad roid . Variant Manager Ċ import Ġcom . ph od al . grad roid . internal . Dependency Manager Ċ import Ġcom . ph od al . grad roid . internal . Extra Model Info Ċ import Ġcom . ph od al . grad roid . internal . Model Builder Ċ import Ġcom . ph od al . grad roid . internal . Variant Dependencies Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Java Base Plugin Ċ import Ġorg . gradle . internal . reflect . Instanti ator Ċ import Ġorg . gradle . tool ing . provider . model . Tool ing Model Builder Registry Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠApp Plugin Ġ@ Inject Ġconstructor ( private Ġvar Ġinstanti ator : ĠInstanti ator , Ġprivate Ġvar Ġregistry : ĠTool ing Model Builder Registry ) Ġ: ĠPlugin < Project > Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtask Manager : ĠApplication Task Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproject : ĠProject ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġextra Model Info : ĠExtra Model Info ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġvariant Manager : ĠVariant Manager ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġverify Ret ire ment Age () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġverify Ret ire ment Age () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . project Ġ= Ġproject ĊĊĠĠĠĠĠĠĠ Ġconfigure Project () ĊĊĠĠĠĠĠĠĠ Ġcreate Extension () ĊĊĠĠĠĠĠĠĠ Ġcreate Tasks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Project () Ġ{ ĊĠĠĠĠĠĠĠ Ġextra Model Info Ġ= ĠExtra Model Info ( project ) ĊĠĠĠĠĠĠĠ Ġproject . apply Ġ{ ĠJava Base Plugin :: class . java Ġ} Ċ // ĠĠĠĠĠĠĠ Ġproject . apply Ġ{ ĠJ aco co Plugin :: class . java Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġproject . tasks . get ByName (" assemble "). description Ġ= Ġ" As semb les Ġall Ġvariants Ġof Ġall Ġapplications Ġand Ġsecondary Ġpackages ." ĊĠĠĠĠĠĠĠ Ġproject . gradle . build Finished Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġclear Ġcache ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . gradle . task Graph . when Ready Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( task Ġin Ġit . all Tasks ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġload Ġcache ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Extension () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġconfig Container Ġ= Ġproject . container ( P Config :: class . java , ĠP Config Factory ( inst anti ator )) ĊĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġproject . extensions . create (" ph od al ", ĠApp Extension :: class . java , Ġproject , Ġinstanti ator ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdependency Manager Ġ= ĠDependency Manager ( project , Ġextra Model Info ) ĊĠĠĠĠĠĠĠ Ġdependency Manager . resolve Dependency For Config ( Variant Dependencies ()) ĊĊĠĠĠĠĠĠĠ Ġtask Manager Ġ= ĠApplication Task Manager ( project , Ġdependency Manager ) ĊĠĠĠĠĠĠĠ Ġvariant Manager Ġ= ĠVariant Manager ( project , Ġtask Manager , Ġextension ) ĊĊĠĠĠĠĠĠĠ Ġval ĠmodelBuilder Ġ= ĠModel Builder ( task Manager , Ġvariant Manager ) ĊĠĠĠĠĠĠĠ Ġregistry . register ( model Builder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġensure Target Setup () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Android Tasks ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Android Tasks ( force : ĠBoolean ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( project . plugins . has Plugin ( Java Plugin :: class . java )) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġ' java ' Ġplugin Ġhas Ġbeen Ġapplied , Ġbut Ġit Ġis Ġnot Ġcompatible Ġwith Ġthe ĠAndroid Ġplugins ." Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġproject . configurations . all Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġresolution Strategy . each Dependency Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtask Manager . create Mock able Jar Task () ĊĠĠĠĠĠĠĠ Ġvariant Manager . create Android Tasks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġensure Target Setup () Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ