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=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_rule_name = "${target_name}__finalize" |
598 script = "//build/android/gyp/finalize_apk.py" | 660 finalize_apk(_finalize_apk_rule_name) { |
599 depfile = "$target_gen_dir/$target_name.d" | 661 input_apk_path = _packaged_apk_path |
| 662 output_apk_path = _final_apk_path |
| 663 keystore_path = invoker.keystore_path |
| 664 keystore_name = invoker.keystore_name |
| 665 keystore_password = invoker.keystore_password |
| 666 rezip_apk = _load_library_from_apk |
| 667 } |
600 | 668 |
601 sources = [ | 669 _final_deps = [ ":${_finalize_apk_rule_name}" ] |
602 _packaged_apk_path, | |
603 ] | |
604 inputs = [ | |
605 _keystore_path, | |
606 ] | |
607 outputs = [ | |
608 depfile, | |
609 _final_apk_path, | |
610 ] | |
611 | 670 |
612 args = [ | 671 if (_create_density_splits) { |
613 "--depfile", | 672 foreach(_density, _split_densities) { |
614 rebase_path(depfile, root_build_dir), | 673 _finalize_split_rule_name = "${target_name}__finalize_${_density}_split" |
615 "--zipalign-path", | 674 finalize_apk(_finalize_split_rule_name) { |
616 rebase_path(zipalign_path, root_build_dir), | 675 input_apk_path = "${_resource_packaged_apk_path}-${_density}" |
617 "--unsigned-apk-path", | 676 _output_paths = process_file_template( |
618 rebase_path(_packaged_apk_path, root_build_dir), | 677 [ _final_apk_path ], |
619 "--final-apk-path", | 678 "{{source_dir}}/{{source_name_part}}-${_density}.apk") |
620 rebase_path(_final_apk_path, root_build_dir), | 679 output_apk_path = _output_paths[0] |
621 "--key-path", | 680 keystore_path = invoker.keystore_path |
622 rebase_path(_keystore_path, root_build_dir), | 681 keystore_name = invoker.keystore_name |
623 "--key-name", | 682 keystore_password = invoker.keystore_password |
624 _keystore_name, | 683 } |
625 "--key-passwd", | 684 _final_deps += [ ":${_finalize_split_rule_name}" ] |
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=1", | |
633 "--rezip-apk-jar-path", | |
634 rebase_path(_rezip_jar_path, root_build_dir), | |
635 ] | |
636 } | 685 } |
637 } | 686 } |
638 | 687 |
639 group(target_name) { | 688 group(target_name) { |
640 deps = [ | 689 deps = _final_deps |
641 ":${target_name}__finalize", | |
642 ":${target_name}__package_resources", | |
643 ] | |
644 } | 690 } |
645 } | 691 } |
646 | 692 |
647 template("java_prebuilt_impl") { | 693 template("java_prebuilt_impl") { |
648 set_sources_assignment_filter([]) | 694 set_sources_assignment_filter([]) |
649 if (defined(invoker.testonly)) { | 695 if (defined(invoker.testonly)) { |
650 testonly = invoker.testonly | 696 testonly = invoker.testonly |
651 } | 697 } |
652 _supports_android = | 698 _supports_android = |
653 defined(invoker.supports_android) && invoker.supports_android | 699 defined(invoker.supports_android) && invoker.supports_android |
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1244 script = "//build/android/gyp/generate_split_manifest.py" | 1290 script = "//build/android/gyp/generate_split_manifest.py" |
1245 outputs = [ | 1291 outputs = [ |
1246 depfile, | 1292 depfile, |
1247 invoker.out_manifest, | 1293 invoker.out_manifest, |
1248 ] | 1294 ] |
1249 inputs = [ | 1295 inputs = [ |
1250 invoker.main_manifest, | 1296 invoker.main_manifest, |
1251 ] | 1297 ] |
1252 } | 1298 } |
1253 } | 1299 } |
OLD | NEW |