Make process_resources.py more configurable
This allows more configuration of the aapt call from within gyp. This is primarily to support differences that are required to use process_resources.py for java_apk.gypi. BUG=158821 Review URL: https://chromiumcodereview.appspot.com/12516019 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190055 0039d316-1c4b-4281-b951-d872f2087c98
This commit is contained in:
build
@ -10,9 +10,7 @@ import optparse
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
BUILD_ANDROID_DIR = os.path.dirname(__file__)
|
||||
|
||||
from pylib import build_utils
|
||||
|
||||
def ParseArgs():
|
||||
"""Parses command line options.
|
||||
@ -24,11 +22,15 @@ def ParseArgs():
|
||||
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')
|
||||
parser.add_option('--non-constant-id', action='store_true')
|
||||
parser.add_option('--custom-package', help='Java package for R.java')
|
||||
parser.add_option('--android-manifest', help='AndroidManifest.xml path')
|
||||
parser.add_option('--stamp', help='File to touch on success')
|
||||
|
||||
# This is part of a temporary fix for crbug.com/177552.
|
||||
# TODO(newt): remove this once crbug.com/177552 is fixed in ninja.
|
||||
parser.add_option('--ignore', help='this argument is ignored')
|
||||
@ -38,7 +40,7 @@ def ParseArgs():
|
||||
parser.error('No positional arguments should be given.')
|
||||
|
||||
# Check that required options have been provided.
|
||||
required_options = ('android_sdk', 'android_sdk_tools', 'R_package',
|
||||
required_options = ('android_sdk', 'android_sdk_tools',
|
||||
'R_dir', 'res_dir', 'out_res_dir')
|
||||
for option_name in required_options:
|
||||
if getattr(options, option_name) is None:
|
||||
@ -51,7 +53,8 @@ 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')
|
||||
|
||||
build_utils.MakeDirectory(options.R_dir)
|
||||
|
||||
# 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
|
||||
@ -61,9 +64,7 @@ def main():
|
||||
package_command = [aapt,
|
||||
'package',
|
||||
'-m',
|
||||
'--non-constant-id',
|
||||
'--custom-package', options.R_package,
|
||||
'-M', dummy_manifest,
|
||||
'-M', options.android_manifest,
|
||||
'-S', options.res_dir,
|
||||
'--auto-add-overlay',
|
||||
'-I', android_jar,
|
||||
@ -72,6 +73,10 @@ def main():
|
||||
# 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]
|
||||
if options.non_constant_id:
|
||||
package_command.append('--non-constant-id')
|
||||
if options.custom_package:
|
||||
package_command += ['--custom-package', options.custom_package]
|
||||
subprocess.check_call(package_command)
|
||||
|
||||
# Crunch image resources. This shrinks png files and is necessary for 9-patch
|
||||
@ -81,6 +86,8 @@ def main():
|
||||
'-S', options.res_dir,
|
||||
'-C', options.out_res_dir])
|
||||
|
||||
build_utils.Touch(options.stamp)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
@ -47,16 +47,16 @@
|
||||
'<(DEPTH)/build/build_output_dirs_android.gyp:build_output_dirs'
|
||||
],
|
||||
'variables': {
|
||||
'input_jars_paths': [ '<(android_sdk_jar)' ],
|
||||
'android_jar': '<(android_sdk)/android.jar',
|
||||
'input_jars_paths': [ '<(android_jar)' ],
|
||||
'additional_src_dirs': [],
|
||||
'javac_includes': [],
|
||||
'jar_name': '<(_target_name).jar',
|
||||
'jar_path': '<(PRODUCT_DIR)/lib.java/<(jar_name)',
|
||||
'excluded_classes': [ '*/R.class', '*/R##*.class' ],
|
||||
'additional_input_paths': ['>@(additional_R_files)'],
|
||||
'additional_input_paths': [],
|
||||
'generated_src_dirs': ['>@(generated_R_dirs)'],
|
||||
'generated_R_dirs': [],
|
||||
'additional_R_files': [],
|
||||
'has_java_resources%': 0,
|
||||
'java_strings_grd%': '',
|
||||
'intermediate_dir': '<(SHARED_INTERMEDIATE_DIR)/<(_target_name)',
|
||||
@ -76,19 +76,20 @@
|
||||
'res_dir': '<(java_in_dir)/res',
|
||||
'out_res_dir': '<(intermediate_dir)/res',
|
||||
'R_dir': '<(intermediate_dir)/java_R',
|
||||
'R_file': '<(R_dir)/<(R_package_relpath)/R.java',
|
||||
'R_text_file': '<(R_dir)/R.txt',
|
||||
'R_stamp': '<(intermediate_dir)/resources.stamp',
|
||||
'generated_src_dirs': ['<(R_dir)'],
|
||||
'additional_input_paths': ['<(R_file)'],
|
||||
'additional_input_paths': ['<(R_stamp)'],
|
||||
# grit_grd_file is used by grit_action.gypi, included below.
|
||||
'grit_grd_file': '<(java_in_dir)/strings/<(java_strings_grd)',
|
||||
'resource_input_paths': [],
|
||||
},
|
||||
'all_dependent_settings': {
|
||||
'variables': {
|
||||
# Dependent jars include this target's R.java file via
|
||||
# generated_R_dirs and additional_R_files.
|
||||
'generated_R_dirs': ['<(R_dir)'],
|
||||
'additional_R_files': ['<(R_file)'],
|
||||
'additional_input_paths': ['<(R_stamp)'],
|
||||
'additional_R_text_files': ['<(R_text_file)'],
|
||||
|
||||
# Dependent APKs include this target's resources via
|
||||
@ -99,6 +100,14 @@
|
||||
},
|
||||
'conditions': [
|
||||
['java_strings_grd != ""', {
|
||||
'variables': {
|
||||
'resource_input_paths': [
|
||||
# TODO(newt): replace this with .../values/strings.xml once
|
||||
# the English strings.xml is generated as well? That would be
|
||||
# simpler and faster and should be equivalent.
|
||||
'<!@pymod_do_main(grit_info <@(grit_defines) --outputs "<(out_res_dir)" <(grit_grd_file))',
|
||||
],
|
||||
},
|
||||
'actions': [
|
||||
{
|
||||
'action_name': 'generate_localized_strings_xml',
|
||||
@ -117,36 +126,34 @@
|
||||
{
|
||||
'action_name': 'process_resources',
|
||||
'message': 'processing resources for <(_target_name)',
|
||||
'conditions': [
|
||||
['java_strings_grd != ""', {
|
||||
'inputs': [
|
||||
# TODO(newt): replace this with .../values/strings.xml once
|
||||
# the English strings.xml is generated as well? That would be
|
||||
# simpler and faster and should be equivalent.
|
||||
'<!@pymod_do_main(grit_info <@(grit_defines) --outputs "<(out_res_dir)" <(grit_grd_file))',
|
||||
],
|
||||
}],
|
||||
],
|
||||
'variables': {
|
||||
'android_manifest': '<(DEPTH)/build/android/AndroidManifest.xml',
|
||||
},
|
||||
'inputs': [
|
||||
'<(DEPTH)/build/android/pylib/build_utils.py',
|
||||
'<(DEPTH)/build/android/process_resources.py',
|
||||
'<!@(find <(res_dir) -type f)',
|
||||
'<@(resource_input_paths)',
|
||||
],
|
||||
'outputs': [
|
||||
'<(R_file)',
|
||||
'<(R_stamp)',
|
||||
],
|
||||
'action': [
|
||||
'<(DEPTH)/build/android/process_resources.py',
|
||||
'--android-sdk', '<(android_sdk)',
|
||||
'--android-sdk-tools', '<(android_sdk_tools)',
|
||||
'--R-package', '<(R_package)',
|
||||
'--R-dir', '<(R_dir)',
|
||||
'--res-dir', '<(res_dir)',
|
||||
'--out-res-dir', '<(out_res_dir)',
|
||||
'--android-manifest', '<(android_manifest)',
|
||||
'--non-constant-id',
|
||||
'--custom-package', '<(R_package)',
|
||||
'--stamp', '<(R_stamp)',
|
||||
|
||||
# Add list of inputs to the command line, so if inputs change
|
||||
# (e.g. if a resource if removed), the command will be re-run.
|
||||
# TODO(newt): remove this once crbug.com/177552 is fixed in ninja.
|
||||
'--ignore', '>(_inputs)',
|
||||
'--ignore=>!(echo \'>(_inputs)\' | md5sum)',
|
||||
],
|
||||
},
|
||||
],
|
||||
|
Reference in New Issue
Block a user