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