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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « build/config/android/config.gni ('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 8e2cb0f825f3348fd80295e04123cd16675b0b37..0fb0ff907eb14c1f74b9ceee689da31483cb1257 100644
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -480,7 +480,6 @@ template("package_apk") {
forward_variables_from(invoker,
[
"deps",
- "data_deps",
"public_deps",
"testonly",
])
@@ -488,6 +487,7 @@ template("package_apk") {
_ant_script = "//build/android/ant/apk-package.xml"
depfile = "$target_gen_dir/$target_name.d"
+ data_deps = [ "//tools/android/md5sum" ] # Used when deploying APKs
inputs = [
invoker.resource_packaged_apk_path,
@@ -616,15 +616,16 @@ template("create_apk") {
if (defined(invoker.resources_zip)) {
_resources_zip = invoker.resources_zip
+ assert(_resources_zip != "") # Mark as used.
}
if (defined(invoker.dex_path)) {
_dex_path = invoker.dex_path
}
_load_library_from_apk = invoker.load_library_from_apk
- _package_deps = []
+ _deps = []
if (defined(invoker.deps)) {
- _package_deps = invoker.deps
+ _deps = invoker.deps
}
_native_libs_dir = "//build/android/empty/res"
@@ -634,19 +635,24 @@ template("create_apk") {
if (defined(invoker.asset_location)) {
_asset_location = invoker.asset_location
+ assert(_asset_location != "") # Mark as used.
}
_version_code = invoker.version_code
_version_name = invoker.version_name
+ assert(_version_code != -1) # Mark as used.
+ assert(_version_name != "") # Mark as used.
_base_apk_path = _base_path + ".apk_intermediates"
_resource_packaged_apk_path = _base_apk_path + ".ap_"
+ _incremental_resource_packaged_apk_path = _base_apk_path + "_incremental.ap_"
_packaged_apk_path = _base_apk_path + ".unfinished.apk"
_incremental_packaged_apk_path =
_base_apk_path + "_incremental.unfinished.apk"
_shared_resources =
defined(invoker.shared_resources) && invoker.shared_resources
+ assert(_shared_resources || true) # Mark as used.
_keystore_path = invoker.keystore_path
_keystore_name = invoker.keystore_name
@@ -668,83 +674,129 @@ template("create_apk") {
_split_languages = invoker.language_splits
}
+ template("package_resources_helper") {
+ action(target_name) {
+ 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'
+
+ script = "//build/android/gyp/package_resources.py"
+ depfile = "${target_gen_dir}/${target_name}.d"
+ inputs = [
+ invoker.android_manifest,
+ ]
+ if (defined(_resources_zip)) {
+ inputs += [ _resources_zip ]
+ }
+ outputs = [
+ depfile,
+ invoker.resource_packaged_apk_path,
+ ]
+
+ args = [
+ "--depfile",
+ rebase_path(depfile, root_build_dir),
+ "--android-sdk",
+ rebased_android_sdk,
+ "--aapt-path",
+ android_aapt_path,
+ "--configuration-name=$android_configuration_name",
+ "--android-manifest",
+ rebase_path(invoker.android_manifest, root_build_dir),
+ "--version-code",
+ _version_code,
+ "--version-name",
+ _version_name,
+ "--apk-path",
+ rebase_path(invoker.resource_packaged_apk_path, root_build_dir),
+ ]
+
+ if (defined(_asset_location)) {
+ args += [
+ "--asset-dir",
+ rebase_path(_asset_location, root_build_dir),
+ ]
+ }
+ if (defined(_resources_zip)) {
+ args += [
+ "--resource-zips",
+ rebase_path(_resources_zip, root_build_dir),
+ ]
+ }
+ if (_shared_resources) {
+ args += [ "--shared-resources" ]
+ }
+ if (_split_densities != []) {
+ args += [ "--create-density-splits" ]
+ foreach(_density, _split_densities) {
+ outputs += [ "${invoker.resource_packaged_apk_path}_${_density}" ]
+ }
+ }
+ if (_split_languages != []) {
+ args += [ "--language-splits=$_split_languages" ]
+ foreach(_language, _split_languages) {
+ outputs += [ "${invoker.resource_packaged_apk_path}_${_language}" ]
+ }
+ }
+ if (defined(invoker.extensions_to_not_compress)) {
+ args += [
+ "--no-compress",
+ invoker.extensions_to_not_compress,
+ ]
+ }
+ }
+ }
+
_package_resources_target_name = "${target_name}__package_resources"
- action(_package_resources_target_name) {
- deps = _package_deps
+ package_resources_helper(_package_resources_target_name) {
+ forward_variables_from(invoker, [ "extensions_to_not_compress" ])
+ deps = _deps
+ android_manifest = _android_manifest
+ resource_packaged_apk_path = _resource_packaged_apk_path
+ }
- script = "//build/android/gyp/package_resources.py"
+ _generate_incremental_manifest_target_name =
+ "${target_name}_incremental_generate_manifest"
+ _incremental_android_manifest =
+ get_label_info(_generate_incremental_manifest_target_name,
+ "target_gen_dir") + "/AndroidManifest.xml"
+ action(_generate_incremental_manifest_target_name) {
+ deps = _deps
+ script = "//build/android/incremental_install/generate_android_manifest.py"
depfile = "${target_gen_dir}/${target_name}.d"
inputs = [
_android_manifest,
]
- if (defined(_resources_zip)) {
- inputs += [ _resources_zip ]
- }
outputs = [
depfile,
- _resource_packaged_apk_path,
+ _incremental_android_manifest,
]
+ _rebased_src_manifest = rebase_path(_android_manifest, root_build_dir)
+ _rebased_incremental_manifest =
+ rebase_path(_incremental_android_manifest, root_build_dir)
args = [
- "--depfile",
- rebase_path(depfile, root_build_dir),
- "--android-sdk",
- rebased_android_sdk,
- "--aapt-path",
- android_aapt_path,
- "--configuration-name=$android_configuration_name",
- "--android-manifest",
- rebase_path(_android_manifest, root_build_dir),
- "--version-code",
- _version_code,
- "--version-name",
- _version_name,
- "--apk-path",
- rebase_path(_resource_packaged_apk_path, root_build_dir),
+ "--src-manifest=$_rebased_src_manifest",
+ "--out-manifest=$_rebased_incremental_manifest",
]
-
- if (defined(_asset_location)) {
- args += [
- "--asset-dir",
- rebase_path(_asset_location, root_build_dir),
- ]
- }
- if (defined(_resources_zip)) {
- args += [
- "--resource-zips",
- rebase_path(_resources_zip, root_build_dir),
- ]
- }
- if (_shared_resources) {
- args += [ "--shared-resources" ]
- }
- if (_split_densities != []) {
- args += [ "--create-density-splits" ]
- foreach(_density, _split_densities) {
- 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)) {
- args += [
- "--no-compress",
- invoker.extensions_to_not_compress,
- ]
+ if (disable_incremental_isolated_processes) {
+ args += [ "--disable-isolated-processes" ]
}
}
+ _incremental_package_resources_target_name =
+ "${target_name}_incremental__package_resources"
+
+ # TODO(agrieve): See if we can speed up this step by swapping the manifest
+ # from the result of the main package_resources step.
+ package_resources_helper(_incremental_package_resources_target_name) {
+ forward_variables_from(invoker, [ "extensions_to_not_compress" ])
+ deps = _deps + [ ":$_generate_incremental_manifest_target_name" ]
+ android_manifest = _incremental_android_manifest
+ resource_packaged_apk_path = _incremental_resource_packaged_apk_path
+ }
+
package_target = "${target_name}__package"
package_apk(package_target) {
- deps = []
- forward_variables_from(invoker, [ "deps" ])
- deps += [ ":${_package_resources_target_name}" ]
-
- data_deps = [ "//tools/android/md5sum" ] # Used when deploying APKs
+ deps = _deps + [ ":${_package_resources_target_name}" ]
if (defined(_dex_path)) {
dex_path = _dex_path
@@ -756,19 +808,21 @@ template("create_apk") {
_incremental_package_target = "${target_name}_incremental__package"
package_apk(_incremental_package_target) {
- deps = []
- forward_variables_from(invoker, [ "deps" ])
- deps += [ ":${_package_resources_target_name}" ]
+ _dex_target = "//build/android/incremental_install:bootstrap_java__dex"
+ deps = _deps + [
+ ":${_incremental_package_resources_target_name}",
+ _dex_target,
+ ]
- # TODO(agrieve): Multidex
if (defined(_dex_path)) {
- dex_path = _dex_path
+ dex_path =
+ get_label_info(_dex_target, "target_gen_dir") + "/bootstrap.dex"
}
# TODO(agrieve): Add a placeholder .so for http://crbug.com/384638
native_libs_dir = "//build/android/empty/res"
output_apk_path = _incremental_packaged_apk_path
- resource_packaged_apk_path = _resource_packaged_apk_path
+ resource_packaged_apk_path = _incremental_resource_packaged_apk_path
}
_finalize_apk_rule_name = "${target_name}__finalize"
« 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