chromium-src-build/android/process_resources.py

84 строки
3.0 KiB
Python
Executable File

#!/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('--out-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', 'out_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.
package_command = [aapt,
'package',
'-m',
'--non-constant-id',
'--custom-package', options.R_package,
'-M', dummy_manifest,
'-S', options.res_dir,
'--auto-add-overlay',
'-I', android_jar,
'--output-text-symbols', options.R_dir,
'-J', options.R_dir]
# If strings.xml was generated from a grd file, it will be in out_res_dir.
if os.path.isdir(options.out_res_dir):
package_command += ['-S', options.out_res_dir]
subprocess.check_call(package_command)
# 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.out_res_dir])
if __name__ == '__main__':
main()