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

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

Issue 949803002: Deconstructed APK prototyping Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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
Index: build/android/gyp/deconstruct_apk.py
diff --git a/build/android/gyp/deconstruct_apk.py b/build/android/gyp/deconstruct_apk.py
new file mode 100644
index 0000000000000000000000000000000000000000..9fdb825dc0c36d13f890938d38d4ba193c8fea48
--- /dev/null
+++ b/build/android/gyp/deconstruct_apk.py
@@ -0,0 +1,61 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import argparse
+import os
+import re
+import shutil
+import sys
+
+from xml.dom import minidom
+
+from util import build_utils
+
+DECONSTRUCTED_APPLICATION = 'org.chromium.deconstructed.DeconstructedApplication'
+
+def main(args):
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--apk')
+ parser.add_argument('--new-apk')
+ parser.add_argument('--remove-native')
+ parser.add_argument('--remove-resources')
+ parser.add_argument('--remove-java')
+ options = parser.parse_args(args)
+
+ with build_utils.TempDir() as temp_dir:
+ files = build_utils.ExtractAll(options.apk, temp_dir)
+
+ new_apk_dir = os.path.join(temp_dir, 'new_apk')
+ native_dir = os.path.join(temp_dir, 'native')
+ java_dir = os.path.join(temp_dir, 'java')
+ resources_dir = os.path.join(temp_dir, 'resources')
+ for f in files:
+ new_dir = new_apk_dir
+ if options.remove_native and f.startswith('lib/'):
+ new_dir = native_dir
+ if options.remove_java and f == 'classes.dex':
+ new_dir = java_dir
+ if options.remove_resources and (f == 'resources.arsc' or f.startswith('res/')):
+ new_dir = resources_dir
+
+ new_path = os.path.join(new_dir, f)
+ new_dir = os.path.dirname(new_path)
+ if not os.path.exists(new_dir):
+ os.makedirs(os.path.dirname(new_path))
+ shutil.move(os.path.join(temp_dir, f), new_path)
+
+ ReplaceManifestApplication(os.path.join(new_apk_dir, 'AndroidManifest.xml'))
+ build_utils.ZipDir(options.new_apk, new_apk_dir)
+ if options.remove_native:
+ build_utils.ZipDir(options.remove_native, native_dir)
+ if options.remove_java:
+ build_utils.ZipDir(options.remove_java, java_dir)
+ if options.remove_resources:
+ build_utils.ZipDir(options.remove_resources, resources_dir)
+
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
+

Powered by Google App Engine
This is Rietveld 408576698