Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(214)

Unified Diff: build/java_apk.gypi

Issue 1180693002: Update from https://crrev.com/333737 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebased Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/java_aidl.gypi ('k') | build/json_schema_api.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/java_apk.gypi
diff --git a/build/java_apk.gypi b/build/java_apk.gypi
index cece2be5e4a11f5c30b825c5e076986c958968e1..976c90e4a57b4bb1d20e4d68812af29eaecb5d1c 100644
--- a/build/java_apk.gypi
+++ b/build/java_apk.gypi
@@ -31,6 +31,8 @@
# additional_bundled_libs - Additional libraries what will be stripped and
# bundled in the apk.
# asset_location - The directory where assets are located.
+# create_density_splits - Whether to create density-based apk splits. Splits
+# are supported only for minSdkVersion >= 21.
# generated_src_dirs - Same as additional_src_dirs except used for .java files
# that are generated at build time. This should be set automatically by a
# target's dependencies. The .java files in these directories are not
@@ -51,7 +53,7 @@
# R.java files.
# use_chromium_linker - Enable the content dynamic linker that allows sharing the
# RELRO section of the native libraries between the different processes.
-# load_library_from_zip_file - When using the dynamic linker, load the library
+# load_library_from_zip - When using the dynamic linker, load the library
# directly out of the zip file.
# use_relocation_packer - Enable relocation packing. Relies on the chromium
# linker, so use_chromium_linker must also be enabled.
@@ -67,6 +69,7 @@
'tested_apk_obfuscated_jar_path%': '/',
'tested_apk_dex_path%': '/',
'additional_input_paths': [],
+ 'create_density_splits%': 0,
'input_jars_paths': [],
'library_dexed_jars_paths': [],
'additional_src_dirs': [],
@@ -126,35 +129,45 @@
'dex_path': '<(intermediate_dir)/classes.dex',
'emma_device_jar': '<(android_sdk_root)/tools/lib/emma_device.jar',
'android_manifest_path%': '<(java_in_dir)/AndroidManifest.xml',
+ 'split_android_manifest_path': '<(intermediate_dir)/split-manifests/<(android_app_abi)/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',
+ 'final_apk_path_no_extension%': '<(PRODUCT_DIR)/apks/<(apk_name)',
+ 'final_abi_split_apk_path%': '<(PRODUCT_DIR)/apks/<(apk_name)-abi-<(android_app_abi).apk',
'incomplete_apk_path': '<(intermediate_dir)/<(apk_name)-incomplete.apk',
'apk_install_record': '<(intermediate_dir)/apk_install.record.stamp',
'device_intermediate_dir': '/data/data/org.chromium.gyp_managed_install/<(_target_name)/<(CONFIGURATION_NAME)',
'symlink_script_host_path': '<(intermediate_dir)/create_symlinks.sh',
'symlink_script_device_path': '<(device_intermediate_dir)/create_symlinks.sh',
'create_standalone_apk%': 1,
- 'res_v14_verify_only%': 0,
+ 'res_v14_skip%': 0,
'variables': {
'variables': {
'native_lib_target%': '',
'native_lib_version_name%': '',
'use_chromium_linker%' : 0,
- 'load_library_from_zip_file%' : 0,
'use_relocation_packer%' : 0,
'enable_chromium_linker_tests%': 0,
'is_test_apk%': 0,
+ 'unsigned_apk_path': '<(intermediate_dir)/<(apk_name)-unsigned.apk',
+ 'unsigned_abi_split_apk_path': '<(intermediate_dir)/<(apk_name)-abi-<(android_app_abi)-unsigned.apk',
+ 'create_abi_split%': 0,
},
+ 'unsigned_apk_path': '<(unsigned_apk_path)',
+ 'unsigned_abi_split_apk_path': '<(unsigned_abi_split_apk_path)',
+ 'create_abi_split%': '<(create_abi_split)',
'conditions': [
['gyp_managed_install == 1 and native_lib_target != ""', {
- 'unsigned_standalone_apk_path': '<(intermediate_dir)/<(apk_name)-standalone-unsigned.apk',
+ 'conditions': [
+ ['create_abi_split == 0', {
+ 'unsigned_standalone_apk_path': '<(intermediate_dir)/<(apk_name)-standalone-unsigned.apk',
+ }, {
+ 'unsigned_standalone_apk_path': '<(intermediate_dir)/<(apk_name)-abi-<(android_app_abi)-standalone-unsigned.apk',
+ }],
+ ],
}, {
'unsigned_standalone_apk_path': '<(unsigned_apk_path)',
}],
@@ -168,21 +181,33 @@
},{
'emma_instrument%': 0,
}],
+ # When using abi splits, the abi split is modified by
+ # gyp_managed_install rather than the main .apk
+ ['create_abi_split == 1', {
+ 'managed_input_apk_path': '<(unsigned_abi_split_apk_path)',
+ }, {
+ 'managed_input_apk_path': '<(unsigned_apk_path)',
+ }],
],
},
'native_lib_target%': '',
'native_lib_version_name%': '',
'use_chromium_linker%' : 0,
- 'load_library_from_zip_file%' : 0,
+ 'load_library_from_zip%' : 0,
'use_relocation_packer%' : 0,
'enable_chromium_linker_tests%': 0,
'emma_instrument%': '<(emma_instrument)',
'apk_package_native_libs_dir': '<(apk_package_native_libs_dir)',
'unsigned_standalone_apk_path': '<(unsigned_standalone_apk_path)',
+ 'unsigned_apk_path': '<(unsigned_apk_path)',
+ 'unsigned_abi_split_apk_path': '<(unsigned_abi_split_apk_path)',
+ 'create_abi_split%': '<(create_abi_split)',
+ 'managed_input_apk_path': '<(managed_input_apk_path)',
'libchromium_android_linker': 'libchromium_android_linker.>(android_product_extension)',
'extra_native_libs': [],
'native_lib_placeholder_stamp': '<(apk_package_native_libs_dir)/<(android_app_abi)/native_lib_placeholder.stamp',
'native_lib_placeholders': [],
+ 'main_apk_name': '<(apk_name)',
},
# Pass the jar path to the apk's "fake" jar target. This would be better as
# direct_dependent_settings, but a variable set by a direct_dependent_settings
@@ -285,7 +310,7 @@
'linker_gcc_preprocess_defines': [],
},
}],
- ['load_library_from_zip_file == 1', {
+ ['load_library_from_zip == 1', {
'variables': {
'linker_load_from_zip_file_preprocess_defines': [
'--defines', 'ENABLE_CHROMIUM_LINKER_LIBRARY_IN_ZIP_FILE',
@@ -486,9 +511,9 @@
'<(strip_additional_stamp)',
'<(pack_arm_relocations_stamp)',
],
- 'input_apk_path': '<(unsigned_apk_path)',
'output_apk_path': '<(unsigned_standalone_apk_path)',
'libraries_top_dir%': '<(libraries_top_dir)',
+ 'input_apk_path': '<(managed_input_apk_path)',
},
'includes': [ 'android/create_standalone_apk_action.gypi' ],
},
@@ -507,19 +532,86 @@
}],
],
}], # native_lib_target != ''
- ['gyp_managed_install == 0 or create_standalone_apk == 1', {
+ ['gyp_managed_install == 0 or create_standalone_apk == 1 or create_abi_split == 1', {
+ 'dependencies': [
+ '<(DEPTH)/build/android/rezip.gyp:rezip_apk_jar',
+ ],
+ }],
+ ['create_abi_split == 1 or gyp_managed_install == 0 or create_standalone_apk == 1', {
'actions': [
{
- 'action_name': 'finalize standalone apk',
+ 'action_name': 'finalize_base',
'variables': {
- 'input_apk_path': '<(unsigned_standalone_apk_path)',
'output_apk_path': '<(final_apk_path)',
+ 'conditions': [
+ ['create_abi_split == 0', {
+ 'input_apk_path': '<(unsigned_standalone_apk_path)',
+ }, {
+ 'input_apk_path': '<(unsigned_apk_path)',
+ 'load_library_from_zip': 0,
+ }]
+ ],
},
'includes': [ 'android/finalize_apk_action.gypi']
},
],
- 'dependencies': [
- '<(DEPTH)/build/android/rezip.gyp:rezip_apk_jar',
+ }],
+ ['create_abi_split == 1', {
+ 'actions': [
+ {
+ 'action_name': 'generate_split_manifest_<(_target_name)',
+ 'inputs': [
+ '<(DEPTH)/build/android/gyp/util/build_utils.py',
+ '<(DEPTH)/build/android/gyp/generate_split_manifest.py',
+ '<(android_manifest_path)',
+ ],
+ 'outputs': [
+ '<(split_android_manifest_path)',
+ ],
+ 'action': [
+ 'python', '<(DEPTH)/build/android/gyp/generate_split_manifest.py',
+ '--main-manifest', '<(android_manifest_path)',
+ '--out-manifest', '<(split_android_manifest_path)',
+ '--split', 'abi_<(android_app_abi)',
+ ],
+ },
+ {
+ 'variables': {
+ 'apk_name': '<(main_apk_name)-abi-<(android_app_abi)',
+ 'asset_location': '',
+ 'android_manifest_path': '<(split_android_manifest_path)',
+ 'create_density_splits': 0,
+ },
+ 'includes': [ 'android/package_resources_action.gypi' ],
+ },
+ {
+ 'variables': {
+ 'apk_name': '<(main_apk_name)-abi-<(android_app_abi)',
+ 'apk_path': '<(unsigned_abi_split_apk_path)',
+ 'has_code': 0,
+ 'native_libs_dir': '<(apk_package_native_libs_dir)',
+ 'extra_inputs': ['<(native_lib_placeholder_stamp)'],
+ },
+ 'includes': ['android/apkbuilder_action.gypi'],
+ },
+ ],
+ }],
+ ['create_abi_split == 1 and (gyp_managed_install == 0 or create_standalone_apk == 1)', {
+ 'actions': [
+ {
+ 'action_name': 'finalize_split',
+ 'variables': {
+ 'output_apk_path': '<(final_abi_split_apk_path)',
+ 'conditions': [
+ ['gyp_managed_install == 1', {
+ 'input_apk_path': '<(unsigned_standalone_apk_path)',
+ }, {
+ 'input_apk_path': '<(unsigned_abi_split_apk_path)',
+ }],
+ ],
+ },
+ 'includes': [ 'android/finalize_apk_action.gypi']
+ },
],
}],
['gyp_managed_install == 1', {
@@ -527,7 +619,8 @@
{
'action_name': 'finalize incomplete apk',
'variables': {
- 'input_apk_path': '<(unsigned_apk_path)',
+ 'load_library_from_zip': 0,
+ 'input_apk_path': '<(managed_input_apk_path)',
'output_apk_path': '<(incomplete_apk_path)',
},
'includes': [ 'android/finalize_apk_action.gypi']
@@ -546,15 +639,52 @@
],
'action': [
'python', '<(DEPTH)/build/android/gyp/apk_install.py',
- '--apk-path=<(incomplete_apk_path)',
'--build-device-configuration=<(build_device_config_path)',
'--install-record=<(apk_install_record)',
'--configuration-name=<(CONFIGURATION_NAME)',
+ '--android-sdk-tools', '<(android_sdk_tools)',
+ ],
+ 'conditions': [
+ ['create_abi_split == 1', {
+ 'inputs': [
+ '<(final_apk_path)',
+ ],
+ 'action': [
+ '--apk-path=<(final_apk_path)',
+ '--split-apk-path=<(incomplete_apk_path)',
+ ],
+ }, {
+ 'action': [
+ '--apk-path=<(incomplete_apk_path)',
+ ],
+ }],
+ ['create_density_splits == 1', {
+ 'inputs': [
+ '<(final_apk_path_no_extension)-density-hdpi.apk',
+ '<(final_apk_path_no_extension)-density-xhdpi.apk',
+ '<(final_apk_path_no_extension)-density-xxhdpi.apk',
+ '<(final_apk_path_no_extension)-density-tvdpi.apk',
+ ],
+ 'action': [
+ '--split-apk-path=<(final_apk_path_no_extension)-density-hdpi.apk',
+ '--split-apk-path=<(final_apk_path_no_extension)-density-xhdpi.apk',
+ '--split-apk-path=<(final_apk_path_no_extension)-density-xxhdpi.apk',
+ '--split-apk-path=<(final_apk_path_no_extension)-density-tvdpi.apk',
+ ],
+ }],
],
},
],
- 'dependencies': [
- '<(DEPTH)/build/android/rezip.gyp:rezip_apk_jar',
+ }],
+ ['create_density_splits == 1', {
+ 'actions': [
+ {
+ 'action_name': 'finalize_density_splits',
+ 'variables': {
+ 'density_splits': 1,
+ },
+ 'includes': [ 'android/finalize_splits_action.gypi']
+ },
],
}],
['is_test_apk == 1', {
@@ -607,8 +737,8 @@
'dependencies_res_zip_paths=': [],
'additional_res_packages=': [],
}],
- ['res_v14_verify_only == 1', {
- 'process_resources_options+': ['--v14-verify-only']
+ ['res_v14_skip == 1', {
+ 'process_resources_options+': ['--v14-skip']
}],
['shared_resources == 1', {
'process_resources_options+': ['--shared-resources']
@@ -638,7 +768,7 @@
'action': [
'python', '<(DEPTH)/build/android/gyp/process_resources.py',
'--android-sdk', '<(android_sdk)',
- '--android-sdk-tools', '<(android_sdk_tools)',
+ '--aapt-path', '<(android_aapt_path)',
'--android-manifest', '<(android_manifest_path)',
'--dependencies-res-zips', '>(dependencies_res_zip_paths)',
@@ -863,109 +993,36 @@
'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' ],
},
{
- 'action_name': 'ant_package_<(_target_name)',
- 'message': 'Packaging <(_target_name)',
'variables': {
- # Write the inputs list to a file, so that its mtime is updated when
- # the list of inputs changes.
- 'inputs_list_file': '>|(apk_package.<(_target_name).gypcmd >@(package_input_paths))'
+ 'apk_path': '<(unsigned_apk_path)',
+ 'conditions': [
+ ['native_lib_target != ""', {
+ 'extra_inputs': ['<(native_lib_placeholder_stamp)'],
+ }],
+ ['create_abi_split == 0', {
+ 'native_libs_dir': '<(apk_package_native_libs_dir)',
+ }, {
+ 'native_libs_dir': '<(DEPTH)/build/android/ant/empty/res',
+ }],
+ ],
},
- 'inputs': [
- '<(DEPTH)/build/android/ant/apk-package.xml',
- '<(DEPTH)/build/android/gyp/util/build_utils.py',
- '<(DEPTH)/build/android/gyp/ant.py',
- '<(dex_path)',
- '<(codegen_stamp)',
- '<(obfuscate_stamp)',
- '<(resource_packaged_apk_path)',
- '>@(package_input_paths)',
- '>(inputs_list_file)',
- ],
- 'outputs': [
- '<(unsigned_apk_path)',
- ],
- 'conditions': [
- ['native_lib_target != ""', {
- 'inputs': ['<(native_lib_placeholder_stamp)'],
- }],
- ],
- 'action': [
- 'python', '<(DEPTH)/build/android/gyp/ant.py',
- '--',
- '-quiet',
- '-DDEX_FILE_PATH=<(intermediate_dir)/classes.dex',
- '-DANDROID_SDK_ROOT=<(android_sdk_root)',
- '-DANDROID_SDK_TOOLS=<(android_sdk_tools)',
- '-DRESOURCE_PACKAGED_APK_NAME=<(resource_packaged_apk_name)',
- '-DAPK_NAME=<(apk_name)',
- '-DCONFIGURATION_NAME=<(CONFIGURATION_NAME)',
- '-DNATIVE_LIBS_DIR=<(apk_package_native_libs_dir)',
- '-DOUT_DIR=<(intermediate_dir)',
- '-DUNSIGNED_APK_PATH=<(unsigned_apk_path)',
- '-DEMMA_INSTRUMENT=<(emma_instrument)',
- '-DEMMA_DEVICE_JAR=<(emma_device_jar)',
-
- '-Dbasedir=.',
- '-buildfile',
- '<(DEPTH)/build/android/ant/apk-package.xml',
- ]
+ 'includes': ['android/apkbuilder_action.gypi'],
},
],
}
« no previous file with comments | « build/java_aidl.gypi ('k') | build/json_schema_api.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698