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

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

Issue 1288023003: Create *_managed targets for android_apk()s (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix gn gen 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 | « no previous file | 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 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)
11 rebased_android_sdk_build_tools = 11 rebased_android_sdk_build_tools =
12 rebase_path(android_sdk_build_tools, root_build_dir) 12 rebase_path(android_sdk_build_tools, root_build_dir)
13 13
14 android_sdk_jar = "$android_sdk/android.jar" 14 android_sdk_jar = "$android_sdk/android.jar"
15 rebased_android_sdk_jar = rebase_path(android_sdk_jar, root_build_dir) 15 rebased_android_sdk_jar = rebase_path(android_sdk_jar, root_build_dir)
16 android_aapt_path = "$rebased_android_sdk_build_tools/aapt" 16 android_aapt_path = "$rebased_android_sdk_build_tools/aapt"
17 17
18 android_configuration_name = "Release"
19 if (is_debug) {
20 android_configuration_name = "Debug"
21 }
22
18 template("android_lint") { 23 template("android_lint") {
19 set_sources_assignment_filter([]) 24 set_sources_assignment_filter([])
20 25
21 jar_path = invoker.jar_path 26 jar_path = invoker.jar_path
22 android_manifest = invoker.android_manifest 27 android_manifest = invoker.android_manifest
23 java_files = invoker.java_files 28 java_files = invoker.java_files
24 base_path = "$target_gen_dir/$target_name" 29 base_path = "$target_gen_dir/$target_name"
25 30
26 action(target_name) { 31 action(target_name) {
27 forward_variables_from(invoker, 32 forward_variables_from(invoker,
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 465
461 group(target_name) { 466 group(target_name) {
462 forward_variables_from(invoker, [ "visibility" ]) 467 forward_variables_from(invoker, [ "visibility" ])
463 public_deps = [ 468 public_deps = [
464 ":${target_name}__jar_toc", 469 ":${target_name}__jar_toc",
465 ":$_output_jar_target", 470 ":$_output_jar_target",
466 ] 471 ]
467 } 472 }
468 } 473 }
469 474
470 template("finalize_apk") { 475 # Creates an unsigned .apk.
476 #
477 # Variables
478 # deps: Specifies the dependencies of this target.
479 # dex_path: Path to classes.dex file to include (optional).
480 # resource_packaged_apk_path: Path to .ap_ to use.
481 # output_apk_path: Output path for the generated .apk.
482 # native_libs_dir: Directory containing native libraries.
483 template("package_apk") {
471 action(target_name) { 484 action(target_name) {
472 forward_variables_from(invoker, 485 forward_variables_from(invoker,
473 [ 486 [
487 "deps",
474 "data_deps", 488 "data_deps",
475 "deps",
476 "public_deps", 489 "public_deps",
477 "testonly", 490 "testonly",
478 ]) 491 ])
492 script = "//build/android/gyp/ant.py"
493 _ant_script = "//build/android/ant/apk-package.xml"
494
495 depfile = "$target_gen_dir/$target_name.d"
496
497 inputs = [
498 invoker.resource_packaged_apk_path,
499 _ant_script,
500 ]
501 if (defined(invoker.dex_path)) {
502 inputs += [ invoker.dex_path ]
503 }
504
505 outputs = [
506 depfile,
507 invoker.output_apk_path,
508 ]
509
510 _rebased_emma_jar = ""
511 _rebased_resource_packaged_apk_path =
512 rebase_path(invoker.resource_packaged_apk_path, root_build_dir)
513 _rebased_packaged_apk_path =
514 rebase_path(invoker.output_apk_path, root_build_dir)
515 _rebased_native_libs_dir =
516 rebase_path(invoker.native_libs_dir, root_build_dir)
517 args = [
518 "--depfile",
519 rebase_path(depfile, root_build_dir),
520 "--",
521 "-quiet",
522 "-DANDROID_SDK_ROOT=$rebased_android_sdk_root",
523 "-DANDROID_SDK_TOOLS=$rebased_android_sdk_build_tools",
524 "-DRESOURCE_PACKAGED_APK_NAME=$_rebased_resource_packaged_apk_path",
525 "-DCONFIGURATION_NAME=$android_configuration_name",
526 "-DNATIVE_LIBS_DIR=$_rebased_native_libs_dir",
527 "-DOUT_DIR=",
528 "-DUNSIGNED_APK_PATH=$_rebased_packaged_apk_path",
529 "-DEMMA_INSTRUMENT=0",
530 "-DEMMA_DEVICE_JAR=$_rebased_emma_jar",
531 "-Dbasedir=.",
532 "-buildfile",
533 rebase_path(_ant_script, root_build_dir),
534 ]
535 if (defined(invoker.dex_path)) {
536 _rebased_dex_path = rebase_path(invoker.dex_path, root_build_dir)
537 args += [
538 "-DDEX_FILE_PATH=$_rebased_dex_path",
539 "-DHAS_CODE=true",
540 ]
541 } else {
542 args += [ "-DHAS_CODE=false" ]
543 }
544 }
545 }
546
547 # Signs & zipaligns an apk.
548 #
549 # Variables
550 # input_apk_path: Path of the .apk to be finalized.
551 # output_apk_path: Output path for the generated .apk.
552 # keystore_path: Path to keystore to use for signing.
553 # keystore_name: Key alias to use.
554 # keystore_password: Keystore password.
555 # rezip_apk: Whether to add crazy-linker alignment.
556 template("finalize_apk") {
557 action(target_name) {
479 script = "//build/android/gyp/finalize_apk.py" 558 script = "//build/android/gyp/finalize_apk.py"
480 depfile = "$target_gen_dir/$target_name.d" 559 depfile = "$target_gen_dir/$target_name.d"
560 forward_variables_from(invoker,
561 [
562 "deps",
563 "data_deps",
564 "public_deps",
565 "testonly",
566 ])
481 567
482 sources = [ 568 sources = [
483 invoker.input_apk_path, 569 invoker.input_apk_path,
484 ] 570 ]
485 inputs = [ 571 inputs = [
486 invoker.keystore_path, 572 invoker.keystore_path,
487 ] 573 ]
488 outputs = [ 574 outputs = [
489 depfile, 575 depfile,
490 invoker.output_apk_path, 576 invoker.output_apk_path,
(...skipping 29 matching lines...) Expand all
520 606
521 # Packages resources, assets, dex, and native libraries into an apk. Signs and 607 # Packages resources, assets, dex, and native libraries into an apk. Signs and
522 # zipaligns the apk. 608 # zipaligns the apk.
523 template("create_apk") { 609 template("create_apk") {
524 set_sources_assignment_filter([]) 610 set_sources_assignment_filter([])
525 forward_variables_from(invoker, [ "testonly" ]) 611 forward_variables_from(invoker, [ "testonly" ])
526 612
527 _android_manifest = invoker.android_manifest 613 _android_manifest = invoker.android_manifest
528 _base_path = invoker.base_path 614 _base_path = invoker.base_path
529 _final_apk_path = invoker.apk_path 615 _final_apk_path = invoker.apk_path
616 _incremental_final_apk_path_helper =
617 process_file_template(
618 [ _final_apk_path ],
619 "{{source_dir}}/{{source_name_part}}_incremental.apk")
620 _incremental_final_apk_path = _incremental_final_apk_path_helper[0]
530 621
531 if (defined(invoker.resources_zip)) { 622 if (defined(invoker.resources_zip)) {
532 _resources_zip = invoker.resources_zip 623 _resources_zip = invoker.resources_zip
533 } 624 }
534 if (defined(invoker.dex_path)) { 625 if (defined(invoker.dex_path)) {
535 _dex_path = invoker.dex_path 626 _dex_path = invoker.dex_path
536 } 627 }
537 _load_library_from_apk = invoker.load_library_from_apk 628 _load_library_from_apk = invoker.load_library_from_apk
538 629
539 _package_deps = [] 630 _package_deps = []
(...skipping 10 matching lines...) Expand all
550 _asset_location = invoker.asset_location 641 _asset_location = invoker.asset_location
551 } 642 }
552 643
553 _version_code = invoker.version_code 644 _version_code = invoker.version_code
554 _version_name = invoker.version_name 645 _version_name = invoker.version_name
555 646
556 _base_apk_path = _base_path + ".apk_intermediates" 647 _base_apk_path = _base_path + ".apk_intermediates"
557 648
558 _resource_packaged_apk_path = _base_apk_path + ".ap_" 649 _resource_packaged_apk_path = _base_apk_path + ".ap_"
559 _packaged_apk_path = _base_apk_path + ".unfinished.apk" 650 _packaged_apk_path = _base_apk_path + ".unfinished.apk"
651 _incremental_packaged_apk_path =
652 _base_apk_path + "_incremental.unfinished.apk"
560 _shared_resources = 653 _shared_resources =
561 defined(invoker.shared_resources) && invoker.shared_resources 654 defined(invoker.shared_resources) && invoker.shared_resources
562 655
563 _configuration_name = "Release"
564 if (is_debug) {
565 _configuration_name = "Debug"
566 }
567
568 _keystore_path = invoker.keystore_path 656 _keystore_path = invoker.keystore_path
569 _keystore_name = invoker.keystore_name 657 _keystore_name = invoker.keystore_name
570 _keystore_password = invoker.keystore_password 658 _keystore_password = invoker.keystore_password
571 659
572 _split_densities = [] 660 _split_densities = []
573 if (defined(invoker.create_density_splits) && invoker.create_density_splits) { 661 if (defined(invoker.create_density_splits) && invoker.create_density_splits) {
574 _split_densities = [ 662 _split_densities = [
575 "hdpi", 663 "hdpi",
576 "xhdpi", 664 "xhdpi",
577 "xxhdpi", 665 "xxhdpi",
(...skipping 24 matching lines...) Expand all
602 _resource_packaged_apk_path, 690 _resource_packaged_apk_path,
603 ] 691 ]
604 692
605 args = [ 693 args = [
606 "--depfile", 694 "--depfile",
607 rebase_path(depfile, root_build_dir), 695 rebase_path(depfile, root_build_dir),
608 "--android-sdk", 696 "--android-sdk",
609 rebased_android_sdk, 697 rebased_android_sdk,
610 "--aapt-path", 698 "--aapt-path",
611 android_aapt_path, 699 android_aapt_path,
612 "--configuration-name=$_configuration_name", 700 "--configuration-name=$android_configuration_name",
613 "--android-manifest", 701 "--android-manifest",
614 rebase_path(_android_manifest, root_build_dir), 702 rebase_path(_android_manifest, root_build_dir),
615 "--version-code", 703 "--version-code",
616 _version_code, 704 _version_code,
617 "--version-name", 705 "--version-name",
618 _version_name, 706 _version_name,
619 "--apk-path", 707 "--apk-path",
620 rebase_path(_resource_packaged_apk_path, root_build_dir), 708 rebase_path(_resource_packaged_apk_path, root_build_dir),
621 ] 709 ]
622 710
(...skipping 26 matching lines...) Expand all
649 } 737 }
650 if (defined(invoker.extensions_to_not_compress)) { 738 if (defined(invoker.extensions_to_not_compress)) {
651 args += [ 739 args += [
652 "--no-compress", 740 "--no-compress",
653 invoker.extensions_to_not_compress, 741 invoker.extensions_to_not_compress,
654 ] 742 ]
655 } 743 }
656 } 744 }
657 745
658 package_target = "${target_name}__package" 746 package_target = "${target_name}__package"
659 action(package_target) { 747 package_apk(package_target) {
660 script = "//build/android/gyp/ant.py" 748 deps = []
661 _ant_script = "//build/android/ant/apk-package.xml" 749 forward_variables_from(invoker, [ "deps" ])
750 deps += [ ":${_package_resources_target_name}" ]
662 751
663 deps = [ 752 if (defined(_dex_path)) {
664 ":${_package_resources_target_name}", 753 dex_path = _dex_path
665 ]
666 if (defined(invoker.deps)) {
667 deps += invoker.deps
668 } 754 }
669 depfile = "$target_gen_dir/$target_name.d" 755 native_libs_dir = _native_libs_dir
756 output_apk_path = _packaged_apk_path
757 resource_packaged_apk_path = _resource_packaged_apk_path
758 }
670 759
671 inputs = [ 760 _incremental_package_target = "${target_name}_incremental__package"
672 _resource_packaged_apk_path, 761 package_apk(_incremental_package_target) {
673 _ant_script, 762 deps = []
674 ] 763 forward_variables_from(invoker, [ "deps" ])
764 deps += [ ":${_package_resources_target_name}" ]
765
766 # TODO(agrieve): Multidex
675 if (defined(_dex_path)) { 767 if (defined(_dex_path)) {
676 inputs += [ _dex_path ] 768 dex_path = _dex_path
677 } 769 }
678 770
679 outputs = [ 771 # TODO(agrieve): Add a placeholder .so for http://crbug.com/384638
680 depfile, 772 native_libs_dir = "//build/android/empty/res"
681 _packaged_apk_path, 773 output_apk_path = _incremental_packaged_apk_path
682 ] 774 resource_packaged_apk_path = _resource_packaged_apk_path
683
684 _rebased_emma_jar = ""
685 _rebased_resource_packaged_apk_path =
686 rebase_path(_resource_packaged_apk_path, root_build_dir)
687 _rebased_packaged_apk_path = rebase_path(_packaged_apk_path, root_build_dir)
688 _rebased_native_libs_dir = rebase_path(_native_libs_dir, root_build_dir)
689 args = [
690 "--depfile",
691 rebase_path(depfile, root_build_dir),
692 "--",
693 "-quiet",
694 "-DANDROID_SDK_ROOT=$rebased_android_sdk_root",
695 "-DANDROID_SDK_TOOLS=$rebased_android_sdk_build_tools",
696 "-DRESOURCE_PACKAGED_APK_NAME=$_rebased_resource_packaged_apk_path",
697 "-DCONFIGURATION_NAME=$_configuration_name",
698 "-DNATIVE_LIBS_DIR=$_rebased_native_libs_dir",
699 "-DOUT_DIR=",
700 "-DUNSIGNED_APK_PATH=$_rebased_packaged_apk_path",
701 "-DEMMA_INSTRUMENT=0",
702 "-DEMMA_DEVICE_JAR=$_rebased_emma_jar",
703 "-Dbasedir=.",
704 "-buildfile",
705 rebase_path(_ant_script, root_build_dir),
706 ]
707 if (defined(_dex_path)) {
708 _rebased_dex_path = rebase_path(_dex_path, root_build_dir)
709 args += [
710 "-DDEX_FILE_PATH=$_rebased_dex_path",
711 "-DHAS_CODE=true",
712 ]
713 } else {
714 args += [ "-DHAS_CODE=false" ]
715 }
716 } 775 }
717 776
718 _finalize_apk_rule_name = "${target_name}__finalize" 777 _finalize_apk_rule_name = "${target_name}__finalize"
719 finalize_apk(_finalize_apk_rule_name) { 778 finalize_apk(_finalize_apk_rule_name) {
720 input_apk_path = _packaged_apk_path 779 input_apk_path = _packaged_apk_path
721 output_apk_path = _final_apk_path 780 output_apk_path = _final_apk_path
722 keystore_path = _keystore_path 781 keystore_path = _keystore_path
723 keystore_name = _keystore_name 782 keystore_name = _keystore_name
724 keystore_password = _keystore_password 783 keystore_password = _keystore_password
725 rezip_apk = _load_library_from_apk 784 rezip_apk = _load_library_from_apk
726 785
727 public_deps = [ 786 public_deps = [
728 # Generator of the _packaged_apk_path this target takes as input. 787 # Generator of the _packaged_apk_path this target takes as input.
729 ":$package_target", 788 ":$package_target",
730 ] 789 ]
731 } 790 }
732 791
733 _final_deps = [ ":${_finalize_apk_rule_name}" ] 792 _incremental_finalize_apk_rule_name = "${target_name}_incremental__finalize"
793 finalize_apk(_incremental_finalize_apk_rule_name) {
794 input_apk_path = _incremental_packaged_apk_path
795 output_apk_path = _incremental_final_apk_path
796 keystore_path = _keystore_path
797 keystore_name = _keystore_name
798 keystore_password = _keystore_password
799
800 public_deps = [
801 ":$_incremental_package_target",
802 ]
803 }
804
805 _split_deps = []
734 806
735 template("finalize_split") { 807 template("finalize_split") {
736 finalize_apk(target_name) { 808 finalize_apk(target_name) {
737 _config = invoker.split_config 809 _config = invoker.split_config
738 _type = invoker.split_type 810 _type = invoker.split_type
739 input_apk_path = "${_resource_packaged_apk_path}_${_config}" 811 input_apk_path = "${_resource_packaged_apk_path}_${_config}"
740 _output_paths = process_file_template( 812 _output_paths = process_file_template(
741 [ _final_apk_path ], 813 [ _final_apk_path ],
742 "{{source_dir}}/{{source_name_part}}-${_type}-${_config}.apk") 814 "{{source_dir}}/{{source_name_part}}-${_type}-${_config}.apk")
743 output_apk_path = _output_paths[0] 815 output_apk_path = _output_paths[0]
744 keystore_path = _keystore_path 816 keystore_path = _keystore_path
745 keystore_name = _keystore_name 817 keystore_name = _keystore_name
746 keystore_password = _keystore_password 818 keystore_password = _keystore_password
747 deps = [ 819 deps = [
748 ":${_package_resources_target_name}", 820 ":${_package_resources_target_name}",
749 ] 821 ]
750 } 822 }
751 } 823 }
752 824
753 foreach(_split, _split_densities) { 825 foreach(_split, _split_densities) {
754 _split_rule = "${target_name}__finalize_${_split}_split" 826 _split_rule = "${target_name}__finalize_${_split}_split"
755 finalize_split(_split_rule) { 827 finalize_split(_split_rule) {
756 split_type = "density" 828 split_type = "density"
757 split_config = _split 829 split_config = _split
758 } 830 }
759 _final_deps += [ ":$_split_rule" ] 831 _split_deps += [ ":$_split_rule" ]
760 } 832 }
761 foreach(_split, _split_languages) { 833 foreach(_split, _split_languages) {
762 _split_rule = "${target_name}__finalize_${_split}_split" 834 _split_rule = "${target_name}__finalize_${_split}_split"
763 finalize_split(_split_rule) { 835 finalize_split(_split_rule) {
764 split_type = "lang" 836 split_type = "lang"
765 split_config = _split 837 split_config = _split
766 } 838 }
767 _final_deps += [ ":$_split_rule" ] 839 _split_deps += [ ":$_split_rule" ]
768 } 840 }
769 841
770 group(target_name) { 842 group(target_name) {
771 public_deps = _final_deps 843 public_deps = [ ":${_finalize_apk_rule_name}" ] + _split_deps
844 }
845 group("${target_name}_incremental") {
846 public_deps = [ ":${_incremental_finalize_apk_rule_name}" ] + _split_deps
772 } 847 }
773 } 848 }
774 849
775 template("java_prebuilt_impl") { 850 template("java_prebuilt_impl") {
776 set_sources_assignment_filter([]) 851 set_sources_assignment_filter([])
777 forward_variables_from(invoker, [ "testonly" ]) 852 forward_variables_from(invoker, [ "testonly" ])
778 _supports_android = 853 _supports_android =
779 defined(invoker.supports_android) && invoker.supports_android 854 defined(invoker.supports_android) && invoker.supports_android
780 855
781 assert(defined(invoker.jar_path)) 856 assert(defined(invoker.jar_path))
(...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 ] 1577 ]
1503 args = [ 1578 args = [
1504 "--depfile", 1579 "--depfile",
1505 rebase_path(depfile, root_build_dir), 1580 rebase_path(depfile, root_build_dir),
1506 "--script-output-path", 1581 "--script-output-path",
1507 rebase_path(generated_script, root_build_dir), 1582 rebase_path(generated_script, root_build_dir),
1508 ] 1583 ]
1509 args += test_runner_args 1584 args += test_runner_args
1510 } 1585 }
1511 } 1586 }
OLDNEW
« no previous file with comments | « no previous file | build/config/android/rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698