OLD | NEW |
---|---|
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 import("//build/config/android/config.gni") | 5 import("//build/config/android/config.gni") |
6 | 6 |
7 assert(is_android) | 7 assert(is_android) |
8 | 8 |
9 rebased_android_sdk = rebase_path(android_sdk, root_build_dir) | 9 rebased_android_sdk = rebase_path(android_sdk, root_build_dir) |
10 rebased_android_sdk_root = rebase_path(android_sdk_root, root_build_dir) | 10 rebased_android_sdk_root = rebase_path(android_sdk_root, root_build_dir) |
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
431 ] | 431 ] |
432 } | 432 } |
433 | 433 |
434 group(target_name) { | 434 group(target_name) { |
435 deps = [ | 435 deps = [ |
436 ":${target_name}__jar_toc", | 436 ":${target_name}__jar_toc", |
437 ] | 437 ] |
438 } | 438 } |
439 } | 439 } |
440 | 440 |
441 template("finalize_apk") { | |
442 action(target_name) { | |
443 script = "//build/android/gyp/finalize_apk.py" | |
444 depfile = "$target_gen_dir/$target_name.d" | |
445 | |
446 sources = [ | |
447 invoker.input_apk_path, | |
448 ] | |
449 inputs = [ | |
450 invoker.keystore_path, | |
451 ] | |
452 outputs = [ | |
453 depfile, | |
454 invoker.output_apk_path, | |
455 ] | |
456 | |
457 args = [ | |
458 "--depfile", | |
459 rebase_path(depfile, root_build_dir), | |
460 "--zipalign-path", | |
461 rebase_path(zipalign_path, root_build_dir), | |
462 "--unsigned-apk-path", | |
463 rebase_path(invoker.input_apk_path, root_build_dir), | |
464 "--final-apk-path", | |
465 rebase_path(invoker.output_apk_path, root_build_dir), | |
466 "--key-path", | |
467 rebase_path(invoker.keystore_path, root_build_dir), | |
468 "--key-name", | |
469 invoker.keystore_name, | |
470 "--key-passwd", | |
471 invoker.keystore_password, | |
472 ] | |
473 if (defined(invoker.rezip_apk) && invoker.rezip_apk) { | |
474 _rezip_jar_path = "$root_build_dir/lib.java/rezip_apk.jar" | |
475 inputs += [ _rezip_jar_path ] | |
476 args += [ | |
477 "--load-library-from-zip-file=1", | |
478 "--rezip-apk-jar-path", | |
479 rebase_path(_rezip_jar_path, root_build_dir), | |
480 ] | |
481 } | |
482 } | |
483 } | |
484 | |
441 # Packages resources, assets, dex, and native libraries into an apk. Signs and | 485 # Packages resources, assets, dex, and native libraries into an apk. Signs and |
442 # zipaligns the apk. | 486 # zipaligns the apk. |
443 template("create_apk") { | 487 template("create_apk") { |
444 set_sources_assignment_filter([]) | 488 set_sources_assignment_filter([]) |
445 if (defined(invoker.testonly)) { | 489 if (defined(invoker.testonly)) { |
446 testonly = invoker.testonly | 490 testonly = invoker.testonly |
447 } | 491 } |
448 | 492 |
449 _android_manifest = invoker.android_manifest | 493 _android_manifest = invoker.android_manifest |
450 _base_path = invoker.base_path | 494 _base_path = invoker.base_path |
451 _final_apk_path = invoker.apk_path | 495 _final_apk_path = invoker.apk_path |
452 | 496 |
453 if (defined(invoker.resources_zip)) { | 497 if (defined(invoker.resources_zip)) { |
454 _resources_zip = invoker.resources_zip | 498 _resources_zip = invoker.resources_zip |
455 } | 499 } |
456 if (defined(invoker.dex_path)) { | 500 if (defined(invoker.dex_path)) { |
457 _dex_path = invoker.dex_path | 501 _dex_path = invoker.dex_path |
458 } | 502 } |
459 _keystore_path = invoker.keystore_path | |
460 _keystore_name = invoker.keystore_name | |
461 _keystore_password = invoker.keystore_password | |
462 _load_library_from_apk = invoker.load_library_from_apk | 503 _load_library_from_apk = invoker.load_library_from_apk |
463 | 504 |
464 _deps = [] | 505 _package_deps = [] |
465 if (defined(invoker.deps)) { | 506 if (defined(invoker.deps)) { |
466 _deps = invoker.deps | 507 _package_deps = invoker.deps |
467 } | 508 } |
468 | 509 |
469 _native_libs_dir = "//build/android/empty/res" | 510 _native_libs_dir = "//build/android/empty/res" |
470 if (defined(invoker.native_libs_dir)) { | 511 if (defined(invoker.native_libs_dir)) { |
471 _native_libs_dir = invoker.native_libs_dir | 512 _native_libs_dir = invoker.native_libs_dir |
472 } | 513 } |
473 | 514 |
474 if (defined(invoker.asset_location)) { | 515 if (defined(invoker.asset_location)) { |
475 _asset_location = invoker.asset_location | 516 _asset_location = invoker.asset_location |
476 } | 517 } |
477 | 518 |
478 _version_code = invoker.version_code | 519 _version_code = invoker.version_code |
479 _version_name = invoker.version_name | 520 _version_name = invoker.version_name |
480 | 521 |
481 _base_apk_path = _base_path + ".apk_intermediates" | 522 _base_apk_path = _base_path + ".apk_intermediates" |
482 | 523 |
483 _resource_packaged_apk_path = _base_apk_path + ".ap_" | 524 _resource_packaged_apk_path = _base_apk_path + ".ap_" |
484 _packaged_apk_path = _base_apk_path + ".unfinished.apk" | 525 _packaged_apk_path = _base_apk_path + ".unfinished.apk" |
485 _shared_resources = | 526 _shared_resources = |
486 defined(invoker.shared_resources) && invoker.shared_resources | 527 defined(invoker.shared_resources) && invoker.shared_resources |
487 | 528 |
488 _configuration_name = "Release" | 529 _configuration_name = "Release" |
489 if (is_debug) { | 530 if (is_debug) { |
490 _configuration_name = "Debug" | 531 _configuration_name = "Debug" |
491 } | 532 } |
492 | 533 |
493 action("${target_name}__package_resources") { | 534 _create_density_splits = |
494 deps = _deps | 535 defined(invoker.create_density_splits) && invoker.create_density_splits |
536 if (_create_density_splits) { | |
537 _split_densities = [ | |
538 "hdpi", | |
539 "xhdpi", | |
540 "xxhdpi", | |
541 "tvdpi", | |
542 ] | |
543 } | |
544 | |
545 _package_resources_target_name = "${target_name}__package_resources" | |
546 action(_package_resources_target_name) { | |
547 deps = _package_deps | |
495 | 548 |
496 script = "//build/android/gyp/package_resources.py" | 549 script = "//build/android/gyp/package_resources.py" |
497 depfile = "${target_gen_dir}/${target_name}.d" | 550 depfile = "${target_gen_dir}/${target_name}.d" |
498 inputs = [ | 551 inputs = [ |
499 _android_manifest, | 552 _android_manifest, |
500 ] | 553 ] |
501 if (defined(_resources_zip)) { | 554 if (defined(_resources_zip)) { |
502 inputs += [ _resources_zip ] | 555 inputs += [ _resources_zip ] |
503 } | 556 } |
504 outputs = [ | 557 outputs = [ |
(...skipping 27 matching lines...) Expand all Loading... | |
532 } | 585 } |
533 if (defined(_resources_zip)) { | 586 if (defined(_resources_zip)) { |
534 args += [ | 587 args += [ |
535 "--resource-zips", | 588 "--resource-zips", |
536 rebase_path(_resources_zip, root_build_dir), | 589 rebase_path(_resources_zip, root_build_dir), |
537 ] | 590 ] |
538 } | 591 } |
539 if (_shared_resources) { | 592 if (_shared_resources) { |
540 args += [ "--shared-resources" ] | 593 args += [ "--shared-resources" ] |
541 } | 594 } |
595 if (_create_density_splits) { | |
596 args += [ "--create-density-splits" ] | |
597 foreach(_density, _split_densities) { | |
598 outputs += [ "${_resource_packaged_apk_path}-${_density}" ] | |
599 } | |
600 } | |
542 } | 601 } |
543 | 602 |
544 action("${target_name}__package") { | 603 action("${target_name}__package") { |
545 script = "//build/android/gyp/ant.py" | 604 script = "//build/android/gyp/ant.py" |
546 _ant_script = "//build/android/ant/apk-package.xml" | 605 _ant_script = "//build/android/ant/apk-package.xml" |
547 | 606 |
607 deps = [ | |
608 ":${_package_resources_target_name}", | |
609 ] | |
548 depfile = "$target_gen_dir/$target_name.d" | 610 depfile = "$target_gen_dir/$target_name.d" |
549 | 611 |
550 inputs = [ | 612 inputs = [ |
551 _resource_packaged_apk_path, | 613 _resource_packaged_apk_path, |
552 _ant_script, | 614 _ant_script, |
553 ] | 615 ] |
554 if (defined(_dex_path)) { | 616 if (defined(_dex_path)) { |
555 inputs += [ _dex_path ] | 617 inputs += [ _dex_path ] |
556 } | 618 } |
557 | 619 |
(...skipping 29 matching lines...) Expand all Loading... | |
587 _rebased_dex_path = rebase_path(_dex_path, root_build_dir) | 649 _rebased_dex_path = rebase_path(_dex_path, root_build_dir) |
588 args += [ | 650 args += [ |
589 "-DDEX_FILE_PATH=$_rebased_dex_path", | 651 "-DDEX_FILE_PATH=$_rebased_dex_path", |
590 "-DHAS_CODE=true", | 652 "-DHAS_CODE=true", |
591 ] | 653 ] |
592 } else { | 654 } else { |
593 args += [ "-DHAS_CODE=false" ] | 655 args += [ "-DHAS_CODE=false" ] |
594 } | 656 } |
595 } | 657 } |
596 | 658 |
597 action("${target_name}__finalize") { | 659 finalize_apk("${target_name}__finalize") { |
598 script = "//build/android/gyp/finalize_apk.py" | 660 input_apk_path = _packaged_apk_path |
599 depfile = "$target_gen_dir/$target_name.d" | 661 output_apk_path = _final_apk_path |
662 keystore_path = invoker.keystore_path | |
663 keystore_name = invoker.keystore_name | |
664 keystore_password = invoker.keystore_password | |
665 rezip_apk = _load_library_from_apk | |
666 } | |
600 | 667 |
601 sources = [ | 668 _final_deps = [ ":${target_name}__finalize" ] |
602 _packaged_apk_path, | |
603 ] | |
604 inputs = [ | |
605 _keystore_path, | |
606 ] | |
607 outputs = [ | |
608 depfile, | |
609 _final_apk_path, | |
610 ] | |
611 | 669 |
612 args = [ | 670 if (_create_density_splits) { |
613 "--depfile", | 671 foreach(_density, _split_densities) { |
614 rebase_path(depfile, root_build_dir), | 672 finalize_apk("${target_name}__finalize_${_density}_split") { |
cjhopman
2015/05/20 01:51:51
nit: I'd extract this target name to a variable.
agrieve
2015/05/20 14:49:36
Done.
| |
615 "--zipalign-path", | 673 input_apk_path = "${_resource_packaged_apk_path}-${_density}" |
616 rebase_path(zipalign_path, root_build_dir), | 674 _output_paths = process_file_template( |
617 "--unsigned-apk-path", | 675 [ _final_apk_path ], |
618 rebase_path(_packaged_apk_path, root_build_dir), | 676 "{{source_dir}}/{{source_name_part}}-${_density}.apk") |
619 "--final-apk-path", | 677 output_apk_path = _output_paths[0] |
620 rebase_path(_final_apk_path, root_build_dir), | 678 keystore_path = invoker.keystore_path |
621 "--key-path", | 679 keystore_name = invoker.keystore_name |
622 rebase_path(_keystore_path, root_build_dir), | 680 keystore_password = invoker.keystore_password |
623 "--key-name", | 681 } |
624 _keystore_name, | 682 _final_deps += [ ":${target_name}__finalize_${_density}_split" ] |
625 "--key-passwd", | |
626 _keystore_password, | |
627 ] | |
628 if (_load_library_from_apk) { | |
629 _rezip_jar_path = "$root_build_dir/lib.java/rezip_apk.jar" | |
630 inputs += [ _rezip_jar_path ] | |
631 args += [ | |
632 "--load-library-from-zip-file=1", | |
633 "--rezip-apk-jar-path", | |
634 rebase_path(_rezip_jar_path, root_build_dir), | |
635 ] | |
636 } | 683 } |
637 } | 684 } |
638 | 685 |
639 group(target_name) { | 686 group(target_name) { |
640 deps = [ | 687 deps = _final_deps |
641 ":${target_name}__finalize", | |
642 ":${target_name}__package_resources", | |
643 ] | |
644 } | 688 } |
645 } | 689 } |
646 | 690 |
647 template("java_prebuilt_impl") { | 691 template("java_prebuilt_impl") { |
648 set_sources_assignment_filter([]) | 692 set_sources_assignment_filter([]) |
649 if (defined(invoker.testonly)) { | 693 if (defined(invoker.testonly)) { |
650 testonly = invoker.testonly | 694 testonly = invoker.testonly |
651 } | 695 } |
652 _supports_android = | 696 _supports_android = |
653 defined(invoker.supports_android) && invoker.supports_android | 697 defined(invoker.supports_android) && invoker.supports_android |
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1248 script = "//build/android/gyp/generate_split_manifest.py" | 1292 script = "//build/android/gyp/generate_split_manifest.py" |
1249 outputs = [ | 1293 outputs = [ |
1250 depfile, | 1294 depfile, |
1251 invoker.out_manifest, | 1295 invoker.out_manifest, |
1252 ] | 1296 ] |
1253 inputs = [ | 1297 inputs = [ |
1254 invoker.main_manifest, | 1298 invoker.main_manifest, |
1255 ] | 1299 ] |
1256 } | 1300 } |
1257 } | 1301 } |
OLD | NEW |