/* Ċ Ġ* Ġ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 . tools . lint . client . api Ċ Ċ import Ġcom . android . tools . lint . checks . infrastructure . Test File Ċ import Ġcom . android . tools . lint . checks . infrastructure . Test File . Xml Test File Ċ import Ġcom . android . tools . lint . checks . infrastructure . Test Lint Client Ċ import Ġcom . android . utils . Xml Utils Ċ import Ġcom . google . common . base . Charsets Ċ import Ġcom . google . common . io . Files Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġorg . w 3 c . dom . Attr Ċ import Ġorg . w 3 c . dom . Element Ċ Ċ class ĠBl ame File Test Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġfolder Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġfolder . root ĊĊĠĠĠĠĠĠĠ Ġval Ġsource Manifest Ġ= ĠXml Test File . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" app / src / main / Android Manifest . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" <? xml Ġversion =" 1 . 0 " Ġencoding =" utf - 8 "?> Ċ < manifest Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠ Ġpackage =" test . pkg . my application "> ĊĊĠĠĠ Ġ< application ĊĠĠĠĠĠĠĠ Ġandroid : allow Backup =" true " ĊĠĠĠĠĠĠĠ Ġandroid : icon ="@ mip map / ic _ launcher " ĊĠĠĠĠĠĠĠ Ġandroid : label ="@ string / app _ name " ĊĠĠĠĠĠĠĠ Ġandroid : round Icon ="@ mip map / ic _ launcher _ round " ĊĠĠĠĠĠĠĠ Ġandroid : supports R tl =" true " ĊĠĠĠĠĠĠĠ Ġandroid : theme ="@ style / App Theme "> ĊĠĠĠĠĠĠĠ Ġ< activity Ġandroid : name =". MainActivity "> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< intent - filter > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< action Ġandroid : name =" android . intent . action . MAIN " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< category Ġandroid : name =" android . intent . category . LA UNCH ER " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ intent - filter > ĊĠĠĠĠĠĠĠ Ġ</ activity > ĊĠĠĠ Ġ</ application > Ċ Ċ </ manifest > """ ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create File ( root ) ĊĠĠĠĠĠĠĠ Ġval Ġmerged Manifest Ġ= ĠXml Test File . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" app / build / inter medi ates / manifest s / full / debug / Android Manifest . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" <? xml Ġversion =" 1 . 0 " Ġencoding =" utf - 8 "?> Ċ < manifest Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠ Ġpackage =" test . pkg . my application " ĊĠĠĠ Ġandroid : version Code =" 1 " ĊĠĠĠ Ġandroid : version Name =" 1 . 0 " Ġ> ĊĊĠĠĠ Ġ< uses - sdk ĊĠĠĠĠĠĠĠ Ġandroid : min Sdk Version =" 2 5 " ĊĠĠĠĠĠĠĠ Ġandroid : target Sdk Version =" 2 5 " Ġ/> ĊĊĠĠĠ Ġ< application ĊĠĠĠĠĠĠĠ Ġandroid : allow Backup =" true " ĊĠĠĠĠĠĠĠ Ġandroid : icon ="@ mip map / ic _ launcher " ĊĠĠĠĠĠĠĠ Ġandroid : label ="@ string / app _ name " ĊĠĠĠĠĠĠĠ Ġandroid : round Icon ="@ mip map / ic _ launcher _ round " ĊĠĠĠĠĠĠĠ Ġandroid : supports R tl =" true " ĊĠĠĠĠĠĠĠ Ġandroid : theme ="@ style / App Theme " Ġ> ĊĠĠĠĠĠĠĠ Ġ< activity Ġandroid : name =" test . pkg . my application . MainActivity " Ġ> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ< intent - filter > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< action Ġandroid : name =" android . intent . action . MAIN " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< category Ġandroid : name =" android . intent . category . LA UNCH ER " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ</ intent - filter > ĊĠĠĠĠĠĠĠ Ġ</ activity > ĊĠĠĠ Ġ</ application > Ċ Ċ </ manifest > """ ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create File ( root ) ĊĠĠĠĠĠĠĠ Ġvar Ġbl ame Log Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"-- ĠMer ging Ġdecision Ġtree Ġlog Ġ--- \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" manifest \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 2 : 1 - 2 1 : 1 2 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ tp ackage \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 3 : 5 - 3 7 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : version Name \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ tx ml ns : android \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 2 : 1 1 - 6 9 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : version Code \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" application \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 5 : 5 - 1 9 : 1 9 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : appcompat - v 7 : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 4 6 4 9 5 1 d 1 7 cb 0 cdd 6 2 cb 8 c 5 1 9 6 1 d 7 fe 1 7 aa 1 1 7 c 0 2 / output / Android Manifest . xml : 2 5 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - v 4 : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 0 0 1 5 4 8 c 9 2 4 3 f 5 8 e 5 9 7 1 d 6 8 2 4 e 4 5 6 eca 9 f 1 6 6 3 5 0 f / output / Android Manifest . xml : 2 5 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - fragment : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / f 3 ab 5 c 6 dee 0 d 5 8 f 5 1 9 be 2 4 8 4 a 8 9 9 f 5 a 5 9 a 3 3 ed 8 0 / output / Android Manifest . xml : 2 5 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - media - compat : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 4 2 b 1 e 8 9 0 b 3 8 aa 4 e 7 7 f 0 ce 5 5 b 2 b 5 6 7 d 0 7 5 8 8 af 7 3 a / output / Android Manifest . xml : 2 5 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - core - ui : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / a 9 0 8 8 4 1 3 0 7 bc 5 9 a 9 4 c 1 5 0 de 3 f 0 5 4 8 2 4 9 1 ac 1 b 4 c 0 / output / Android Manifest . xml : 2 5 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - core - utils : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 0 8 3 cf 2 7 9 e 1 3 6 9 3 5 4 c 5 8 2 f 8 cb bc ff 7 8 1 c 5 f 8 e 3 9 a 1 / output / Android Manifest . xml : 2 5 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : animated - vector - drawable : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 8 be 2 ac 0 e 0 3 edb 0 ede 3 9 b 0 ef 1 a 1 c 6 c 1 b 1 5 7 7 4 5 a 1 1 / output / Android Manifest . xml : 2 2 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - vector - drawable : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 9 dd 1 1 9 5 e 7 1 f 0 1 7 1 b 0 9 c 5 2 9 5 2 f 1 7 6 4 0 2 9 f 4 8 2 2 6 cb / output / Android Manifest . xml : 2 3 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - compat : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 2 c 4 9 c 0 7 6 e 1 8 ed fa 3 db 0 0 4 6 8 dda 1 7 eb 0 c 3 9 c 6 0 6 1 f / output / Android Manifest . xml : 2 5 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support . constraint : constraint - layout : 1 . 0 . 0 - beta 4 ] Ġ/ Users / android - studio /. android / build - cache / 0 ce 0 d 5 4 5 4 d 1 fa 5 5 b 8 8 3 c 3 6 7 e 8 f 2 1 c 4 2 4 8 1 7 b 4 7 bb / output / Android Manifest . xml : 9 : 5 - 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : label \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 8 : 9 - 4 1 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : supports R tl \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 0 : 9 - 3 5 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : round Icon \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 9 : 9 - 5 4 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : allow Backup \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 6 : 9 - 3 5 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : icon \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 7 : 9 - 4 3 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : theme \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 1 : 9 - 4 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" activity # test . pkg . my application . MainActivity \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 2 : 9 - 1 8 : 2 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : name \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 2 : 1 9 - 4 7 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" intent - filter # action : name : android . intent . action . MAIN + category : name : android . intent . category . LA UNCH ER \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 3 : 1 3 - 1 7 : 2 9 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" action # android . intent . action . MAIN \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 4 : 1 7 - 6 9 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : name \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 4 : 2 5 - 6 6 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" category # android . intent . category . LA UNCH ER \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 6 : 1 7 - 7 7 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : name \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml : 1 6 : 2 7 - 7 4 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" uses - sdk \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml Ġreason : Ġuse - sdk Ġinjection Ġrequested \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : appcompat - v 7 : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 4 6 4 9 5 1 d 1 7 cb 0 cdd 6 2 cb 8 c 5 1 9 6 1 d 7 fe 1 7 aa 1 1 7 c 0 2 / output / Android Manifest . xml : 2 1 : 5 - 2 3 : 7 8 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - v 4 : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 0 0 1 5 4 8 c 9 2 4 3 f 5 8 e 5 9 7 1 d 6 8 2 4 e 4 5 6 eca 9 f 1 6 6 3 5 0 f / output / Android Manifest . xml : 2 1 : 5 - 2 3 : 5 4 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - fragment : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / f 3 ab 5 c 6 dee 0 d 5 8 f 5 1 9 be 2 4 8 4 a 8 9 9 f 5 a 5 9 a 3 3 ed 8 0 / output / Android Manifest . xml : 2 1 : 5 - 2 3 : 6 0 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - media - compat : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 4 2 b 1 e 8 9 0 b 3 8 aa 4 e 7 7 f 0 ce 5 5 b 2 b 5 6 7 d 0 7 5 8 8 af 7 3 a / output / Android Manifest . xml : 2 1 : 5 - 2 3 : 6 3 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - core - ui : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / a 9 0 8 8 4 1 3 0 7 bc 5 9 a 9 4 c 1 5 0 de 3 f 0 5 4 8 2 4 9 1 ac 1 b 4 c 0 / output / Android Manifest . xml : 2 1 : 5 - 2 3 : 5 8 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - core - utils : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 0 8 3 cf 2 7 9 e 1 3 6 9 3 5 4 c 5 8 2 f 8 cb bc ff 7 8 1 c 5 f 8 e 3 9 a 1 / output / Android Manifest . xml : 2 1 : 5 - 2 3 : 6 1 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : animated - vector - drawable : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 8 be 2 ac 0 e 0 3 edb 0 ede 3 9 b 0 ef 1 a 1 c 6 c 1 b 1 5 7 7 4 5 a 1 1 / output / Android Manifest . xml : 2 0 : 5 - 4 4 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - vector - drawable : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 9 dd 1 1 9 5 e 7 1 f 0 1 7 1 b 0 9 c 5 2 9 5 2 f 1 7 6 4 0 2 9 f 4 8 2 2 6 cb / output / Android Manifest . xml : 2 1 : 5 - 4 3 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support : support - compat : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 2 c 4 9 c 0 7 6 e 1 8 ed fa 3 db 0 0 4 6 8 dda 1 7 eb 0 c 3 9 c 6 0 6 1 f / output / Android Manifest . xml : 2 1 : 5 - 2 3 : 5 8 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MER GED Ġfrom Ġ[ com . android . support . constraint : constraint - layout : 1 . 0 . 0 - beta 4 ] Ġ/ Users / android - studio /. android / build - cache / 0 ce 0 d 5 4 5 4 d 1 fa 5 5 b 8 8 3 c 3 6 7 e 8 f 2 1 c 4 2 4 8 1 7 b 4 7 bb / output / Android Manifest . xml : 5 : 5 - 7 : 4 1 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t tools : override Library \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t AD DED Ġfrom Ġ[ com . android . support : appcompat - v 7 : 2 5 . 1 . 0 ] Ġ/ Users / android - studio /. android / build - cache / 4 6 4 9 5 1 d 1 7 cb 0 cdd 6 2 cb 8 c 5 1 9 6 1 d 7 fe 1 7 aa 1 1 7 c 0 2 / output / Android Manifest . xml : 2 3 : 9 - 7 5 \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : target Sdk Version \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t android : min Sdk Version \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ t \ t IN JECT ED Ġfrom Ġ\ ${ ROOT }/ app / src / main / Android Manifest . xml \ n " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbl ame Log Ġ= Ġbl ame Log . replace ("\ ${ ROOT }", Ġroot . path ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbl ame File Ġ= ĠTest File () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to (" app / build / outputs / logs / manifest - mer ger - debug - report . txt ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Source ( bl ame Log ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create File ( root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠBl ame File . parse ( bl ame File ) ĊĠĠĠĠĠĠĠ ĠassertThat ( file ). isNotNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġxml Ġ= ĠFiles . as Char Source ( merged Manifest , ĠChar sets . UTF _ 8 ). read () ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= ĠXml Utils . parse Document Sil ently ( xml , Ġtrue ) ĊĠĠĠĠĠĠĠ ĠassertThat ( document ). isNotNull () ĊĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠTest Lint Client () ĊĠĠĠĠĠĠĠ ĠBl ame File . Xml Visitor . accept ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠBl ame File . Xml Visitor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Attribute ( attribute : ĠAttr ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġfile . find Source Attribute ( client , Ġattribute ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġattribute . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInject ed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġ" android : version Code " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ== Ġ" android : version Name " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ== Ġ" android : min Sdk Version " Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ== Ġ" android : target Sdk Version " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( source . first ). isEqualTo ( source Manifest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( source ). named ( attribute . name ). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Tag ( element : ĠElement , Ġtag : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġfile . find Source Element ( client , Ġelement ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInject ed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tag Ġ== Ġ" uses - sdk ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( source ). named ( tag ). isNotNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( source !!. first ). isEqualTo ( source Manifest ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ