/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . android . build . gradle . internal . res . namespaced Ċ Ċ import Ġcom . android . build . api . artifact . Artifact Ċ import Ġcom . android . build . gradle . internal . component . A pk Creation Config Ċ import Ġcom . android . build . gradle . internal . component . Component Creation Config Ċ import Ġcom . android . build . gradle . internal . res . Link Application Android Resources Task Ċ import Ġcom . android . build . gradle . internal . scope . Internal Artifact Type Ċ import Ġcom . android . build . gradle . internal . tasks . factory . Task Factory Ċ import Ġcom . android . build . gradle . tasks . Compile Library Resources Task Ċ import Ġcom . android . utils . append Capital ized Ċ import Ġorg . gradle . api . file . Directory Ċ Ċ /** Ċ Ġ* ĠResp ons ible Ġfor Ġthe Ġcreation Ġof Ġtasks Ġto Ġbuild Ġname spaced Ġresources . Ċ Ġ*/ Ċ class ĠName spaced Resources Task Manager ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtask Factory : ĠTask Factory , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcreation Config : ĠComponent Creation Config Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġtasks Ġfor Ġdealing Ġwith Ġresources Ġin Ġa Ġname spaced Ġway . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġcurrent Ġimplementation : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠĠ 1 . ĠLinks Ġthe Ġapp Ġas Ġa Ġstatic Ġlibrary . ĠThis Ġprovides Ġa Ġ* non - final * ĠR - class , Ġand Ġmeans Ġthat ĊĠĠĠĠ Ġ* Ġ Ġthe Ġdist inction Ġbetween Ġapp Ġand Ġlibrary Ġis Ġreduced . ĠWe Ġcan Ġre visit Ġthat Ġin Ġthe Ġfuture Ġif ĊĠĠĠĠ Ġ* Ġ Ġfinal Ġids Ġin Ġapps Ġare Ġa Ġv ital Ġfeature . ĊĠĠĠĠ Ġ* ĠĠ 2 . ĠLinks Ġthe Ġapp Ġand Ġits Ġdependency Ġto Ġproduce Ġthe Ġfinal ĠA PK . ĠThis Ġre - uses Ġthe Ġsame ĊĠĠĠĠ Ġ* Ġ Ġ[ Link Application Android Resources Task ] Ġtask , Ġas Ġit Ġneeds Ġto Ġbe Ġsplit Ġaware . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTODO : ĠTest Ġsupport , ĠSynt hesize Ġnon - namespaced Ġoutput . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Name spaced Resource Tasks ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage OutputType : ĠArtifact . Single < Directory > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse A apt To Generate Legacy Multi dex Main Dex Pro guard Rules : ĠBoolean ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠCompile ĊĠĠĠĠĠĠĠ Ġcreate Compile Resources Task () ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġto Ġstrip Ġnamespaces Ġfrom Ġthe Ġmanifest Ġto Ġbundle , Ġso Ġthat Ġit 's Ġconsum able Ġby ĊĠĠĠĠĠĠĠ Ġ// Ġnon - namespaced Ġprojects . ĊĠĠĠĠĠĠĠ Ġtask Factory . register ( Create Non Name spaced Library Manifest Task . Creation Action ( creation Config )) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠIf Ġwe Ġwant Ġto Ġread Ġthe Ġname spaced Ġmanifest Ġfrom Ġthe Ġstatic Ġlibrary , Ġwe Ġneed Ġto Ġkeep ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠ Ġall Ġthe Ġdata Ġin Ġit , Ġnot Ġjust Ġa Ġskeleton Ġwith Ġthe Ġpackage . ĠSee Ġb / 1 1 7 8 6 9 8 7 7 ĊĠĠĠĠĠĠĠ Ġtask Factory . register ( Static Library Manifest Task . Creation Action ( creation Config )) ĊĠĠĠĠĠĠĠ Ġtask Factory . register ( Link Library Android Resources Task . Creation Action ( creation Config )) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġalso Ġgenerate Ġa Ġprivate ĠR . jar Ġholding Ġprivate Ġresources . ĊĠĠĠĠĠĠĠ Ġtask Factory . register ( Generate Name spaced Library R Files Task . Creation Action ( creation Config )) ĊĠĠĠĠĠĠĠ Ġif Ġ( creation Config . variant Type . is Test Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtested Type Ġ= Ġcreation Config . tested Config ?. variant Type Ġ?: Ġthrow ĠRuntimeException (" tested Variant Ġis Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tested Type . is A ar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Name spaced Library Test Process Resources Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage OutputType Ġ= Ġpackage OutputType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Name spaced App Process Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage OutputType Ġ= Ġpackage OutputType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Name Ġ= Ġbase Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse A apt To Generate Legacy Multi dex Main Dex Pro guard Rules Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( creation Config . variant Type . is A pk ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Name spaced App Process Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage OutputType Ġ= Ġpackage OutputType , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Name Ġ= Ġbase Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse A apt To Generate Legacy Multi dex Main Dex Pro guard Rules Ġ= Ġuse A apt To Generate Legacy Multi dex Main Dex Pro guard Rules ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtask Factory . register ( Compile R Class Task Creation Action ( creation Config )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Name spaced App Process Task ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage OutputType : ĠArtifact . Single < Directory > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuse A apt To Generate Legacy Multi dex Main Dex Pro guard Rules : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġfix Ġby Ġusing Ġthe Ġright Ġtype Ġfor Ġfield Ġcomponent Properties ĊĠĠĠĠĠĠ Ġtask Factory . register ( ĊĠĠĠĠĠĠĠĠĠĠ ĠLink Application Android Resources Task . Name spaced Creation Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config Ġas ĠA pk Creation Config , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse A apt To Generate Legacy Multi dex Main Dex Pro guard Rules , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Name ĊĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( package OutputType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config . artifacts . re publish ( Internal Artifact Type . PROC ES SED _ RES , Ġpackage OutputType ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Name spaced Library Test Process Resources Task ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage OutputType : ĠArtifact . Single < Directory > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtask Factory . register ( Process Android App Resources Task . Creation Action ( creation Config )) ĊĠĠĠĠĠĠĠ Ġif Ġ( package OutputType Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config . artifacts . re publish ( Internal Artifact Type . PROC ES SED _ RES , Ġpackage OutputType ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Compile Resources Task () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor (( source SetName , Ġartifacts ) Ġin Ġcreation Config . variant Data . android Resources ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġ" compile ". append Capital ized ( source SetName ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Resources For ". append Capital ized ( creation Config . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġ: Ġfigure Ġout Ġwhen Ġwe Ġneed Ġexplicit Ġtask Ġdependency Ġand Ġpotentially Ġremove Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Factory . register ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompile Library Resources Task . Name spaced Creation Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Directories Ġ= Ġartifacts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreation Config Ġ= Ġcreation Config ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ