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

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

Issue 2156453002: Add AAR support to Chrome and convert support libraries to using AARs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
Index: build/config/android/rules.gni
diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
index c827830dbc55e72486b788412c8f0b3cf0bc6ddc..b571dd075c9a873aa9791ec23a66903d961f9c93 100644
--- a/build/config/android/rules.gni
+++ b/build/config/android/rules.gni
@@ -2558,4 +2558,178 @@ if (enable_java_templates) {
]
}
}
+
+ # Declare an Android library target for a prebuilt AAR without resources.
+ #
+ # This target creates an Android library containing prebuilt jars.
+ #
+ # Variables
+ # aar_path: Path to the AAR.
+ # has_internal_jar: Whether the AAR contains internal_impl-XXX.jar.
+ # Default to false. (Optional)
+ # internal_jar_version: The version of the support library. This has to
agrieve 2016/07/15 14:34:41 I think you're supposed to treat all .jar files wi
Ian Wen 2016/07/17 02:08:09 Done. I used ToGNString() instead.
+ # be specified if has_internal_jar is true. (Optional)
+ #
+ # Example
+ # android_aar_prebuilt_no_resource("foo_java") {
+ # aar_path = "foo.aar"
+ # has_internal_jar = true
+ # internal_jar_version = "24.0.0"
+ # }
+ template("android_aar_prebuilt_no_resource") {
agrieve 2016/07/15 14:34:41 I don't think we need to have this as a separate t
Ian Wen 2016/07/17 02:08:09 Done.
+ assert(defined(invoker.aar_path))
+ forward_variables_from(invoker,
agrieve 2016/07/15 14:34:41 nit: Try to use forward_variables_from only when f
Ian Wen 2016/07/17 02:08:09 Done.
+ [
+ "aar_path",
+ "has_internal_jar",
+ "internal_jar_version",
+ ])
+ if (!defined(has_internal_jar)) {
+ has_internal_jar = false
+ }
+ if (has_internal_jar) {
+ assert(defined(internal_jar_version))
+ _internal_jar_target_name = "${target_name}__internal_jar"
+ }
+ _output_path = "${target_gen_dir}/${target_name}"
+ _unpack_target_name = "${target_name}__unpack_aar"
+ _jar_target_name = "${target_name}__jar"
+
+ action(_unpack_target_name) {
+ script = "//build/android/gyp/aar.py" # Unzips the AAR
+ args = [
+ "--input_file",
+ rebase_path(aar_path, root_build_dir),
+ "--output_dir",
+ rebase_path(_output_path, root_build_dir),
+ "--extract",
+ ]
+ inputs = [
+ aar_path,
+ ]
+ outputs = [
+ "${_output_path}/classes.jar",
+ ]
+ if (has_internal_jar) {
+ outputs +=
+ [ "${_output_path}/libs/internal_impl-$internal_jar_version.jar" ]
+ }
+ }
+
+ android_java_prebuilt(_jar_target_name) {
+ forward_variables_from(invoker, [ "deps" ])
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += [ ":$_unpack_target_name" ]
+ jar_path = "${_output_path}/classes.jar"
+ }
+
+ if (has_internal_jar) {
+ android_java_prebuilt(_internal_jar_target_name) {
+ forward_variables_from(invoker, [ "deps" ])
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += [ ":$_unpack_target_name" ]
+ jar_path =
+ "${_output_path}/libs/internal_impl-$internal_jar_version.jar"
+ }
+ }
+
+ java_group(target_name) {
+ deps = [
+ ":$_jar_target_name",
+ ]
+ if (has_internal_jar) {
+ deps += [ ":$_internal_jar_target_name" ]
+ }
+ }
+ }
+
+ # Declare an Android library target for a prebuilt AAR with resources.
+ #
+ # This target creates an Android library containing java code and Android
+ # resources.
+ #
+ # Variables
+ # aar_path: Path to the AAR.
+ #
+ # Example
+ # android_aar_prebuilt("foo_java") {
+ # aar_path = "foo.aar"
+ # }
+ template("android_aar_prebuilt") {
+ assert(defined(invoker.aar_path))
+ forward_variables_from(invoker, [ "aar_path" ])
+ _output_path = "${target_gen_dir}/${target_name}"
+ _unpack_target_name = "${target_name}__unpack_aar"
+ _jar_target_name = "${target_name}__jar"
+ _res_target_name = "${target_name}__res"
+ _res_files = []
+
+ action(_unpack_target_name) {
+ script = "//build/android/gyp/aar.py" # Unzips the AAR
+ args = [
+ "--input_file",
+ rebase_path(aar_path, root_build_dir),
+ "--output_dir",
+ rebase_path(_output_path, root_build_dir),
+ "--extract",
+ ]
+ inputs = [
+ aar_path,
+ ]
+ outputs = [
+ "${_output_path}/AndroidManifest.xml",
+ "${_output_path}/classes.jar",
+ "${_output_path}/R.txt",
+ ]
+ _res_files += exec_script("//build/android/gyp/aar.py",
+ [
+ "--input_file",
+ rebase_path(aar_path, root_build_dir),
+ "--output_dir",
+ rebase_path(_output_path, root_build_dir),
+ "--list_res",
+ ],
+ "list lines")
+ outputs +=
+ get_path_info(rebase_path(_res_files, "", root_out_dir), "abspath")
agrieve 2016/07/15 14:34:41 The get_path_info part of this is unnecessary I th
Ian Wen 2016/07/17 02:08:09 I tried to remove get_path_info but with no luck.
+ }
+
+ android_java_prebuilt(_jar_target_name) {
+ forward_variables_from(invoker, [ "deps" ])
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += [ ":$_unpack_target_name" ]
+ jar_path = "${_output_path}/classes.jar"
+ }
+
+ android_resources(_res_target_name) {
+ forward_variables_from(invoker,
+ [
+ "custom_package",
+ "deps",
+ ])
+ if (!defined(deps)) {
+ deps = []
+ }
+ deps += [ ":$_unpack_target_name" ]
+ resource_dirs = []
+ generated_resource_dirs = [ "${_output_path}/res" ]
+ generated_resource_files = _res_files
+ android_manifest_dep = ":$_unpack_target_name"
+ android_manifest = "${_output_path}/AndroidManifest.xml"
+ v14_skip = true
+ }
+
+ java_group(target_name) {
+ deps = [
+ ":$_jar_target_name",
+ ":$_res_target_name",
+ ]
+ }
+ }
}

Powered by Google App Engine
This is Rietveld 408576698