package Ġcom . dbo y . slot ting Ċ Ċ import Ġcom . android . build . gradle . App Extension Ċ import Ġcom . dbo y . slot ting . extensions . Slot ting Extensions Ċ import Ġcom . dbo y . slot ting . helper . ASM Helper Ċ import Ġcom . dbo y . slot ting . helper . Field Scan Helper Ċ import Ġcom . dbo y . slot ting . helper . Slot ting Json Data Helper Ċ import Ġcom . dbo y . slot ting . transform . Slot ting Transform Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 2 1 ĠD boy 2 3 3 Ċ Ġ* Ċ Ġ* Ġ Ġ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 . Ċ Ġ* Ċ Ġ* Ġ- Ġæĸĩä»¶ æııè¿° : ĠSlot ting Ġæı Ĵ ä»¶ Ċ Ġ* Ġ@ author ĠDB oy Ċ Ġ* Ġ@ since Ġ 2 0 2 1 / 1 1 / 4 Ġ 0 8 : 3 1 Ċ Ġ*/ Ċ class ĠSlot ting Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġgradle æī©å±ķ åĲį ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEXT ENSION S _ NAME Ġ= Ġ" slot ting " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġslot ting Ġapi ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠIMP LEMENT ATION _ SLOT TING _ API Ġ= Ġ" io . github . dbo y 2 3 3 : slot ting - api : 1 . 0 . 1 " ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( target . plugins . has Plugin (" com . android . application ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// app æ¨¡åĿĹ æ·»åĬł ä¾Ŀèµĸ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . dependencies . add (" implementation ", ĠIMP LEMENT ATION _ SLOT TING _ API ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪĽå»º æī©å±ķ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġslot ting : ĠSlot ting Extensions Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . extensions . create ( EXTENSION S _ NAME , ĠSlot ting Extensions :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ£ĢæŁ¥ éħįç½® ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Slot ting Setting ( slot ting ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Slot ting Config ( target , Ġslot ting ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æ³¨åĨĮ Transform ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Extension Ġ= Ġtarget . extensions . findBy Type ( App Extension :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapp Extension ?. register Transform ( Slot ting Transform ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵåį° Slot ting éħįç½® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġprint Slot ting Setting ( slot ting : ĠSlot ting Extensions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ================= Slot ting ĠConfig ================ = ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfileName ĠĠĠ Ġ: ĠĠ Ġ${ slot ting . fileName } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfilePath ĠĠĠ Ġ: ĠĠ Ġ/ ${ slot ting . filePath } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimp Class ĠĠĠ Ġ: ĠĠ Ġ${ slot ting . implemented Class } ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ================================================= ĊĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ Ġ è§£æŀĲ éħįç½®æĸĩä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck Slot ting Config ( project : ĠProject , Ġslot ting : ĠSlot ting Extensions ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġproject . file ( slot ting . filePath Ġ+ Ġslot ting . fileName ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile . exists () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æķ°æį® æ¸ħ ç©º , äºĮ æ¬¡ æŀĦå»º çļĦæĹ¶åĢĻ åĨħåŃĺ éĩĮ è¿ĺ ä¿ĿçķĻ éĩĮ ä¹ĭåīį çļĦ å¯¹è±¡ éĩįæĸ° è®¾ç½® æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠField Scan Helper . clean () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlot ting Json Data Helper . clean () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¿ĿåŃĺ å®ŀçİ° ç±» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAS M Helper . implement Class Ġ= Ġslot ting . implemented Class ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è§£æŀĲ æķ°æį® éħįç½®æĸĩä»¶ ä¿¡æģ¯ å¹¶ ä¿ĿåŃĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSlot ting Json Data Helper . parsing ( file ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠNoSuch File Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile , Ġreason Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġæĸĩä»¶ éħįç½® ä¸į å¯¹ ï¼Į æ£ĢæŁ¥ Ġ/ ${ slot ting . filePath } Ġä¸ĭ æĺ¯åĲ¦ æľī Ġ${ slot ting . fileName } Ġæĸĩä»¶ ï¼Į å¦Ĥæŀľ æ²¡æľī è¯· åĪĽå»º å¹¶ éħįç½® ãĢĤ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }