/* Ċ Ġ* ĠTencent Ġis Ġplease d Ġto Ġsupport Ġthe Ġopen Ġsource Ġcommunity Ġby Ġmaking Ġwe chat - matrix Ġavailable . Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠTH L ĠA 2 9 ĠLimited , Ġa ĠTencent Ġcompany . ĠAll Ġrights Ġreserved . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠBSD Ġ 3 - Clause ĠLicense Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttps :// opensource . org / licenses / BSD - 3 - Clause Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ // ------ Ġmodify Ġby ĠR he a Trace Ġ------ Ċ Ċ /* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠByte D ance ĠInc Ċ Ġ* Ċ Ġ* Ġ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 . by ted ance . r heat race . plugin . task Ċ Ċ import Ġcom . android . build . gradle . api . Application Variant Ċ import Ġcom . android . build . gradle . internal . tasks . Dex Archive Builder Task Ċ import Ġcom . android . build . gradle . internal . tasks . factory . depends On Ċ import Ġcom . by ted ance . r heat race . plugin . extension . R he a Build Extension Ċ import Ġcom . by ted ance . r heat race . plugin . internal . common . R he a Log Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . Task Ċ Ċ object ĠR he a Trace Tasks Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG : ĠString Ġ= Ġ" R he a Trace Task " ĊĊĠĠĠ Ġfun Ġcreate Matrix Trace Task ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġvariant : ĠApplication Variant , ĊĠĠĠĠĠĠĠ Ġextension : ĠR he a Build Extension ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvariant Name Ġ= Ġvariant . name ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠR he a Trace Task . Creation Action ( project , Ġvariant , Ġextension ); ĊĠĠĠĠĠĠĠ Ġval Ġtrace Task Provider Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . register ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" r he a ${ variant Name . capitalize ()} Trace ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR he a Trace Task :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmin ify Task Ġ= Ġ" minify ${ variant Name . capitalize ()} With Pro guard " ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Provider Ġ= Ġproject . tasks . named ( minify Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Task Provider . depends On ( task Provider ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdex Builder Task Name Ġ= Ġ" dex Builder ${ variant Name . capitalize () }" ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdex Builder Provider Ġ= Ġproject . tasks . named ( dex Builder Task Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdex Builder Provider . configure Ġ{ Ġtask : ĠTask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrace Task Provider . get (). w ired ( task Ġas ĠDex Archive Builder Task ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR he a Log . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Do Ġnot Ġfind Ġ'$ dex Builder Task Name ' Ġtask . ĠInject Ġr he a Ġtrace Ġtask Ġfailed ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }