Skip to content

Commit

Permalink
Android: Create *.apk.pak.info files
Browse files Browse the repository at this point in the history
These *.apk.pak.info files will be used by supersize.

Bug: 723672
Change-Id: Ia275d755d3059ec2c957b4fd09da84526dbc2363
Reviewed-on: https://chromium-review.googlesource.com/749505
Commit-Queue: Peter Wen <wnwen@chromium.org>
Reviewed-by: agrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#514838}
  • Loading branch information
Peter Wen authored and Commit Bot committed Nov 8, 2017
1 parent 41d2f45 commit e3942dc
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
27 changes: 26 additions & 1 deletion build/android/gyp/apkbuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ def _ParseArgs(args):
parser.add_argument('--output-apk',
help='Path to the output file',
required=True)
parser.add_argument('--apk-pak-info-path',
help='Path to the *.apk.pak.info file')
parser.add_argument('--dex-file',
help='Path to the classes.dex to use')
parser.add_argument('--native-libs',
Expand Down Expand Up @@ -183,6 +185,21 @@ def _AddNativeLibraries(out_apk, native_libs, android_abi, uncompress):
compress=compress)


def _MergePakInfoFiles(pak_info_path, asset_list):
lines = set()
for asset_details in asset_list:
src = asset_details.split(':')[0]
if src.endswith('.pak'):
with open(src + '.info', 'r') as src_info_file:
lines.update(src_info_file.readlines())
# Ensure that parent dirs exist before writing new files.
info_dir = os.path.dirname(pak_info_path)
if not os.path.exists(info_dir):
os.makedirs(info_dir)
with open(pak_info_path, 'w') as merged_info_file:
merged_info_file.writelines(sorted(lines))


def main(args):
args = build_utils.ExpandFileArgs(args)
options = _ParseArgs(args)
Expand Down Expand Up @@ -221,6 +238,10 @@ def main(args):
depfile_deps.append(src_path)
input_strings.append(dest_path)

output_paths = [options.output_apk]
if options.apk_pak_info_path:
output_paths.append(options.apk_pak_info_path)

def on_stale_md5():
tmp_apk = options.output_apk + '.tmp'
try:
Expand Down Expand Up @@ -302,6 +323,10 @@ def copy_resource(zipinfo):
build_utils.AddToZipHermetic(
out_apk, apk_path, data=java_resource_jar.read(apk_path))

if options.apk_pak_info_path:
_MergePakInfoFiles(options.apk_pak_info_path,
options.assets + options.uncompressed_assets)

shutil.move(tmp_apk, options.output_apk)
finally:
if os.path.exists(tmp_apk):
Expand All @@ -312,7 +337,7 @@ def copy_resource(zipinfo):
options,
input_paths=input_paths + depfile_deps,
input_strings=input_strings,
output_paths=[options.output_apk],
output_paths=output_paths,
depfile_deps=depfile_deps)


Expand Down
13 changes: 13 additions & 0 deletions build/config/android/internal_rules.gni
Original file line number Diff line number Diff line change
Expand Up @@ -1740,6 +1740,15 @@ if (enable_java_templates) {
# TODO(mlopatkin) We are relying on the fact that assets_build_config is
# an APK build_config.
args += [ "--java-resources=@FileArg($_rebased_build_config:java_resources_jars)" ]

if (defined(invoker.apk_name)) {
# The supersize tool will search in this directory for each apk.
_apk_pak_info_path = "size-info/${invoker.apk_name}.apk.pak.info"
args += [
"--apk-pak-info-path",
_apk_pak_info_path,
]
}
}
if (defined(invoker.write_asset_list) && invoker.write_asset_list) {
args += [ "--write-asset-list" ]
Expand Down Expand Up @@ -1962,6 +1971,10 @@ if (enable_java_templates) {
dex_path = _dex_path
}

if (defined(invoker.apk_name)) {
apk_name = invoker.apk_name
}

output_apk_path = _packaged_apk_path
}

Expand Down
3 changes: 3 additions & 0 deletions build/config/android/rules.gni
Original file line number Diff line number Diff line change
Expand Up @@ -2474,6 +2474,9 @@ if (enable_java_templates) {
dex_path = _final_dex_path
load_library_from_apk = _load_library_from_apk

# This is used to generate *.apk.pak.info files.
apk_name = invoker.apk_name

keystore_name = _keystore_name
keystore_path = _keystore_path
keystore_password = _keystore_password
Expand Down

0 comments on commit e3942dc

Please sign in to comment.