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

Side by Side Diff: build/config/android/internal_rules.gni

Issue 1338813003: GN: Side-load dex files as well as native code in incremental installs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix pylint warnings Created 5 years, 3 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/config/android/config.gni ('k') | build/config/android/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 # 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 import("//build/config/zip.gni") 6 import("//build/config/zip.gni")
7 import("//third_party/ijar/ijar.gni") 7 import("//third_party/ijar/ijar.gni")
8 8
9 assert(is_android) 9 assert(is_android)
10 10
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after
473 # deps: Specifies the dependencies of this target. 473 # deps: Specifies the dependencies of this target.
474 # dex_path: Path to classes.dex file to include (optional). 474 # dex_path: Path to classes.dex file to include (optional).
475 # resource_packaged_apk_path: Path to .ap_ to use. 475 # resource_packaged_apk_path: Path to .ap_ to use.
476 # output_apk_path: Output path for the generated .apk. 476 # output_apk_path: Output path for the generated .apk.
477 # native_libs_dir: Directory containing native libraries. 477 # native_libs_dir: Directory containing native libraries.
478 template("package_apk") { 478 template("package_apk") {
479 action(target_name) { 479 action(target_name) {
480 forward_variables_from(invoker, 480 forward_variables_from(invoker,
481 [ 481 [
482 "deps", 482 "deps",
483 "data_deps",
484 "public_deps", 483 "public_deps",
485 "testonly", 484 "testonly",
486 ]) 485 ])
487 script = "//build/android/gyp/ant.py" 486 script = "//build/android/gyp/ant.py"
488 _ant_script = "//build/android/ant/apk-package.xml" 487 _ant_script = "//build/android/ant/apk-package.xml"
489 488
490 depfile = "$target_gen_dir/$target_name.d" 489 depfile = "$target_gen_dir/$target_name.d"
490 data_deps = [ "//tools/android/md5sum" ] # Used when deploying APKs
491 491
492 inputs = [ 492 inputs = [
493 invoker.resource_packaged_apk_path, 493 invoker.resource_packaged_apk_path,
494 _ant_script, 494 _ant_script,
495 ] 495 ]
496 if (defined(invoker.dex_path)) { 496 if (defined(invoker.dex_path)) {
497 inputs += [ invoker.dex_path ] 497 inputs += [ invoker.dex_path ]
498 } 498 }
499 499
500 outputs = [ 500 outputs = [
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
609 _base_path = invoker.base_path 609 _base_path = invoker.base_path
610 _final_apk_path = invoker.apk_path 610 _final_apk_path = invoker.apk_path
611 _incremental_final_apk_path_helper = 611 _incremental_final_apk_path_helper =
612 process_file_template( 612 process_file_template(
613 [ _final_apk_path ], 613 [ _final_apk_path ],
614 "{{source_dir}}/{{source_name_part}}_incremental.apk") 614 "{{source_dir}}/{{source_name_part}}_incremental.apk")
615 _incremental_final_apk_path = _incremental_final_apk_path_helper[0] 615 _incremental_final_apk_path = _incremental_final_apk_path_helper[0]
616 616
617 if (defined(invoker.resources_zip)) { 617 if (defined(invoker.resources_zip)) {
618 _resources_zip = invoker.resources_zip 618 _resources_zip = invoker.resources_zip
619 assert(_resources_zip != "") # Mark as used.
619 } 620 }
620 if (defined(invoker.dex_path)) { 621 if (defined(invoker.dex_path)) {
621 _dex_path = invoker.dex_path 622 _dex_path = invoker.dex_path
622 } 623 }
623 _load_library_from_apk = invoker.load_library_from_apk 624 _load_library_from_apk = invoker.load_library_from_apk
624 625
625 _package_deps = [] 626 _deps = []
626 if (defined(invoker.deps)) { 627 if (defined(invoker.deps)) {
627 _package_deps = invoker.deps 628 _deps = invoker.deps
628 } 629 }
629 630
630 _native_libs_dir = "//build/android/empty/res" 631 _native_libs_dir = "//build/android/empty/res"
631 if (defined(invoker.native_libs_dir)) { 632 if (defined(invoker.native_libs_dir)) {
632 _native_libs_dir = invoker.native_libs_dir 633 _native_libs_dir = invoker.native_libs_dir
633 } 634 }
634 635
635 if (defined(invoker.asset_location)) { 636 if (defined(invoker.asset_location)) {
636 _asset_location = invoker.asset_location 637 _asset_location = invoker.asset_location
638 assert(_asset_location != "") # Mark as used.
637 } 639 }
638 640
639 _version_code = invoker.version_code 641 _version_code = invoker.version_code
640 _version_name = invoker.version_name 642 _version_name = invoker.version_name
643 assert(_version_code != -1) # Mark as used.
644 assert(_version_name != "") # Mark as used.
641 645
642 _base_apk_path = _base_path + ".apk_intermediates" 646 _base_apk_path = _base_path + ".apk_intermediates"
643 647
644 _resource_packaged_apk_path = _base_apk_path + ".ap_" 648 _resource_packaged_apk_path = _base_apk_path + ".ap_"
649 _incremental_resource_packaged_apk_path = _base_apk_path + "_incremental.ap_"
645 _packaged_apk_path = _base_apk_path + ".unfinished.apk" 650 _packaged_apk_path = _base_apk_path + ".unfinished.apk"
646 _incremental_packaged_apk_path = 651 _incremental_packaged_apk_path =
647 _base_apk_path + "_incremental.unfinished.apk" 652 _base_apk_path + "_incremental.unfinished.apk"
648 _shared_resources = 653 _shared_resources =
649 defined(invoker.shared_resources) && invoker.shared_resources 654 defined(invoker.shared_resources) && invoker.shared_resources
655 assert(_shared_resources || true) # Mark as used.
650 656
651 _keystore_path = invoker.keystore_path 657 _keystore_path = invoker.keystore_path
652 _keystore_name = invoker.keystore_name 658 _keystore_name = invoker.keystore_name
653 _keystore_password = invoker.keystore_password 659 _keystore_password = invoker.keystore_password
654 660
655 _split_densities = [] 661 _split_densities = []
656 if (defined(invoker.create_density_splits) && invoker.create_density_splits) { 662 if (defined(invoker.create_density_splits) && invoker.create_density_splits) {
657 _split_densities = [ 663 _split_densities = [
658 "hdpi", 664 "hdpi",
659 "xhdpi", 665 "xhdpi",
660 "xxhdpi", 666 "xxhdpi",
661 "xxxhdpi", 667 "xxxhdpi",
662 "tvdpi", 668 "tvdpi",
663 ] 669 ]
664 } 670 }
665 671
666 _split_languages = [] 672 _split_languages = []
667 if (defined(invoker.language_splits)) { 673 if (defined(invoker.language_splits)) {
668 _split_languages = invoker.language_splits 674 _split_languages = invoker.language_splits
669 } 675 }
670 676
677 template("package_resources_helper") {
678 action(target_name) {
679 deps = invoker.deps
jbudorick 2015/09/16 15:38:00 forward_variables_from?
agrieve 2015/09/16 15:50:47 In this case I want it to be an error if deps isn'
680
681 script = "//build/android/gyp/package_resources.py"
682 depfile = "${target_gen_dir}/${target_name}.d"
683 inputs = [
684 invoker.android_manifest,
685 ]
686 if (defined(_resources_zip)) {
687 inputs += [ _resources_zip ]
688 }
689 outputs = [
690 depfile,
691 invoker.resource_packaged_apk_path,
692 ]
693
694 args = [
695 "--depfile",
696 rebase_path(depfile, root_build_dir),
697 "--android-sdk",
698 rebased_android_sdk,
699 "--aapt-path",
700 android_aapt_path,
701 "--configuration-name=$android_configuration_name",
702 "--android-manifest",
703 rebase_path(invoker.android_manifest, root_build_dir),
704 "--version-code",
705 _version_code,
706 "--version-name",
707 _version_name,
708 "--apk-path",
709 rebase_path(invoker.resource_packaged_apk_path, root_build_dir),
710 ]
711
712 if (defined(_asset_location)) {
713 args += [
714 "--asset-dir",
715 rebase_path(_asset_location, root_build_dir),
716 ]
717 }
718 if (defined(_resources_zip)) {
719 args += [
720 "--resource-zips",
721 rebase_path(_resources_zip, root_build_dir),
722 ]
723 }
724 if (_shared_resources) {
725 args += [ "--shared-resources" ]
726 }
727 if (_split_densities != []) {
728 args += [ "--create-density-splits" ]
729 foreach(_density, _split_densities) {
730 outputs += [ "${invoker.resource_packaged_apk_path}_${_density}" ]
731 }
732 }
733 if (_split_languages != []) {
734 args += [ "--language-splits=$_split_languages" ]
735 foreach(_language, _split_languages) {
736 outputs += [ "${invoker.resource_packaged_apk_path}_${_language}" ]
737 }
738 }
739 if (defined(invoker.extensions_to_not_compress)) {
740 args += [
741 "--no-compress",
742 invoker.extensions_to_not_compress,
743 ]
744 }
745 }
746 }
747
671 _package_resources_target_name = "${target_name}__package_resources" 748 _package_resources_target_name = "${target_name}__package_resources"
672 action(_package_resources_target_name) { 749 package_resources_helper(_package_resources_target_name) {
673 deps = _package_deps 750 forward_variables_from(invoker, [ "extensions_to_not_compress" ])
751 deps = _deps
752 android_manifest = _android_manifest
753 resource_packaged_apk_path = _resource_packaged_apk_path
754 }
674 755
675 script = "//build/android/gyp/package_resources.py" 756 _generate_incremental_manifest_target_name =
757 "${target_name}_incremental_generate_manifest"
758 _incremental_android_manifest =
759 get_label_info(_generate_incremental_manifest_target_name,
760 "target_gen_dir") + "/AndroidManifest.xml"
761 action(_generate_incremental_manifest_target_name) {
762 deps = _deps
763 script = "//build/android/incremental_install/generate_android_manifest.py"
676 depfile = "${target_gen_dir}/${target_name}.d" 764 depfile = "${target_gen_dir}/${target_name}.d"
677 inputs = [ 765 inputs = [
678 _android_manifest, 766 _android_manifest,
679 ] 767 ]
680 if (defined(_resources_zip)) {
681 inputs += [ _resources_zip ]
682 }
683 outputs = [ 768 outputs = [
684 depfile, 769 depfile,
685 _resource_packaged_apk_path, 770 _incremental_android_manifest,
686 ] 771 ]
687 772
773 _rebased_src_manifest = rebase_path(_android_manifest, root_build_dir)
774 _rebased_incremental_manifest =
775 rebase_path(_incremental_android_manifest, root_build_dir)
688 args = [ 776 args = [
689 "--depfile", 777 "--src-manifest=$_rebased_src_manifest",
690 rebase_path(depfile, root_build_dir), 778 "--out-manifest=$_rebased_incremental_manifest",
691 "--android-sdk",
692 rebased_android_sdk,
693 "--aapt-path",
694 android_aapt_path,
695 "--configuration-name=$android_configuration_name",
696 "--android-manifest",
697 rebase_path(_android_manifest, root_build_dir),
698 "--version-code",
699 _version_code,
700 "--version-name",
701 _version_name,
702 "--apk-path",
703 rebase_path(_resource_packaged_apk_path, root_build_dir),
704 ] 779 ]
780 if (disable_incremental_isolated_processes) {
781 args += [ "--disable-isolated-processes" ]
782 }
783 }
705 784
706 if (defined(_asset_location)) { 785 _incremental_package_resources_target_name =
707 args += [ 786 "${target_name}_incremental__package_resources"
708 "--asset-dir", 787
709 rebase_path(_asset_location, root_build_dir), 788 # TODO(agrieve): See if we can speed up this step by swapping the manifest
710 ] 789 # from the result of the main package_resources step.
711 } 790 package_resources_helper(_incremental_package_resources_target_name) {
712 if (defined(_resources_zip)) { 791 forward_variables_from(invoker, [ "extensions_to_not_compress" ])
713 args += [ 792 deps = _deps + [ ":$_generate_incremental_manifest_target_name" ]
714 "--resource-zips", 793 android_manifest = _incremental_android_manifest
715 rebase_path(_resources_zip, root_build_dir), 794 resource_packaged_apk_path = _incremental_resource_packaged_apk_path
716 ]
717 }
718 if (_shared_resources) {
719 args += [ "--shared-resources" ]
720 }
721 if (_split_densities != []) {
722 args += [ "--create-density-splits" ]
723 foreach(_density, _split_densities) {
724 outputs += [ "${_resource_packaged_apk_path}_${_density}" ]
725 }
726 }
727 if (_split_languages != []) {
728 args += [ "--language-splits=$_split_languages" ]
729 foreach(_language, _split_languages) {
730 outputs += [ "${_resource_packaged_apk_path}_${_language}" ]
731 }
732 }
733 if (defined(invoker.extensions_to_not_compress)) {
734 args += [
735 "--no-compress",
736 invoker.extensions_to_not_compress,
737 ]
738 }
739 } 795 }
740 796
741 package_target = "${target_name}__package" 797 package_target = "${target_name}__package"
742 package_apk(package_target) { 798 package_apk(package_target) {
743 deps = [] 799 deps = _deps + [ ":${_package_resources_target_name}" ]
744 forward_variables_from(invoker, [ "deps" ])
745 deps += [ ":${_package_resources_target_name}" ]
746
747 data_deps = [ "//tools/android/md5sum" ] # Used when deploying APKs
748 800
749 if (defined(_dex_path)) { 801 if (defined(_dex_path)) {
750 dex_path = _dex_path 802 dex_path = _dex_path
751 } 803 }
752 native_libs_dir = _native_libs_dir 804 native_libs_dir = _native_libs_dir
753 output_apk_path = _packaged_apk_path 805 output_apk_path = _packaged_apk_path
754 resource_packaged_apk_path = _resource_packaged_apk_path 806 resource_packaged_apk_path = _resource_packaged_apk_path
755 } 807 }
756 808
757 _incremental_package_target = "${target_name}_incremental__package" 809 _incremental_package_target = "${target_name}_incremental__package"
758 package_apk(_incremental_package_target) { 810 package_apk(_incremental_package_target) {
759 deps = [] 811 _dex_target = "//build/android/incremental_install:bootstrap_java__dex"
760 forward_variables_from(invoker, [ "deps" ]) 812 deps = _deps + [
761 deps += [ ":${_package_resources_target_name}" ] 813 ":${_incremental_package_resources_target_name}",
814 _dex_target,
815 ]
762 816
763 # TODO(agrieve): Multidex
764 if (defined(_dex_path)) { 817 if (defined(_dex_path)) {
765 dex_path = _dex_path 818 dex_path =
819 get_label_info(_dex_target, "target_gen_dir") + "/bootstrap.dex"
766 } 820 }
767 821
768 # TODO(agrieve): Add a placeholder .so for http://crbug.com/384638 822 # TODO(agrieve): Add a placeholder .so for http://crbug.com/384638
769 native_libs_dir = "//build/android/empty/res" 823 native_libs_dir = "//build/android/empty/res"
770 output_apk_path = _incremental_packaged_apk_path 824 output_apk_path = _incremental_packaged_apk_path
771 resource_packaged_apk_path = _resource_packaged_apk_path 825 resource_packaged_apk_path = _incremental_resource_packaged_apk_path
772 } 826 }
773 827
774 _finalize_apk_rule_name = "${target_name}__finalize" 828 _finalize_apk_rule_name = "${target_name}__finalize"
775 finalize_apk(_finalize_apk_rule_name) { 829 finalize_apk(_finalize_apk_rule_name) {
776 input_apk_path = _packaged_apk_path 830 input_apk_path = _packaged_apk_path
777 output_apk_path = _final_apk_path 831 output_apk_path = _final_apk_path
778 keystore_path = _keystore_path 832 keystore_path = _keystore_path
779 keystore_name = _keystore_name 833 keystore_name = _keystore_name
780 keystore_password = _keystore_password 834 keystore_password = _keystore_password
781 rezip_apk = _load_library_from_apk 835 rezip_apk = _load_library_from_apk
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after
1589 ] 1643 ]
1590 args = [ 1644 args = [
1591 "--depfile", 1645 "--depfile",
1592 rebase_path(depfile, root_build_dir), 1646 rebase_path(depfile, root_build_dir),
1593 "--script-output-path", 1647 "--script-output-path",
1594 rebase_path(generated_script, root_build_dir), 1648 rebase_path(generated_script, root_build_dir),
1595 ] 1649 ]
1596 args += test_runner_args 1650 args += test_runner_args
1597 } 1651 }
1598 } 1652 }
OLDNEW
« no previous file with comments | « build/config/android/config.gni ('k') | build/config/android/rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698