1# Copyright 2015 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5"""This module wraps the Android Asset Packaging Tool.""" 6 7from devil.android.sdk import build_tools 8from devil.utils import cmd_helper 9from devil.utils import lazy 10 11 12_aapt_path = lazy.WeakConstant(lambda: build_tools.GetPath('aapt')) 13 14 15def _RunAaptCmd(args): 16 """Runs an aapt command. 17 18 Args: 19 args: A list of arguments for aapt. 20 21 Returns: 22 The output of the command. 23 """ 24 cmd = [_aapt_path.read()] + args 25 status, output = cmd_helper.GetCmdStatusAndOutput(cmd) 26 if status != 0: 27 raise Exception('Failed running aapt command: "%s" with output "%s".' % 28 (' '.join(cmd), output)) 29 return output 30 31 32def Dump(what, apk, assets=None): 33 """Returns the output of the aapt dump command. 34 35 Args: 36 what: What you want to dump. 37 apk: Path to apk you want to dump information for. 38 assets: List of assets in apk you want to dump information for. 39 """ 40 assets = assets or [] 41 if isinstance(assets, basestring): 42 assets = [assets] 43 return _RunAaptCmd(['dump', what, apk] + assets).splitlines() 44