| Index: build/android/gyp/package_resources.py
|
| diff --git a/build/android/gyp/package_resources.py b/build/android/gyp/package_resources.py
|
| index cdb7bc610422c32536c8b9a18ec0b837bafc6bfa..7a7e16ce39b0cc1f97658bec4a1be3996238c16e 100755
|
| --- a/build/android/gyp/package_resources.py
|
| +++ b/build/android/gyp/package_resources.py
|
| @@ -15,6 +15,7 @@ https://android.googlesource.com/platform/sdk/+/master/files/ant/build.xml
|
|
|
| import optparse
|
| import os
|
| +import shutil
|
|
|
| from util import build_utils
|
|
|
| @@ -35,8 +36,8 @@ def ParseArgs():
|
| parser.add_option('--android-manifest', help='AndroidManifest.xml path')
|
| parser.add_option('--version-code', help='Version code for apk.')
|
| parser.add_option('--version-name', help='Version name for apk.')
|
| - parser.add_option('--resource-dirs',
|
| - help='directories containing resources to be packaged')
|
| + parser.add_option('--resource-zips',
|
| + help='zip files containing resources to be packaged')
|
| parser.add_option('--asset-dir',
|
| help='directories containing assets to be packaged')
|
|
|
| @@ -51,42 +52,75 @@ def ParseArgs():
|
| # Check that required options have been provided.
|
| required_options = ('android_sdk', 'android_sdk_tools', 'configuration_name',
|
| 'android_manifest', 'version_code', 'version_name',
|
| - 'asset_dir', 'apk_path')
|
| + 'resource_zips', 'asset_dir', 'apk_path')
|
|
|
| build_utils.CheckOptions(options, parser, required=required_options)
|
|
|
| return options
|
|
|
|
|
| +def MoveImagesToNonMdpiFolders(res_root):
|
| + """Move images from drawable-*-mdpi-* folders to drawable-* folders.
|
| +
|
| + Why? http://crbug.com/289843
|
| + """
|
| + for src_dir_name in os.listdir(res_root):
|
| + src_components = src_dir_name.split('-')
|
| + if src_components[0] != 'drawable' or 'mdpi' not in src_components:
|
| + continue
|
| + src_dir = os.path.join(res_root, src_dir_name)
|
| + if not os.path.isdir(src_dir):
|
| + continue
|
| + dst_components = [c for c in src_components if c != 'mdpi']
|
| + assert dst_components != src_components
|
| + dst_dir_name = '-'.join(dst_components)
|
| + dst_dir = os.path.join(res_root, dst_dir_name)
|
| + build_utils.MakeDirectory(dst_dir)
|
| + for src_file_name in os.listdir(src_dir):
|
| + if not src_file_name.endswith('.png'):
|
| + continue
|
| + src_file = os.path.join(src_dir, src_file_name)
|
| + dst_file = os.path.join(dst_dir, src_file_name)
|
| + assert not os.path.lexists(dst_file)
|
| + shutil.move(src_file, dst_file)
|
| +
|
| +
|
| def main():
|
| options = ParseArgs()
|
| android_jar = os.path.join(options.android_sdk, 'android.jar')
|
| aapt = os.path.join(options.android_sdk_tools, 'aapt')
|
|
|
| - package_command = [aapt,
|
| - 'package',
|
| - '--version-code', options.version_code,
|
| - '--version-name', options.version_name,
|
| - '-M', options.android_manifest,
|
| - '--no-crunch',
|
| - '-f',
|
| - '--auto-add-overlay',
|
| -
|
| - '-I', android_jar,
|
| - '-F', options.apk_path,
|
| - ]
|
| -
|
| - if os.path.exists(options.asset_dir):
|
| - package_command += ['-A', options.asset_dir]
|
| -
|
| - for p in build_utils.ParseGypList(options.resource_dirs):
|
| - package_command += ['-S', p]
|
| -
|
| - if 'Debug' in options.configuration_name:
|
| - package_command += ['--debug-mode']
|
| -
|
| - build_utils.CheckOutput(
|
| - package_command, print_stdout=False, print_stderr=False)
|
| + with build_utils.TempDir() as temp_dir:
|
| + package_command = [aapt,
|
| + 'package',
|
| + '--version-code', options.version_code,
|
| + '--version-name', options.version_name,
|
| + '-M', options.android_manifest,
|
| + '--no-crunch',
|
| + '-f',
|
| + '--auto-add-overlay',
|
| +
|
| + '-I', android_jar,
|
| + '-F', options.apk_path,
|
| + ]
|
| +
|
| + if os.path.exists(options.asset_dir):
|
| + package_command += ['-A', options.asset_dir]
|
| +
|
| + dep_zips = build_utils.ParseGypList(options.resource_zips)
|
| + for z in dep_zips:
|
| + subdir = os.path.join(temp_dir, os.path.basename(z))
|
| + if os.path.exists(subdir):
|
| + raise Exception('Resource zip name conflict: ' + os.path.basename(z))
|
| + build_utils.ExtractAll(z, path=subdir)
|
| + MoveImagesToNonMdpiFolders(subdir)
|
| + package_command += ['-S', subdir]
|
| +
|
| + if 'Debug' in options.configuration_name:
|
| + package_command += ['--debug-mode']
|
| +
|
| + build_utils.CheckOutput(
|
| + package_command, print_stdout=False, print_stderr=False)
|
|
|
|
|
| if __name__ == '__main__':
|
|
|