diff options
author | agrieve <agrieve@chromium.org> | 2015-05-15 13:38:55 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-05-15 20:39:05 +0000 |
commit | a657e5374014d2125f4fddc319cea852b0c86a96 (patch) | |
tree | 6049d3dade7a36a5611ae7ea6eef573a5d1b30d6 | |
parent | 9de69c4c1629be23188010d34d68d95d10cf1ae6 (diff) | |
download | chromium_src-a657e5374014d2125f4fddc319cea852b0c86a96.zip chromium_src-a657e5374014d2125f4fddc319cea852b0c86a96.tar.gz chromium_src-a657e5374014d2125f4fddc319cea852b0c86a96.tar.bz2 |
Extract package_resources step into a .gypi & make assets & resource zips optional
This is in preparation for for creating abi splits
BUG=484797
Review URL: https://codereview.chromium.org/1140763002
Cr-Commit-Position: refs/heads/master@{#330188}
-rwxr-xr-x | build/android/gyp/package_resources.py | 19 | ||||
-rw-r--r-- | build/android/package_resources_action.gypi | 73 | ||||
-rw-r--r-- | build/config/android/internal_rules.gni | 30 | ||||
-rw-r--r-- | build/java_apk.gypi | 58 | ||||
-rw-r--r-- | tools/telemetry/telemetry/TELEMETRY_DEPS | 1 |
5 files changed, 113 insertions, 68 deletions
diff --git a/build/android/gyp/package_resources.py b/build/android/gyp/package_resources.py index 2251de00..5393766 100755 --- a/build/android/gyp/package_resources.py +++ b/build/android/gyp/package_resources.py @@ -60,7 +60,7 @@ def ParseArgs(): # Check that required options have been provided. required_options = ('android_sdk', 'android_sdk_tools', 'configuration_name', 'android_manifest', 'version_code', 'version_name', - 'resource_zips', 'asset_dir', 'apk_path') + 'apk_path') build_utils.CheckOptions(options, parser, required=required_options) @@ -140,16 +140,17 @@ def main(): if options.shared_resources: package_command.append('--shared-lib') - if os.path.exists(options.asset_dir): + if options.asset_dir and 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) - package_command += PackageArgsForExtractedZip(subdir) + if options.resource_zips: + 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) + package_command += PackageArgsForExtractedZip(subdir) if 'Debug' in options.configuration_name: package_command += ['--debug-mode'] diff --git a/build/android/package_resources_action.gypi b/build/android/package_resources_action.gypi new file mode 100644 index 0000000..fe1645f --- /dev/null +++ b/build/android/package_resources_action.gypi @@ -0,0 +1,73 @@ +# Copyright 2015 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. + +# This file is a helper to java_apk.gypi. It should be used to create an +# action that runs ApkBuilder via ANT. +# +# Required variables: +# apk_name - File name (minus path & extension) of the output apk. +# android_manifest_path - Path to AndroidManifest.xml. +# app_manifest_version_name - set the apps 'human readable' version number. +# app_manifest_version_code - set the apps version number. +# Optional variables: +# asset_location - The directory where assets are located (if any). +# resource_zips - List of paths to resource zip files. +# shared_resources - Make a resource package that can be loaded by a different +# application at runtime to access the package's resources. +# extensions_to_not_compress - E.g.: 'pak,dat,bin' +# extra_inputs - List of extra action inputs. +{ + 'variables': { + 'asset_location%': '', + 'resource_zips%': [], + 'shared_resources%': 0, + 'extensions_to_not_compress%': '', + 'extra_inputs%': [], + 'resource_packaged_apk_name': '<(apk_name)-resources.ap_', + 'resource_packaged_apk_path': '<(intermediate_dir)/<(resource_packaged_apk_name)', + }, + 'action_name': 'package_resources_<(apk_name)', + 'message': 'packaging resources for <(apk_name)', + 'inputs': [ + # TODO: This isn't always rerun correctly, http://crbug.com/351928 + '<(DEPTH)/build/android/gyp/util/build_utils.py', + '<(DEPTH)/build/android/gyp/package_resources.py', + '<(android_manifest_path)', + '<@(extra_inputs)', + ], + 'outputs': [ + '<(resource_packaged_apk_path)', + ], + 'action': [ + 'python', '<(DEPTH)/build/android/gyp/package_resources.py', + '--android-sdk', '<(android_sdk)', + '--android-sdk-tools', '<(android_sdk_tools)', + '--configuration-name', '<(CONFIGURATION_NAME)', + '--android-manifest', '<(android_manifest_path)', + '--version-code', '<(app_manifest_version_code)', + '--version-name', '<(app_manifest_version_name)', + '--no-compress', '<(extensions_to_not_compress)', + '--apk-path', '<(resource_packaged_apk_path)', + ], + 'conditions': [ + ['shared_resources == 1', { + 'action': [ + '--shared-resources', + ], + }], + ['asset_location != ""', { + 'action': [ + '--asset-dir', '<(asset_location)', + ], + }], + ['resource_zips != []', { + 'action': [ + '--resource-zips', '>(resource_zips)', + ], + 'inputs': [ + '>@(resource_zips)', + ], + }], + ], +} diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni index 561d26d..795e0dd 100644 --- a/build/config/android/internal_rules.gni +++ b/build/config/android/internal_rules.gni @@ -449,8 +449,13 @@ template("create_apk") { _android_manifest = invoker.android_manifest _base_path = invoker.base_path _final_apk_path = invoker.apk_path - _resources_zip = invoker.resources_zip - _dex_path = invoker.dex_path + + if (defined(invoker.resources_zip)) { + _resources_zip = invoker.resources_zip + } + if (defined(invoker.dex_path)) { + _dex_path = invoker.dex_path + } _keystore_path = invoker.keystore_path _keystore_name = invoker.keystore_name _keystore_password = invoker.keystore_password @@ -466,7 +471,6 @@ template("create_apk") { _native_libs_dir = invoker.native_libs_dir } - _asset_location = "//build/android/empty/res" if (defined(invoker.asset_location)) { _asset_location = invoker.asset_location } @@ -493,14 +497,15 @@ template("create_apk") { depfile = "${target_gen_dir}/${target_name}.d" inputs = [ _android_manifest, - _resources_zip, ] + if (defined(_resources_zip)) { + inputs += [ _resources_zip ] + } outputs = [ depfile, _resource_packaged_apk_path, ] - _rebased_resources_zips = [ rebase_path(_resources_zip, root_build_dir) ] args = [ "--depfile", rebase_path(depfile, root_build_dir), @@ -515,13 +520,22 @@ template("create_apk") { _version_code, "--version-name", _version_name, - "--asset-dir", - rebase_path(_asset_location, root_build_dir), - "--resource-zips=$_rebased_resources_zips", "--apk-path", rebase_path(_resource_packaged_apk_path, root_build_dir), ] + if (defined(_asset_location)) { + args += [ + "--asset-dir", + rebase_path(_asset_location, root_build_dir), + ] + } + if (defined(_resources_zip)) { + args += [ + "--resource-zips", + rebase_path(_resources_zip, root_build_dir), + ] + } if (_shared_resources) { args += [ "--shared-resources" ] } diff --git a/build/java_apk.gypi b/build/java_apk.gypi index 0a67c7e..ab415a9 100644 --- a/build/java_apk.gypi +++ b/build/java_apk.gypi @@ -128,10 +128,7 @@ 'android_manifest_path%': '<(java_in_dir)/AndroidManifest.xml', 'push_stamp': '<(intermediate_dir)/push.stamp', 'link_stamp': '<(intermediate_dir)/link.stamp', - 'package_resources_stamp': '<(intermediate_dir)/package_resources.stamp', 'resource_zip_path': '<(intermediate_dir)/<(_target_name).resources.zip', - 'resource_packaged_apk_name': '<(apk_name)-resources.ap_', - 'resource_packaged_apk_path': '<(intermediate_dir)/<(resource_packaged_apk_name)', 'shared_resources%': 0, 'unsigned_apk_path': '<(intermediate_dir)/<(apk_name)-unsigned.apk', 'final_apk_path%': '<(PRODUCT_DIR)/apks/<(apk_name).apk', @@ -867,61 +864,20 @@ 'includes': [ 'android/dex_action.gypi' ], }, { - 'action_name': 'package_resources', - 'message': 'packaging resources for <(_target_name)', 'variables': { - 'package_resources_options': [], - 'package_resource_zip_input_paths': [ + 'extra_inputs': ['<(codegen_stamp)'], + 'resource_zips': [ '<(resource_zip_path)', - '>@(dependencies_res_zip_paths)', ], 'conditions': [ - ['shared_resources == 1', { - 'package_resources_options+': ['--shared-resources'] + ['is_test_apk == 0', { + 'resource_zips': [ + '>@(dependencies_res_zip_paths)', + ], }], ], }, - 'conditions': [ - ['is_test_apk == 1', { - 'variables': { - 'dependencies_res_zip_paths=': [], - 'additional_res_packages=': [], - } - }], - ], - 'inputs': [ - # TODO: This isn't always rerun correctly, http://crbug.com/351928 - '<(DEPTH)/build/android/gyp/util/build_utils.py', - '<(DEPTH)/build/android/gyp/package_resources.py', - '<(android_manifest_path)', - - '>@(package_resource_zip_input_paths)', - - '<(codegen_stamp)', - ], - 'outputs': [ - '<(resource_packaged_apk_path)', - ], - 'action': [ - 'python', '<(DEPTH)/build/android/gyp/package_resources.py', - '--android-sdk', '<(android_sdk)', - '--android-sdk-tools', '<(android_sdk_tools)', - - '--configuration-name', '<(CONFIGURATION_NAME)', - - '--android-manifest', '<(android_manifest_path)', - '--version-code', '<(app_manifest_version_code)', - '--version-name', '<(app_manifest_version_name)', - - '--asset-dir', '<(asset_location)', - '--resource-zips', '>(package_resource_zip_input_paths)', - - '--no-compress', '<(extensions_to_not_compress)', - - '--apk-path', '<(resource_packaged_apk_path)', - - '<@(package_resources_options)', - ], + 'includes': [ 'android/package_resources_action.gypi' ], }, { 'variables': { diff --git a/tools/telemetry/telemetry/TELEMETRY_DEPS b/tools/telemetry/telemetry/TELEMETRY_DEPS index a374fc2..1bf6493 100644 --- a/tools/telemetry/telemetry/TELEMETRY_DEPS +++ b/tools/telemetry/telemetry/TELEMETRY_DEPS @@ -135,6 +135,7 @@ "build/android/native_app_dependencies.gypi", "build/android/ndk.gyp", "build/android/pack_arm_relocations.gypi", + "build/android/package_resources_action.gypi", "build/android/provision_devices.py", "build/android/push_libraries.gypi", "build/android/rezip.gyp", |