Chromium Code Reviews

Unified Diff: build/config/android/internal_rules.gni

Issue 1192453002: Add build rules to enable language-based split apks on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@load-from-apk-pak
Patch Set: rebase Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
« no previous file with comments | « build/android/package_resources_action.gypi ('k') | build/config/android/rules.gni » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/android/internal_rules.gni
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
index 091ee4ac2ebc7051e855c45ecba0a2fb7392d1f3..26636fea7f210e6bf4c10d465047e14c778c71ca 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -611,9 +611,12 @@ template("create_apk") {
_configuration_name = "Debug"
}
- _create_density_splits =
- defined(invoker.create_density_splits) && invoker.create_density_splits
- if (_create_density_splits) {
+ _keystore_path = invoker.keystore_path
+ _keystore_name = invoker.keystore_name
+ _keystore_password = invoker.keystore_password
+
+ _split_densities = []
+ if (defined(invoker.create_density_splits) && invoker.create_density_splits) {
_split_densities = [
"hdpi",
"xhdpi",
@@ -623,6 +626,11 @@ template("create_apk") {
]
}
+ _split_languages = []
+ if (defined(invoker.language_splits)) {
+ _split_languages = invoker.language_splits
+ }
+
_package_resources_target_name = "${target_name}__package_resources"
action(_package_resources_target_name) {
deps = _package_deps
@@ -673,10 +681,16 @@ template("create_apk") {
if (_shared_resources) {
args += [ "--shared-resources" ]
}
- if (_create_density_splits) {
+ if (_split_densities != []) {
args += [ "--create-density-splits" ]
foreach(_density, _split_densities) {
- outputs += [ "${_resource_packaged_apk_path}-${_density}" ]
+ outputs += [ "${_resource_packaged_apk_path}_${_density}" ]
+ }
+ }
+ if (_split_languages != []) {
+ args += [ "--language-splits=$_split_languages" ]
+ foreach(_language, _split_languages) {
+ outputs += [ "${_resource_packaged_apk_path}_${_language}" ]
}
}
if (defined(invoker.extensions_to_not_compress)) {
@@ -751,9 +765,9 @@ template("create_apk") {
finalize_apk(_finalize_apk_rule_name) {
input_apk_path = _packaged_apk_path
output_apk_path = _final_apk_path
- keystore_path = invoker.keystore_path
- keystore_name = invoker.keystore_name
- keystore_password = invoker.keystore_password
+ keystore_path = _keystore_path
+ keystore_name = _keystore_name
+ keystore_password = _keystore_password
rezip_apk = _load_library_from_apk
public_deps = [
@@ -764,21 +778,36 @@ template("create_apk") {
_final_deps = [ ":${_finalize_apk_rule_name}" ]
- if (_create_density_splits) {
- foreach(_density, _split_densities) {
- _finalize_split_rule_name = "${target_name}__finalize_${_density}_split"
- finalize_apk(_finalize_split_rule_name) {
- input_apk_path = "${_resource_packaged_apk_path}-${_density}"
- _output_paths = process_file_template(
- [ _final_apk_path ],
- "{{source_dir}}/{{source_name_part}}-${_density}.apk")
- output_apk_path = _output_paths[0]
- keystore_path = invoker.keystore_path
- keystore_name = invoker.keystore_name
- keystore_password = invoker.keystore_password
- }
- _final_deps += [ ":${_finalize_split_rule_name}" ]
+ template("finalize_split") {
+ finalize_apk(target_name) {
+ _config = invoker.split_config
+ _type = invoker.split_type
+ input_apk_path = "${_resource_packaged_apk_path}_${_config}"
+ _output_paths = process_file_template(
+ [ _final_apk_path ],
+ "{{source_dir}}/{{source_name_part}}-${_type}-${_config}.apk")
+ output_apk_path = _output_paths[0]
+ keystore_path = _keystore_path
+ keystore_name = _keystore_name
+ keystore_password = _keystore_password
+ }
+ }
+
+ foreach(_split, _split_densities) {
+ _split_rule = "${target_name}__finalize_${_split}_split"
+ finalize_split(_split_rule) {
+ split_type = "density"
+ split_config = _split
+ }
+ _final_deps += [ ":$_split_rule" ]
+ }
+ foreach(_split, _split_languages) {
+ _split_rule = "${target_name}__finalize_${_split}_split"
+ finalize_split(_split_rule) {
+ split_type = "lang"
+ split_config = _split
}
+ _final_deps += [ ":$_split_rule" ]
}
group(target_name) {
« 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