@@ -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
9595def 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
237239apk_signer=$4
238240signing_params=$5
239241signed_apk=$6
242+ zipalign_alignment=$7
240243tmp_dir=$(mktemp -d)
241244tmp_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 +
0 commit comments