Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3414)

Unified Diff: build/android/gyp/aar.py

Issue 2309643002: Make android_aar_prebuilt() aware of remaining features (Closed)
Patch Set: Add check for aidl Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | build/config/android/rules.gni » ('j') | build/config/android/rules.gni » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « no previous file | build/config/android/rules.gni » ('j') | build/config/android/rules.gni » ('J')

Powered by Google App Engine
This is Rietveld 408576698