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", |
+ ] |
+ } |
+ } |
} |