Skip to content

Commit 6fdd21a

Browse files
A Googlercopybara-github
authored andcommitted
Allow customizing zipalign alignment in mobile-install.
PiperOrigin-RevId: 918647938 Change-Id: I33503c6c1b14e265420958a30117bcb266989016
1 parent dacec7b commit 6fdd21a

3 files changed

Lines changed: 13 additions & 6 deletions

File tree

mobile_install/adapters/android_binary.bzl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ def extract(target, ctx):
6060
debug_signing_keys = ctx.rule.files.debug_signing_keys,
6161
debug_signing_lineage_file = utils.only(ctx.rule.files.debug_signing_lineage_file, allow_empty = True),
6262
key_rotation_min_sdk = ctx.rule.attr.key_rotation_min_sdk,
63+
zipalign_alignment = getattr(ctx.rule.attr, "zipalign_alignment", 4),
6364
merged_manifest = target[AndroidIdeInfo].generated_manifest,
6465
native_libs = target[AndroidIdeInfo].native_libs,
6566
package = java_package,

mobile_install/apks.bzl

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def _patch_split_manifests(ctx, orig_manifest, split_manifests, out_manifest_pac
6363
progress_message = "MI Patch split manifests",
6464
)
6565

66-
def _make_split_apk(ctx, dirs, artifacts, debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk, out):
66+
def _make_split_apk(ctx, dirs, artifacts, debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk, zipalign_alignment, out):
6767
unsigned = utils.isolated_declare_file(ctx, out.basename + "_unsigned", sibling = out)
6868

6969
args = ctx.actions.args()
@@ -90,7 +90,7 @@ def _make_split_apk(ctx, dirs, artifacts, debug_signing_keys, debug_signing_line
9090
progress_message = "MI Making split app %s" % out.path,
9191
)
9292

93-
_zipalign_sign(ctx, unsigned, out, debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk)
93+
_zipalign_sign(ctx, unsigned, out, debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk, zipalign_alignment)
9494

9595
def make_split_apks(
9696
ctx,
@@ -104,6 +104,7 @@ def make_split_apks(
104104
debug_signing_keys,
105105
debug_signing_lineage_file,
106106
key_rotation_min_sdk,
107+
zipalign_alignment,
107108
sibling):
108109
"""Create a split for each dex and for resources"""
109110
manifest_package_name = utils.isolated_declare_file(ctx, "manifest_package_name.txt", sibling = sibling)
@@ -180,6 +181,7 @@ def make_split_apks(
180181
debug_signing_keys,
181182
debug_signing_lineage_file,
182183
key_rotation_min_sdk,
184+
zipalign_alignment,
183185
split,
184186
)
185187
splits.append(split)
@@ -206,12 +208,12 @@ def make_split_apks(
206208
# Resources are now in the base apk to support RRO. Previously they were a separate split, but
207209
# base reinstalls no longer require a full reinstall.
208210
base = utils.isolated_declare_file(ctx, "splits/base.apk", sibling = sibling)
209-
_make_split_apk(ctx, [compiled], [resource_apk, java8_legacy], debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk, base)
211+
_make_split_apk(ctx, [compiled], [resource_apk, java8_legacy], debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk, zipalign_alignment, base)
210212
splits.append(base)
211213

212214
return manifest_package_name, splits
213215

214-
def _zipalign_sign(ctx, unsigned_apk, signed_apk, debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk):
216+
def _zipalign_sign(ctx, unsigned_apk, signed_apk, debug_signing_keys, debug_signing_lineage_file, key_rotation_min_sdk, zipalign_alignment):
215217
"""Zipalign and signs the given apk."""
216218

217219
signing_params = ((("--lineage %s " % debug_signing_lineage_file.path) if debug_signing_lineage_file else "") +
@@ -237,10 +239,11 @@ jvm=$3
237239
apk_signer=$4
238240
signing_params=$5
239241
signed_apk=$6
242+
zipalign_alignment=$7
240243
tmp_dir=$(mktemp -d)
241244
tmp_apk="${tmp_dir}/zipaligned.apk"
242-
${zipalign} -P 16 4 ${unsigned_apk} ${tmp_apk}
243-
${jvm} -jar ${apk_signer} sign ${signing_params} --out ${signed_apk} ${tmp_apk}
245+
${zipalign} -P 16 ${zipalign_alignment} ${unsigned_apk} ${tmp_apk}
246+
${jvm} -jar ${apk_signer} sign ${signing_params} --alignment-preserved true --out ${signed_apk} ${tmp_apk}
244247
"""
245248
ctx.actions.run_shell(
246249
command = cmd,
@@ -251,6 +254,7 @@ ${jvm} -jar ${apk_signer} sign ${signing_params} --out ${signed_apk} ${tmp_apk}
251254
utils.first(ctx.attr._apk_signer[DefaultInfo].files.to_list()).path,
252255
signing_params,
253256
signed_apk.path,
257+
str(zipalign_alignment),
254258
],
255259
tools = [ctx.executable._zipalign],
256260
inputs = (debug_signing_keys +

mobile_install/process.bzl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def process(
3838
debug_signing_keys = [],
3939
debug_signing_lineage_file = None,
4040
key_rotation_min_sdk = None,
41+
zipalign_alignment = 4,
4142
apk = None,
4243
sibling = None):
4344
"""Processes the data in the mi and return data to pass up the graph.
@@ -109,6 +110,7 @@ def process(
109110
debug_signing_keys,
110111
debug_signing_lineage_file,
111112
key_rotation_min_sdk,
113+
zipalign_alignment,
112114
sibling,
113115
)
114116

0 commit comments

Comments
 (0)