package Ġcom . bo iq in . f ata ar Ċ Ċ import Ġcom . android . build . gradle . api . Library Variant Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Task Ċ import Ġorg . gradle . api . artifacts . Module Version Identifier Ċ import Ġorg . gradle . api . artifacts . Resolved Dependency Ċ import Ġorg . gradle . api . artifacts . component . Component Artifact Identifier Ċ import Ġorg . gradle . api . artifacts . component . Component Identifier Ċ import Ġorg . gradle . api . internal . artifacts . Default Module Version Identifier Ċ import Ġorg . gradle . api . internal . artifacts . Default Resolved Artifact Ċ import Ġorg . gradle . api . tasks . Task Dependency Ċ import Ġorg . gradle . internal . Factory Ċ import Ġorg . gradle . internal . component . model . Default I vy Artifact Name Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠFl avor Artifact Ċ Ġ* Ġ@ author Ġke z ong Ġon Ġ 2 0 1 9 / 4 / 2 5 . Ċ Ġ* ĠModify Ġby Ġa lex b chen Ġon Ġ 2 0 1 9 / 1 1 / 0 5 Ċ Ġ*/ Ċ object ĠFl avor Artifact Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Flavor Artifact ( project : ĠProject , Ġvariant : ĠLibrary Variant , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun Resolved Artifact : ĠResolved Dependency , Ġversion : ĠString ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠDefault Resolved Artifact Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidentifier Ġ= Ġcreate Module Version Identifier ( un Resolved Artifact ) ĊĠĠĠĠĠĠĠ Ġval Ġartifact Name Ġ= Ġcreate Artifact Name ( un Resolved Artifact ) ĊĠĠĠĠĠĠĠ Ġval Ġartifact Project Ġ= Ġget Artifact Project ( project , Ġun Resolved Artifact ) ĊĠĠĠĠĠĠĠ Ġval Ġartifact File Ġ= Ġcreate Artifact File ( artifact Project !! , Ġvariant , Ġun Resolved Artifact , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Factory Ġ= ĠFactory Ġ{ Ġartifact File Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtask Dependency Ġ= Ġcreate Task Dependency ( artifact Project , Ġvariant ) ĊĠĠĠĠĠĠĠ Ġval Ġartifact Identifier Ġ= Ġcreate Component Identifier ( artifact File ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠDefault Resolved Artifact ( identifier , Ġartifact Name , Ġartifact Identifier , Ġtask Dependency , Ġfile Factory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Module Version Identifier ( un Resolved Artifact : ĠResolved Dependency ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠModule Version Identifier Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDefault Module Version Identifier . new Id ( un Resolved Artifact . module Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun Resolved Artifact . moduleName , Ġun Resolved Artifact . module Version ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Artifact Name ( un Resolved Artifact : ĠResolved Dependency ): ĠDefault I vy Artifact Name Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDefault I vy Artifact Name ( un Resolved Artifact . moduleName , Ġ" aar ", Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Component Identifier ( artifact File : ĠFile ): ĠComponent Artifact Identifier Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠComponent Artifact Identifier Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Component Identifier (): ĠComponent Identifier ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget DisplayName (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġartifact File . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Artifact Project ( project : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun Resolved Artifact : ĠResolved Dependency ): ĠProject ? Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . root Project . all projects . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( un Resolved Artifact . moduleName Ġ== Ġit . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Artifact File ( project : ĠProject , Ġvariant : ĠLibrary Variant , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun Resolved Artifact : ĠResolved Dependency , Ġversion : ĠString ): ĠFile Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuild Path Ġ= Ġproject . build Dir . path ĊĠĠĠĠĠĠĠ Ġval Ġoutput Name Ġ= Ġif Ġ( Utils . compare Version ( project . gradle . gradle Version , Ġ" 5 . 1 . 0 ") Ġ>= Ġ 0 Ġ&& ĠUtils . compare Version ( version , Ġ" 3 . 4 ") Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ build Path }/ outputs / aar /${ un Resolved Artifact . moduleName }. aar " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ build Path }/ outputs / aar /${ un Resolved Artifact . moduleName }-${ variant . flavor Name }-${ variant . build Type . name }. aar " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠUtils . log Info ( output Name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠFile ( output Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Task Dependency ( project : ĠProject , Ġvariant : ĠLibrary Variant ): ĠTask Dependency Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġtask Path Ġ= Ġ" bundle " Ġ+ Ġvariant . name . capitalize () ĊĠĠĠĠĠĠĠ Ġvar Ġbundle Task Ġ= Ġproject . tasks . findBy Path ( task Path ) ĊĠĠĠĠĠĠĠ Ġif Ġ( bundle Task Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Path Ġ= Ġ" bundle " Ġ+ Ġvariant . name . capitalize () Ġ+ Ġ" A ar " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Task Ġ= Ġproject . tasks . findBy Path ( task Path ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( bundle Task Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Can Ġnot Ġfind Ġtask Ġ${ task Path } !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠTask Dependency Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Ġ= ĠHashSet < Task >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset . add ( bundle Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ