/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 5 Ġ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 . checks Ċ Ċ import Ġcom . android . tools . lint . checks . Restrictions Detector . Companion . MAX _ NE ST ING _ DEPTH Ċ import Ġcom . android . tools . lint . checks . Restrictions Detector . Companion . MAX _ NUMBER _ OF _ NE ST ED _ RE STRI CTION S Ċ Ċ import Ġcom . android . tools . lint . detector . api . Detector Ċ Ċ class ĠRe strictions Detector Test Ġ: ĠAbstract Check Test () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Detector (): ĠDetector Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRe strictions Detector () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Sample () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSample Ġfrom Ġhttps :// developer . android . com / samples / App Restriction Schema / index . html ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġexpect Ġno Ġwarnings . ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Android Manifest . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< manifest Ġxmlns : android =" http :// schemas . android . com / apk / res / android " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage =" com . example . android . app restriction schema " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : version Code =" 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : version Name =" 1 . 0 "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ<!-- Ġuses - sdk Ġandroid : min Sdk Version =" 2 1 " Ġandroid : target Sdk Version =" 2 1 " Ġ/ --> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< application ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : allow Backup =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : icon ="@ drawable / ic _ launcher " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : label ="@ string / app _ name " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : theme ="@ style / App Theme "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< meta - data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : name =" android . content . APP _ RE STRI CTION S " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : resource ="@ xml / app _ re strictions " Ġ/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< activity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : name =". MainActivity " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : label ="@ string / app _ name "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< intent - filter > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< action Ġandroid : name =" android . intent . action . MAIN " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< category Ġandroid : name =" android . intent . category . LA UNCH ER " Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ intent - filter > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ activity > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ application > ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ manifest > """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ<!-- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRefer Ġto Ġthe Ġjavadoc Ġof ĠRe strictions Manager Ġfor Ġdetail Ġof Ġthis Ġfile . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttps :// developer . android . com / reference / android / content / Restrictions Manager . html ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ--> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ bool / default _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ can _ say _ hello "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / default _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ message "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ integer / default _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" integer " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ number "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / default _ rank " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ rank " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : entries ="@ array / entries _ rank " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : entry Values ="@ array / entry _ values _ rank " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" rank " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" choice " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ rank "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ array / default _ appro vals " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ appro vals " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : entries ="@ array / entries _ appro vals " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : entry Values ="@ array / entry _ values _ appro vals " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" appro vals " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" multi - select " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ appro vals "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / default _ secret _ code " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ secret _ code " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" secret _ code " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" hidden " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ secret _ code "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect Clean () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Missing Required Attributes () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 2 : ĠError : ĠMissing Ġrequired Ġattribute Ġandroid : key Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 2 : ĠError : ĠMissing Ġrequired Ġattribute Ġandroid : restriction Type Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 2 : ĠError : ĠMissing Ġrequired Ġattribute Ġandroid : title Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest New Sample () Ġ{ ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" key _ bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / desc _ bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" key _ int " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" integer " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ int " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue =" 1 5 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" key _ string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / string _ value " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / missing _ title " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" components " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bundle _ array " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ bundle _ array " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / desc _ bundle _ array "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : restriction Type =" bundle " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" some Key " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ bundle _ comp " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / desc _ bundle _ comp "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" enabled " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue =" true " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / missing _ title " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" name " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / missing _ title " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ restriction > ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ restriction > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" connection _ settings " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bundle " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ bundle " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / desc _ bundle "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" max _ wait _ time _ ms " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" integer " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ int " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue =" 1 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction Ġandroid : key =" host " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / missing _ title " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ restriction > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect Clean () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Missing Required Attributes For Choice () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 2 : ĠError : ĠMissing Ġrequired Ġattribute Ġandroid : entries Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 2 : ĠError : ĠMissing Ġrequired Ġattribute Ġandroid : entry Values Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" choice " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ number "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Missing Required Attributes For Hidden () Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml : 2 : ĠError : ĠMissing Ġrequired Ġattribute Ġandroid : defaultValue Ġ[ Valid Restrictions ]\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠ Ġ< restriction \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠĠĠĠ Ġ ~~~~~~~~ ~~~ \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 1 Ġerrors , Ġ 0 Ġwarnings \ n ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlint Project ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" hidden " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ number "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > """ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Valid Number () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 3 : ĠError : ĠInvalid Ġnumber Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue =" abc " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue =" abc " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message 1 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" integer " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ number "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ integer / default _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" integer " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ number 2 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue =" 1 2 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message 3 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" integer " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ number 3 "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > """ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Unexpected Tag () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 3 : ĠError : ĠUnexpected Ġtag Ġ< wrong tag >, Ġexpected Ġ< restriction > Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< wrong tag Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ<!-- ĠComments Ġare Ġokay Ġ--> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< wrong tag Ġ/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Localized Key () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 5 : ĠError : ĠKeys Ġcannot Ġbe Ġlocalized , Ġthey Ġshould Ġbe Ġspecified Ġwith Ġa Ġstring Ġliteral Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key ="@ string / can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~ ~~~~ ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ bool / default _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key ="@ string / can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ can _ say _ hello "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Duplicate Keys () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 1 9 : ĠError : ĠDuplicate Ġkey Ġcan _ say _ hello Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~ ~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 5 : ĠPrevious Ġuse Ġof Ġkey Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ bool / default _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ can _ say _ hello "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / default _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ message "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ integer / default _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ number " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" integer " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ number "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest No DefaultValue For Bund les () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 3 : ĠError : ĠRe striction Ġtype Ġbundle _ array Ġshould Ġnot Ġhave Ġa Ġdefault Ġvalue Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / default _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / default _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bundle _ array " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ message "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ bool / default _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" can _ say _ hello " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ can _ say _ hello "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ restriction > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest No Children For Bundle () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 2 : ĠError : ĠRe striction Ġtype Ġbundle Ġshould Ġhave Ġat Ġleast Ġone Ġnested Ġrestriction Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bundle " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ message "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest No Children For Bundle Array () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 2 : ĠError : ĠExpected Ġexactly Ġone Ġchild Ġfor Ġrestriction Ġof Ġtype Ġbundle _ array Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bundle _ array " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ message "/> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( expected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest Too Many Children () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠMAX _ NUMBER _ OF _ NE ST ED _ RE STRI CTION S Ġ+ Ġ 2 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ bool / default _ can _ say _ hello $ i " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ can _ say _ hello $ i " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" can _ say _ hello $ i " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bool " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ can _ say _ hello $ i "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ sb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). indent ed () ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 1 : ĠError : ĠInvalid Ġnested Ġrestriction : Ġtoo Ġmany Ġnested Ġrestrictions Ġ( was Ġ 1 0 0 2 , Ġmax Ġ 1 0 0 0 ) Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~~~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtest N esting Too Deep () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġval Ġmax Depth Ġ= ĠMAX _ NE ST ING _ DEPTH Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmax Depth ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ can _ say _ hello $ i " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" can _ say _ hello $ i " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" bundle " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ can _ say _ hello $ i "> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsb . append ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : defaultValue ="@ string / default _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : description ="@ string / description _ message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : key =" message " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : restriction Type =" string " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid : title ="@ string / title _ message "/> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġmax Depth ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" ĠĠĠ Ġ</ restriction >\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlint (). files ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġxml ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" res / xml / app _ re strictions . xml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< re strictions Ġxmlns : android =" http :// schemas . android . com / apk / res / android "> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ$ sb ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ</ re strictions > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ). run (). expect ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġres / xml / app _ re strictions . xml : 1 0 3 : ĠError : ĠInvalid Ġnested Ġrestriction : Ġnesting Ġdepth Ġ 2 1 Ġtoo Ġlarge Ġ( max Ġ 2 0 Ġ[ Valid Restrictions ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ< restriction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ ~~~~~~~~ ~~~ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġerrors , Ġ 0 Ġwarnings ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ