package Ġex po . modules . updates . manifest Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġex po . modules . updates . Updates Configuration Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . json . JSONObject Ċ Ċ object ĠEmbedded Manifest Ġ{ ĊĠ Ġprivate Ġval ĠTAG Ġ= ĠEmbedded Manifest :: class . java . simple Name ĊĊĠ Ġprivate Ġconst Ġval ĠMAN IFEST _ FILENAME Ġ= Ġ" app . manifest " ĊĊĠ Ġprivate Ġvar Ġs Embedded Manifest : ĠUpdate Manifest ? Ġ= Ġnull ĊĊĠ Ġfun Ġget ( context : ĠContext , Ġconfiguration : ĠUpdates Configuration ): ĠUpdate Manifest ? Ġ{ ĊĠĠĠ Ġif Ġ(! configuration . has Embedded Update ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( s Embedded Manifest Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . assets . open ( MAN IFEST _ FILENAME ). use Ġ{ Ġstream Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġmanifest String Ġ= ĠIO Utils . toString ( stream , Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠ Ġval Ġmanifest Json Ġ= ĠJSONObject ( manifest String ) ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġverify Ġembedded Ġmanifest Ġsince Ġit Ġwas Ġalready Ġcode signed ĊĠĠĠĠĠĠĠĠĠ Ġmanifest Json . put (" is Verified ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠ Ġs Embedded Manifest Ġ= ĠManifest Factory . get Embedded Manifest ( manifest Json , Ġconfiguration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Could Ġnot Ġread Ġembedded Ġmanifest ", Ġe ) ĊĠĠĠĠĠĠĠ Ġthrow ĠAssertionError (" The Ġembedded Ġmanifest Ġis Ġinvalid Ġor Ġcould Ġnot Ġbe Ġread . ĠMake Ġsure Ġyou Ġhave Ġconfigured Ġex po - updates Ġcorrectly Ġin Ġandroid / app / build . gradle . Ġ" Ġ+ Ġe . message ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġs Embedded Manifest !! ĊĠ Ġ} Ċ } Ċ