Commit ff96dbaf authored by Torne (Richard Coles)'s avatar Torne (Richard Coles) Committed by Commit Bot

Allow native lib placeholders for both ABIs.

Allow native lib placeholders to be specified for both ABIs, not just
the primary, to allow APKs that don't contain real native code to
present to Android as if they were still multiarch.

Change-Id: I497db19dd2dffbdd816615d9a5905ae4a77a687b
Reviewed-on: https://chromium-review.googlesource.com/1048525Reviewed-by: default avataragrieve <agrieve@chromium.org>
Commit-Queue: Richard Coles <torne@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556864}
parent ecd3b1d9
...@@ -70,6 +70,10 @@ def _ParseArgs(args): ...@@ -70,6 +70,10 @@ def _ParseArgs(args):
parser.add_argument('--native-lib-placeholders', parser.add_argument('--native-lib-placeholders',
help='GYP-list of native library placeholders to add.', help='GYP-list of native library placeholders to add.',
default='[]') default='[]')
parser.add_argument('--secondary-native-lib-placeholders',
help='GYP-list of native library placeholders to add '
'for the secondary ABI',
default='[]')
parser.add_argument('--uncompress-shared-libraries', parser.add_argument('--uncompress-shared-libraries',
action='store_true', action='store_true',
help='Uncompress shared libraries') help='Uncompress shared libraries')
...@@ -79,6 +83,8 @@ def _ParseArgs(args): ...@@ -79,6 +83,8 @@ def _ParseArgs(args):
options.uncompressed_assets) options.uncompressed_assets)
options.native_lib_placeholders = build_utils.ParseGnList( options.native_lib_placeholders = build_utils.ParseGnList(
options.native_lib_placeholders) options.native_lib_placeholders)
options.secondary_native_lib_placeholders = build_utils.ParseGnList(
options.secondary_native_lib_placeholders)
options.java_resources = build_utils.ParseGnList(options.java_resources) options.java_resources = build_utils.ParseGnList(options.java_resources)
all_libs = [] all_libs = []
for gyp_list in options.native_libs: for gyp_list in options.native_libs:
...@@ -93,7 +99,8 @@ def _ParseArgs(args): ...@@ -93,7 +99,8 @@ def _ParseArgs(args):
if not options.android_abi and (options.native_libs or if not options.android_abi and (options.native_libs or
options.native_lib_placeholders): options.native_lib_placeholders):
raise Exception('Must specify --android-abi with --native-libs') raise Exception('Must specify --android-abi with --native-libs')
if not options.secondary_android_abi and options.secondary_native_libs: if not options.secondary_android_abi and (options.secondary_native_libs or
options.secondary_native_lib_placeholders):
raise Exception('Must specify --secondary-android-abi with' raise Exception('Must specify --secondary-android-abi with'
' --secondary-native-libs') ' --secondary-native-libs')
return options return options
...@@ -225,6 +232,7 @@ def main(args): ...@@ -225,6 +232,7 @@ def main(args):
input_strings = [options.android_abi, input_strings = [options.android_abi,
options.native_lib_placeholders, options.native_lib_placeholders,
options.secondary_native_lib_placeholders,
options.uncompress_shared_libraries] options.uncompress_shared_libraries]
if options.secondary_android_abi: if options.secondary_android_abi:
...@@ -304,6 +312,13 @@ def main(args): ...@@ -304,6 +312,13 @@ def main(args):
apk_path = 'lib/%s/%s' % (options.android_abi, name) apk_path = 'lib/%s/%s' % (options.android_abi, name)
build_utils.AddToZipHermetic(out_apk, apk_path, data='') build_utils.AddToZipHermetic(out_apk, apk_path, data='')
for name in sorted(options.secondary_native_lib_placeholders):
# Note: Empty libs files are ignored by md5check (can cause issues
# with stale builds when the only change is adding/removing
# placeholders).
apk_path = 'lib/%s/%s' % (options.secondary_android_abi, name)
build_utils.AddToZipHermetic(out_apk, apk_path, data='')
# 5. Resources # 5. Resources
for info in resource_infos[1:]: for info in resource_infos[1:]:
copy_resource(info) copy_resource(info)
......
...@@ -2024,6 +2024,8 @@ if (enable_java_templates) { ...@@ -2024,6 +2024,8 @@ if (enable_java_templates) {
# output_apk_path: Output path for the generated .apk. # output_apk_path: Output path for the generated .apk.
# native_lib_placeholders: List of placeholder filenames to add to the apk # native_lib_placeholders: List of placeholder filenames to add to the apk
# (optional). # (optional).
# secondary_native_lib_placeholders: List of placeholder filenames to add to
# the apk for the secondary ABI (optional).
# native_libs: List of native libraries. # native_libs: List of native libraries.
# native_libs_filearg: @FileArg() of additionally native libraries. # native_libs_filearg: @FileArg() of additionally native libraries.
# write_asset_list: Adds an extra file to the assets, which contains a list of # write_asset_list: Adds an extra file to the assets, which contains a list of
...@@ -2040,6 +2042,11 @@ if (enable_java_templates) { ...@@ -2040,6 +2042,11 @@ if (enable_java_templates) {
if (defined(invoker.native_lib_placeholders)) { if (defined(invoker.native_lib_placeholders)) {
_native_lib_placeholders = invoker.native_lib_placeholders _native_lib_placeholders = invoker.native_lib_placeholders
} }
_secondary_native_lib_placeholders = []
if (defined(invoker.secondary_native_lib_placeholders)) {
_secondary_native_lib_placeholders =
invoker.secondary_native_lib_placeholders
}
script = "//build/android/gyp/apkbuilder.py" script = "//build/android/gyp/apkbuilder.py"
depfile = "$target_gen_dir/$target_name.d" depfile = "$target_gen_dir/$target_name.d"
...@@ -2106,6 +2113,13 @@ if (enable_java_templates) { ...@@ -2106,6 +2113,13 @@ if (enable_java_templates) {
_native_lib_placeholders != []) { _native_lib_placeholders != []) {
args += [ "--android-abi=$android_app_abi" ] args += [ "--android-abi=$android_app_abi" ]
} }
if (defined(invoker.secondary_abi_native_libs_filearg) ||
(defined(invoker.secondary_native_libs) &&
invoker.secondary_native_libs != []) ||
_secondary_native_lib_placeholders != []) {
assert(defined(android_app_secondary_abi))
args += [ "--secondary-android-abi=$android_app_secondary_abi" ]
}
if (invoker.native_libs != []) { if (invoker.native_libs != []) {
_rebased_native_libs = rebase_path(invoker.native_libs, root_build_dir) _rebased_native_libs = rebase_path(invoker.native_libs, root_build_dir)
args += [ "--native-libs=$_rebased_native_libs" ] args += [ "--native-libs=$_rebased_native_libs" ]
...@@ -2116,23 +2130,18 @@ if (enable_java_templates) { ...@@ -2116,23 +2130,18 @@ if (enable_java_templates) {
if (_native_lib_placeholders != []) { if (_native_lib_placeholders != []) {
args += [ "--native-lib-placeholders=$_native_lib_placeholders" ] args += [ "--native-lib-placeholders=$_native_lib_placeholders" ]
} }
if (_secondary_native_lib_placeholders != []) {
args += [ "--secondary-native-lib-placeholders=$_secondary_native_lib_placeholders" ]
}
# TODO (michaelbai): Remove the secondary_native_libs variable. # TODO (michaelbai): Remove the secondary_native_libs variable.
if (defined(invoker.secondary_abi_native_libs_filearg)) { if (defined(invoker.secondary_abi_native_libs_filearg)) {
assert(defined(android_app_secondary_abi)) args += [ "--secondary-native-libs=${invoker.secondary_abi_native_libs_filearg}" ]
args += [
"--secondary-native-libs=${invoker.secondary_abi_native_libs_filearg}",
"--secondary-android-abi=$android_app_secondary_abi",
]
} else if (defined(invoker.secondary_native_libs) && } else if (defined(invoker.secondary_native_libs) &&
invoker.secondary_native_libs != []) { invoker.secondary_native_libs != []) {
assert(defined(android_app_secondary_abi))
inputs += invoker.secondary_native_libs inputs += invoker.secondary_native_libs
_secondary_native_libs = rebase_path(invoker.secondary_native_libs) _secondary_native_libs = rebase_path(invoker.secondary_native_libs)
args += [ args += [ "--secondary-native-libs=$_secondary_native_libs" ]
"--secondary-native-libs=$_secondary_native_libs",
"--secondary-android-abi=$android_app_secondary_abi",
]
} }
if (defined(invoker.uncompress_shared_libraries) && if (defined(invoker.uncompress_shared_libraries) &&
...@@ -2299,6 +2308,7 @@ if (enable_java_templates) { ...@@ -2299,6 +2308,7 @@ if (enable_java_templates) {
"native_lib_placeholders", "native_lib_placeholders",
"native_libs_filearg", "native_libs_filearg",
"packaged_resources_path", "packaged_resources_path",
"secondary_native_lib_placeholders",
"secondary_abi_native_libs_filearg", "secondary_abi_native_libs_filearg",
"secondary_native_libs", "secondary_native_libs",
"uncompress_shared_libraries", "uncompress_shared_libraries",
......
...@@ -1780,6 +1780,8 @@ if (enable_java_templates) { ...@@ -1780,6 +1780,8 @@ if (enable_java_templates) {
# dependencies will also be included in the apk (e.g. for is_component_build). # dependencies will also be included in the apk (e.g. for is_component_build).
# native_lib_placeholders: List of placeholder filenames to add to the apk # native_lib_placeholders: List of placeholder filenames to add to the apk
# (optional). # (optional).
# secondary_native_lib_placeholders: List of placeholder filenames to add to
# the apk for the secondary ABI (optional).
# apk_under_test: For an instrumentation test apk, this is the target of the # apk_under_test: For an instrumentation test apk, this is the target of the
# tested apk. # tested apk.
# write_asset_list: Adds an extra file to the assets, which contains a list of # write_asset_list: Adds an extra file to the assets, which contains a list of
...@@ -2520,7 +2522,11 @@ if (enable_java_templates) { ...@@ -2520,7 +2522,11 @@ if (enable_java_templates) {
# Placeholders necessary for some older devices. # Placeholders necessary for some older devices.
# http://crbug.com/395038 # http://crbug.com/395038
forward_variables_from(invoker, [ "native_lib_placeholders" ]) forward_variables_from(invoker,
[
"native_lib_placeholders",
"secondary_native_lib_placeholders",
])
} }
_write_installer_json_rule_name = "${_template_name}__incremental_json" _write_installer_json_rule_name = "${_template_name}__incremental_json"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment