Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1211)

Side by Side Diff: build/android/gyp/finalize_apk.py

Issue 1619553003: Support uncompress and page align shared libraries (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « build/android/gyp/apkbuilder.py ('k') | build/config/android/internal_rules.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 """Signs and zipaligns APK. 6 """Signs and zipaligns APK.
7 7
8 """ 8 """
9 9
10 import optparse 10 import optparse
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 '-sigalg', 'MD5withRSA', 48 '-sigalg', 'MD5withRSA',
49 '-digestalg', 'SHA1', 49 '-digestalg', 'SHA1',
50 '-keystore', key_path, 50 '-keystore', key_path,
51 '-storepass', key_passwd, 51 '-storepass', key_passwd,
52 signed_path, 52 signed_path,
53 key_name, 53 key_name,
54 ] 54 ]
55 build_utils.CheckOutput(sign_cmd) 55 build_utils.CheckOutput(sign_cmd)
56 56
57 57
58 def AlignApk(zipalign_path, unaligned_path, final_path): 58 def AlignApk(zipalign_path, package_align, unaligned_path, final_path):
59 align_cmd = [ 59 align_cmd = [
60 zipalign_path, 60 zipalign_path,
61 '-f', '4', # 4 bytes 61 '-f'
62 ]
63
64 if package_align:
65 align_cmd += ['-p']
66
67 align_cmd += [
68 '4', # 4 bytes
62 unaligned_path, 69 unaligned_path,
63 final_path, 70 final_path,
64 ] 71 ]
65 build_utils.CheckOutput(align_cmd) 72 build_utils.CheckOutput(align_cmd)
66 73
67 74
68 def main(args): 75 def main(args):
69 args = build_utils.ExpandFileArgs(args) 76 args = build_utils.ExpandFileArgs(args)
70 77
71 parser = optparse.OptionParser() 78 parser = optparse.OptionParser()
72 build_utils.AddDepfileOption(parser) 79 build_utils.AddDepfileOption(parser)
73 80
74 parser.add_option('--rezip-apk-jar-path', 81 parser.add_option('--rezip-apk-jar-path',
75 help='Path to the RezipApk jar file.') 82 help='Path to the RezipApk jar file.')
76 parser.add_option('--zipalign-path', help='Path to the zipalign tool.') 83 parser.add_option('--zipalign-path', help='Path to the zipalign tool.')
84 parser.add_option('--page-align-shared-libraries',
85 action='store_true',
86 help='Page align shared libraries.')
77 parser.add_option('--unsigned-apk-path', help='Path to input unsigned APK.') 87 parser.add_option('--unsigned-apk-path', help='Path to input unsigned APK.')
78 parser.add_option('--final-apk-path', 88 parser.add_option('--final-apk-path',
79 help='Path to output signed and aligned APK.') 89 help='Path to output signed and aligned APK.')
80 parser.add_option('--key-path', help='Path to keystore for signing.') 90 parser.add_option('--key-path', help='Path to keystore for signing.')
81 parser.add_option('--key-passwd', help='Keystore password') 91 parser.add_option('--key-passwd', help='Keystore password')
82 parser.add_option('--key-name', help='Keystore name') 92 parser.add_option('--key-name', help='Keystore name')
83 parser.add_option('--stamp', help='Path to touch on success.') 93 parser.add_option('--stamp', help='Path to touch on success.')
84 parser.add_option('--load-library-from-zip', type='int', 94 parser.add_option('--load-library-from-zip', type='int',
85 help='If non-zero, build the APK such that the library can be loaded ' + 95 help='If non-zero, build the APK such that the library can be loaded ' +
86 'directly from the zip file using the crazy linker. The library ' + 96 'directly from the zip file using the crazy linker. The library ' +
87 'will be renamed, uncompressed and page aligned.') 97 'will be renamed, uncompressed and page aligned.')
88 98
89 options, _ = parser.parse_args() 99 options, _ = parser.parse_args()
90 100
91 input_paths = [ 101 input_paths = [
92 options.unsigned_apk_path, 102 options.unsigned_apk_path,
93 options.key_path, 103 options.key_path,
94 ] 104 ]
95 105
96 if options.load_library_from_zip: 106 if options.load_library_from_zip:
97 input_paths.append(options.rezip_apk_jar_path) 107 input_paths.append(options.rezip_apk_jar_path)
98 108
99 input_strings = [ 109 input_strings = [
100 options.load_library_from_zip, 110 options.load_library_from_zip,
101 options.key_name, 111 options.key_name,
102 options.key_passwd, 112 options.key_passwd,
113 options.page_align_shared_libraries,
103 ] 114 ]
104 115
105 build_utils.CallAndWriteDepfileIfStale( 116 build_utils.CallAndWriteDepfileIfStale(
106 lambda: FinalizeApk(options), 117 lambda: FinalizeApk(options),
107 options, 118 options,
108 record_path=options.unsigned_apk_path + '.finalize.md5.stamp', 119 record_path=options.unsigned_apk_path + '.finalize.md5.stamp',
109 input_paths=input_paths, 120 input_paths=input_paths,
110 input_strings=input_strings, 121 input_strings=input_strings,
111 output_paths=[options.final_apk_path]) 122 output_paths=[options.final_apk_path])
112 123
(...skipping 20 matching lines...) Expand all
133 apk_to_sign, signed_apk_path) 144 apk_to_sign, signed_apk_path)
134 145
135 if options.load_library_from_zip: 146 if options.load_library_from_zip:
136 # Reorder the contents of the APK. This re-establishes the canonical 147 # Reorder the contents of the APK. This re-establishes the canonical
137 # order which means the library will be back at its page aligned location. 148 # order which means the library will be back at its page aligned location.
138 # This step also aligns uncompressed items to 4 bytes. 149 # This step also aligns uncompressed items to 4 bytes.
139 ReorderAndAlignApk( 150 ReorderAndAlignApk(
140 options.rezip_apk_jar_path, signed_apk_path, options.final_apk_path) 151 options.rezip_apk_jar_path, signed_apk_path, options.final_apk_path)
141 else: 152 else:
142 # Align uncompressed items to 4 bytes 153 # Align uncompressed items to 4 bytes
143 AlignApk(options.zipalign_path, signed_apk_path, options.final_apk_path) 154 AlignApk(options.zipalign_path,
155 options.page_align_shared_libraries,
156 signed_apk_path,
157 options.final_apk_path)
144 158
145 159
146 if __name__ == '__main__': 160 if __name__ == '__main__':
147 sys.exit(main(sys.argv[1:])) 161 sys.exit(main(sys.argv[1:]))
OLDNEW
« no previous file with comments | « build/android/gyp/apkbuilder.py ('k') | build/config/android/internal_rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698