package Ġcom . md zz . hook Ċ Ċ import Ġandroid . os . Build Ċ import Ġcom . md zz . hook . base . Base Hook Ċ import Ġde . rob v . android . x posed . XC _ Method Replacement Ċ import Ġde . rob v . android . x posed . X posed Helpers Ċ Ċ class ĠH K Mock Location Ġ: ĠBase Hook () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" HK Mock Location " ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmock Method Names Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" getMock G ps Strategy ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" is Mock G ps " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbegin Hook () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocation Class Ġ= Ġclass Loader . load Class ( LOCATION _ CLASS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsuccess Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġth List Ġ= ĠArrayList < Throwable >( mock Method Names . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmock Method Names . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠX posed Helpers . find And Hook Method ( location Class , Ġit , ĠX C _ Method Replacement . return Constant ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( th : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġth List Ġ+= Ġth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠThrowable (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġth List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Sup pressed ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( TAG , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( TAG , Ġ" run : Ġæ¨¡ åĿĹ ${ number } å·¥ä½ľ æŃ£å¸¸ ") ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( th : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( TAG , Ġ" run : Ġæ¨¡ åĿĹ ${ number } åĩº éĶĻ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( TAG , Ġth ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }