| Index: build/android/gyp/aar.py
|
| diff --git a/build/android/gyp/aar.py b/build/android/gyp/aar.py
|
| index 503f9e56a15591cf795bda3f1b61b86124d4d960..f74e0217ff8c1755475b3c44a51b06920405314c 100755
|
| --- a/build/android/gyp/aar.py
|
| +++ b/build/android/gyp/aar.py
|
| @@ -8,8 +8,11 @@
|
|
|
| import argparse
|
| import os
|
| +import posixpath
|
| +import re
|
| import shutil
|
| import sys
|
| +from xml.etree import ElementTree
|
| import zipfile
|
|
|
| from util import build_utils
|
| @@ -19,6 +22,22 @@ sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__),
|
| import gn_helpers
|
|
|
|
|
| +def _IsManifestEmpty(manifest_str):
|
| + """Returns whether the given manifest has merge-worthy elements.
|
| +
|
| + E.g.: <activity>, <service>, etc.
|
| + """
|
| + doc = ElementTree.fromstring(manifest_str)
|
| + for node in doc:
|
| + if node.tag == 'application':
|
| + if len(node):
|
| + return False
|
| + elif node.tag != 'uses-sdk':
|
| + return False
|
| +
|
| + return True
|
| +
|
| +
|
| def main():
|
| parser = argparse.ArgumentParser(description=__doc__)
|
| parser.add_argument('--input-file',
|
| @@ -50,14 +69,39 @@ def main():
|
|
|
| if args.list:
|
| data = {}
|
| + data['aidl'] = []
|
| + data['assets'] = []
|
| data['resources'] = []
|
| - data['jars'] = []
|
| + data['subjars'] = []
|
| + data['subjar_labels'] = []
|
| + data['has_classes_jar'] = False
|
| + data['has_proguard_flags'] = False
|
| + data['has_native_libraries'] = False
|
| with zipfile.ZipFile(aar_file) as z:
|
| + data['is_manifest_empty'] = (
|
| + _IsManifestEmpty(z.read('AndroidManifest.xml')))
|
| +
|
| for name in z.namelist():
|
| - if name.startswith('res/') and not name.endswith('/'):
|
| + if name.endswith('/'):
|
| + continue
|
| + if name.startswith('aidl/'):
|
| + data['aidl'].append(name)
|
| + elif name.startswith('res/'):
|
| data['resources'].append(name)
|
| - if name.endswith('.jar'):
|
| - data['jars'].append(name)
|
| + elif name.startswith('libs/') and name.endswith('.jar'):
|
| + label = posixpath.basename(name)[:-4]
|
| + label = re.sub(r'[^a-zA-Z0-9._]', '_', label)
|
| + data['subjars'].append(name)
|
| + data['subjar_labels'].append(label)
|
| + elif name.startswith('assets/'):
|
| + data['assets'].append(name)
|
| + elif name.startswith('jni/'):
|
| + data['has_native_libraries'] = True
|
| + elif name == 'classes.jar':
|
| + data['has_classes_jar'] = True
|
| + elif name == 'proguard.txt':
|
| + data['has_proguard_flags'] = True
|
| +
|
| print gn_helpers.ToGNString(data)
|
|
|
|
|
|
|