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

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

Issue 1133603004: Add create_density_splits option to java_apk.gypi / android_apk (gn) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@split-abi
Patch Set: removed TELEMETRY_DEPS change Created 5 years, 7 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/android/package_resources_action.gypi ('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 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
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
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
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
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 }
OLDNEW
« no previous file with comments | « build/android/package_resources_action.gypi ('k') | build/config/android/rules.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698