Commit bffba4c8 authored by Andrew Grieve's avatar Andrew Grieve Committed by Commit Bot

Android: Make incremental's package_resources use non-incremental results.

Simplifies build rules, and paves the way for moving package_resources
create_apk->android_apk

Change-Id: I98a4d82a21ea5e51c0d72c04cb8d47a69a290da3
Reviewed-on: https://chromium-review.googlesource.com/740342
Commit-Queue: agrieve <agrieve@chromium.org>
Reviewed-by: default avatarEric Stevenson <estevenson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#512324}
parent 3b804056
......@@ -11,7 +11,12 @@ the application class changed to IncrementalApplication.
import argparse
import os
import re
import shutil
import subprocess
import sys
import tempfile
import zipfile
from xml.etree import ElementTree
sys.path.append(os.path.join(os.path.dirname(__file__), os.path.pardir, 'gyp'))
......@@ -39,7 +44,6 @@ def _AddNamespace(name):
def _ParseArgs():
parser = argparse.ArgumentParser()
build_utils.AddDepfileOption(parser)
parser.add_argument('--src-manifest',
help='The main manifest of the app',
required=True)
......@@ -50,7 +54,16 @@ def _ParseArgs():
help='Changes all android:isolatedProcess to false. '
'This is required on Android M+',
action='store_true')
return parser.parse_args()
parser.add_argument('--out-apk', help='Path to output .ap_ file')
parser.add_argument('--in-apk', help='Path to non-incremental .ap_ file')
parser.add_argument('--aapt-path', help='Path to the Android aapt tool')
parser.add_argument('--android-sdk-jar', help='Path to the Android SDK jar.')
ret = parser.parse_args()
if ret.out_apk and not (ret.in_apk and ret.aapt_path and ret.android_sdk_jar):
parser.error(
'--out-apk requires --in-apk, --aapt-path, and --android-sdk-jar.')
return ret
def _CreateMetaData(parent, name, value):
......@@ -102,6 +115,13 @@ def _ProcessManifest(main_manifest, disable_isolated_processes):
return ElementTree.tostring(doc, encoding='UTF-8')
def _ExtractVersionFromApk(aapt_path, apk_path):
output = subprocess.check_output([aapt_path, 'dump', 'badging', apk_path])
version_code = re.search(r"versionCode='(.*?)'", output).group(1)
version_name = re.search(r"versionName='(.*?)'", output).group(1)
return version_code, version_name,
def main():
options = _ParseArgs()
with open(options.src_manifest) as f:
......@@ -111,9 +131,19 @@ def main():
with open(options.out_manifest, 'w') as f:
f.write(new_manifest_data)
if options.depfile:
deps = [options.src_manifest]
build_utils.WriteDepfile(options.depfile, options.out_manifest, deps)
if options.out_apk:
version_code, version_name = _ExtractVersionFromApk(
options.aapt_path, options.in_apk)
with tempfile.NamedTemporaryFile() as f:
cmd = [options.aapt_path, 'package', '-f', '-F', f.name,
'-M', options.out_manifest, '-I', options.android_sdk_jar,
'-I', options.in_apk, '--replace-version',
'--version-code', version_code, '--version-name', version_name]
subprocess.check_call(cmd)
with zipfile.ZipFile(f.name, 'a') as z:
build_utils.MergeZips(
z, [options.in_apk], exclude_patterns=['AndroidManifest.xml'])
shutil.copyfile(f.name, options.out_apk)
if __name__ == '__main__':
......
This diff is collapsed.
......@@ -1632,8 +1632,6 @@ if (enable_java_templates) {
# Variables
# alternative_android_sdk_jar: The alternative android sdk jar used in
# proguard.
# android_aapt_path: Android aapt tool to replace default one to build
# resource.
# android_manifest: Path to AndroidManifest.xml.
# android_manifest_dep: Target that generates AndroidManifest (if applicable)
# chromium_code: If true, extra analysis warning/errors will be enabled.
......@@ -2029,7 +2027,6 @@ if (enable_java_templates) {
forward_variables_from(invoker,
[
"alternative_android_sdk_jar",
"android_aapt_path",
"app_as_shared_lib",
"include_all_resources",
"shared_resources",
......@@ -2403,11 +2400,9 @@ if (enable_java_templates) {
[
"aapt_locale_whitelist",
"alternative_android_sdk_jar",
"android_aapt_path",
"app_as_shared_lib",
"deps",
"exclude_xxxhdpi",
"extensions_to_not_compress",
"language_splits",
"png_to_webp",
"post_process_package_resources_script",
......@@ -2429,13 +2424,6 @@ if (enable_java_templates) {
load_library_from_apk = _load_library_from_apk
create_density_splits = _create_density_splits
if (!defined(extensions_to_not_compress)) {
# Allow icu data, v8 snapshots, and pak files to be loaded directly from
# the .apk.
# Note: These are actually suffix matches, not necessarily extensions.
extensions_to_not_compress = ".dat,.bin,.pak"
}
version_code = _version_code
version_name = _version_name
......@@ -2518,7 +2506,6 @@ if (enable_java_templates) {
forward_variables_from(invoker,
[
"alternative_android_sdk_jar",
"android_aapt_path",
"deps",
"native_lib_placeholders",
"public_deps",
......
......@@ -112,7 +112,6 @@ template("monochrome_public_apk_tmpl") {
app_as_shared_lib = true
use_chromium_linker = false
requires_sdk_api_level_23 = true
extensions_to_not_compress = ".lpak,.pak,.bin,.dat"
# Webview supports all locales (has no omitted ones).
aapt_locale_whitelist = locales
......
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