| OLD | NEW |
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # | 2 # |
| 3 # Copyright (c) 2015 The Chromium Authors. All rights reserved. | 3 # Copyright (c) 2015 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 | 6 |
| 7 """Adds the code parts to a resource APK.""" | 7 """Adds the code parts to a resource APK.""" |
| 8 | 8 |
| 9 import argparse | 9 import argparse |
| 10 import itertools | 10 import itertools |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 182 src_path=path, | 182 src_path=path, |
| 183 compress=compress) | 183 compress=compress) |
| 184 | 184 |
| 185 | 185 |
| 186 def main(args): | 186 def main(args): |
| 187 args = build_utils.ExpandFileArgs(args) | 187 args = build_utils.ExpandFileArgs(args) |
| 188 options = _ParseArgs(args) | 188 options = _ParseArgs(args) |
| 189 | 189 |
| 190 native_libs = sorted(options.native_libs) | 190 native_libs = sorted(options.native_libs) |
| 191 | 191 |
| 192 input_paths = [options.resource_apk, __file__] + native_libs | 192 input_paths = [options.resource_apk, __file__] |
| 193 # Include native libs in the depfile_deps since GN doesn't know about the | 193 # Include native libs in the depfile_deps since GN doesn't know about the |
| 194 # dependencies when is_component_build=true. | 194 # dependencies when is_component_build=true. |
| 195 depfile_deps = list(native_libs) | 195 depfile_deps = list(native_libs) |
| 196 | 196 |
| 197 secondary_native_libs = [] | 197 secondary_native_libs = [] |
| 198 if options.secondary_native_libs: | 198 if options.secondary_native_libs: |
| 199 secondary_native_libs = sorted(options.secondary_native_libs) | 199 secondary_native_libs = sorted(options.secondary_native_libs) |
| 200 input_paths += secondary_native_libs | |
| 201 depfile_deps += secondary_native_libs | 200 depfile_deps += secondary_native_libs |
| 202 | 201 |
| 203 if options.dex_file: | 202 if options.dex_file: |
| 204 input_paths.append(options.dex_file) | 203 input_paths.append(options.dex_file) |
| 205 | 204 |
| 206 input_strings = [options.android_abi, | 205 input_strings = [options.android_abi, |
| 207 options.native_lib_placeholders, | 206 options.native_lib_placeholders, |
| 208 options.uncompress_shared_libraries] | 207 options.uncompress_shared_libraries] |
| 209 | 208 |
| 210 if options.secondary_android_abi: | 209 if options.secondary_android_abi: |
| 211 input_strings.append(options.secondary_android_abi) | 210 input_strings.append(options.secondary_android_abi) |
| 212 | 211 |
| 213 if options.java_resources: | 212 if options.java_resources: |
| 214 input_paths.extend(options.java_resources) | 213 # Included via .build_config, so need to write it to depfile. |
| 214 depfile_deps.extend(options.java_resources) |
| 215 | 215 |
| 216 _assets = _ExpandPaths(options.assets) | 216 _assets = _ExpandPaths(options.assets) |
| 217 _uncompressed_assets = _ExpandPaths(options.uncompressed_assets) | 217 _uncompressed_assets = _ExpandPaths(options.uncompressed_assets) |
| 218 | 218 |
| 219 for src_path, dest_path in itertools.chain(_assets, _uncompressed_assets): | 219 for src_path, dest_path in itertools.chain(_assets, _uncompressed_assets): |
| 220 input_paths.append(src_path) | 220 # Included via .build_config, so need to write it to depfile. |
| 221 depfile_deps.append(src_path) |
| 221 input_strings.append(dest_path) | 222 input_strings.append(dest_path) |
| 222 | 223 |
| 223 def on_stale_md5(): | 224 def on_stale_md5(): |
| 224 tmp_apk = options.output_apk + '.tmp' | 225 tmp_apk = options.output_apk + '.tmp' |
| 225 try: | 226 try: |
| 226 # TODO(agrieve): It would be more efficient to combine this step | 227 # TODO(agrieve): It would be more efficient to combine this step |
| 227 # with finalize_apk(), which sometimes aligns and uncompresses the | 228 # with finalize_apk(), which sometimes aligns and uncompresses the |
| 228 # native libraries. | 229 # native libraries. |
| 229 with zipfile.ZipFile(options.resource_apk) as resource_apk, \ | 230 with zipfile.ZipFile(options.resource_apk) as resource_apk, \ |
| 230 zipfile.ZipFile(tmp_apk, 'w', zipfile.ZIP_DEFLATED) as out_apk: | 231 zipfile.ZipFile(tmp_apk, 'w', zipfile.ZIP_DEFLATED) as out_apk: |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 302 out_apk, apk_path, data=java_resource_jar.read(apk_path)) | 303 out_apk, apk_path, data=java_resource_jar.read(apk_path)) |
| 303 | 304 |
| 304 shutil.move(tmp_apk, options.output_apk) | 305 shutil.move(tmp_apk, options.output_apk) |
| 305 finally: | 306 finally: |
| 306 if os.path.exists(tmp_apk): | 307 if os.path.exists(tmp_apk): |
| 307 os.unlink(tmp_apk) | 308 os.unlink(tmp_apk) |
| 308 | 309 |
| 309 build_utils.CallAndWriteDepfileIfStale( | 310 build_utils.CallAndWriteDepfileIfStale( |
| 310 on_stale_md5, | 311 on_stale_md5, |
| 311 options, | 312 options, |
| 312 input_paths=input_paths, | 313 input_paths=input_paths + depfile_deps, |
| 313 input_strings=input_strings, | 314 input_strings=input_strings, |
| 314 output_paths=[options.output_apk], | 315 output_paths=[options.output_apk], |
| 315 depfile_deps=depfile_deps) | 316 depfile_deps=depfile_deps) |
| 316 | 317 |
| 317 | 318 |
| 318 if __name__ == '__main__': | 319 if __name__ == '__main__': |
| 319 main(sys.argv[1:]) | 320 main(sys.argv[1:]) |
| OLD | NEW |