Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 #!/usr/bin/env python | |
| 2 # | |
| 3 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
| 4 # Use of this source code is governed by a BSD-style license that can be | |
| 5 # found in the LICENSE file. | |
| 6 | |
| 7 """Process Android library resources to generate R.java and crunched images.""" | |
| 8 | |
| 9 import optparse | |
| 10 import os | |
| 11 import subprocess | |
| 12 | |
| 13 | |
| 14 BUILD_ANDROID_DIR = os.path.dirname(__file__) | |
| 15 | |
| 16 | |
| 17 def parse_args(): | |
| 18 parser = optparse.OptionParser() | |
| 19 parser.add_option('--android_sdk', help='path to the Android SDK folder') | |
|
frankf
2012/12/11 22:27:02
Using both underscore and dash for options names a
newt (away)
2012/12/11 23:55:32
Done.
| |
| 20 parser.add_option('--android_sdk_tools', | |
| 21 help='path to the Android SDK platform tools folder') | |
| 22 parser.add_option('--R_package', help='Java package for generated R.java') | |
| 23 parser.add_option('--R_dir', help='directory to hold generated R.java') | |
| 24 parser.add_option('--res_dir', help='directory containing resources') | |
| 25 parser.add_option('--crunched_res_dir', | |
| 26 help='directory to hold crunched resources') | |
| 27 (options, args) = parser.parse_args() | |
| 28 | |
| 29 if args: | |
| 30 parser.error('No positional arguments should be given.') | |
| 31 | |
| 32 # Check that required options have been provided. | |
| 33 required_options = ('android_sdk', 'android_sdk_tools', 'R_package', | |
| 34 'R_dir', 'res_dir', 'crunched_res_dir') | |
| 35 for option_name in required_options: | |
| 36 if getattr(options, option_name) is None: | |
| 37 parser.error('--%s is required' % option_name) | |
| 38 | |
| 39 return options | |
| 40 | |
| 41 | |
| 42 def main(): | |
| 43 options = parse_args() | |
| 44 android_jar = os.path.join(options.android_sdk, 'android.jar') | |
| 45 aapt = os.path.join(options.android_sdk_tools, 'aapt') | |
| 46 dummy_manifest = os.path.join(BUILD_ANDROID_DIR, 'AndroidManifest.xml') | |
| 47 | |
| 48 # Generate R.java. This R.java contains non-final constants and is used only | |
| 49 # while compiling the library jar (e.g. chromium_content.jar). When building | |
| 50 # an apk, a new R.java file with the correct resource -> ID mappings will be | |
| 51 # generated by merging the resources from all libraries and the main apk | |
| 52 # project. | |
| 53 subprocess.check_call([aapt, | |
| 54 'package', | |
| 55 '-m', | |
| 56 '--non-constant-id', | |
| 57 '--custom-package', options.R_package, | |
| 58 '-M', dummy_manifest, | |
| 59 '-S', options.res_dir, | |
| 60 '-I', android_jar, | |
| 61 '-J', options.R_dir]) | |
| 62 | |
| 63 # Crunch image resources. This shrinks png files and is necessary for 9-patch | |
| 64 # images to display correctly. | |
| 65 subprocess.check_call([aapt, | |
| 66 'crunch', | |
| 67 '-S', options.res_dir, | |
| 68 '-C', options.crunched_res_dir]) | |
| 69 | |
| 70 | |
| 71 if __name__ == '__main__': | |
| 72 main() | |
| OLD | NEW |