Index: build/android/process_resources.py |
diff --git a/build/android/process_resources.py b/build/android/process_resources.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..8a46e5c55105ce2747e30987c32948e9f3c5a7fb |
--- /dev/null |
+++ b/build/android/process_resources.py |
@@ -0,0 +1,77 @@ |
+#!/usr/bin/env python |
+# |
+# Copyright (c) 2012 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. |
+ |
+"""Process Android library resources to generate R.java and crunched images.""" |
+ |
+import optparse |
+import os |
+import subprocess |
+ |
+ |
+BUILD_ANDROID_DIR = os.path.dirname(__file__) |
+ |
+ |
+def ParseArgs(): |
+ """Parses command line options. |
+ |
+ Returns: |
+ An options object as from optparse.OptionsParser.parse_args() |
+ """ |
+ parser = optparse.OptionParser() |
+ parser.add_option('--android-sdk', help='path to the Android SDK folder') |
+ parser.add_option('--android-sdk-tools', |
+ help='path to the Android SDK platform tools folder') |
+ parser.add_option('--R-package', help='Java package for generated R.java') |
+ parser.add_option('--R-dir', help='directory to hold generated R.java') |
+ parser.add_option('--res-dir', help='directory containing resources') |
+ parser.add_option('--crunched-res-dir', |
+ help='directory to hold crunched resources') |
+ (options, args) = parser.parse_args() |
+ |
+ if args: |
+ parser.error('No positional arguments should be given.') |
+ |
+ # Check that required options have been provided. |
+ required_options = ('android_sdk', 'android_sdk_tools', 'R_package', |
+ 'R_dir', 'res_dir', 'crunched_res_dir') |
+ for option_name in required_options: |
+ if getattr(options, option_name) is None: |
+ parser.error('--%s is required' % option_name.replace('_', '-')) |
+ |
+ return options |
+ |
+ |
+def main(): |
+ options = ParseArgs() |
+ android_jar = os.path.join(options.android_sdk, 'android.jar') |
+ aapt = os.path.join(options.android_sdk_tools, 'aapt') |
+ dummy_manifest = os.path.join(BUILD_ANDROID_DIR, 'AndroidManifest.xml') |
+ |
+ # Generate R.java. This R.java contains non-final constants and is used only |
+ # while compiling the library jar (e.g. chromium_content.jar). When building |
+ # an apk, a new R.java file with the correct resource -> ID mappings will be |
+ # generated by merging the resources from all libraries and the main apk |
+ # project. |
+ subprocess.check_call([aapt, |
+ 'package', |
+ '-m', |
+ '--non-constant-id', |
+ '--custom-package', options.R_package, |
+ '-M', dummy_manifest, |
+ '-S', options.res_dir, |
+ '-I', android_jar, |
+ '-J', options.R_dir]) |
+ |
+ # Crunch image resources. This shrinks png files and is necessary for 9-patch |
+ # images to display correctly. |
+ subprocess.check_call([aapt, |
+ 'crunch', |
+ '-S', options.res_dir, |
+ '-C', options.crunched_res_dir]) |
+ |
+ |
+if __name__ == '__main__': |
+ main() |