From 7bc55b8e84e76c60d55e33c017858d9cb0984225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20Kalliom=C3=A4ki?= Date: Wed, 8 Nov 2017 14:24:41 +0100 Subject: [PATCH] Update AAR-generation to use non-preprocessed jar files. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously Java 8 bytecode was transpiled into Java 7 bytecode for AAR. With this change we instead include Java 8 bytecode in the AAR. This drops support for Java 7 but allows using Java 8 features such as static methods in interfaces and default methods. Bug: webrtc:8084, chromium:762967 Change-Id: I3c6ec9332c5612b7ed811a81957f25c94c80da70 No-Try: True Reviewed-on: https://webrtc-review.googlesource.com/21222 Commit-Queue: Sami Kalliomäki Reviewed-by: Magnus Jedvert Cr-Commit-Position: refs/heads/master@{#20849} --- sdk/android/BUILD.gn | 59 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 55 insertions(+), 4 deletions(-) diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn index 98ba0da641..50ae3e7d10 100644 --- a/sdk/android/BUILD.gn +++ b/sdk/android/BUILD.gn @@ -438,12 +438,63 @@ rtc_shared_library("libjingle_peerconnection_so") { output_extension = "so" } -dist_jar("libwebrtc") { +template("java8_dist_jar") { + _deps = [] + _output_jars = [] + foreach(dep, invoker.deps) { + _dep_name = get_label_info(dep, "name") + _source_jar = get_label_info(dep, "target_gen_dir") + "/" + _dep_name + + "__compile_java.javac.jar" + _output_jar = "$target_gen_dir/" + _dep_name + ".jar" + + _copy_dep = dep + "__compile_java__javac" + _copy_target_name = "${target_name}_${_dep_name}_copy" + + copy(_copy_target_name) { + sources = [ + _source_jar, + ] + outputs = [ + _output_jar, + ] + deps = [ + _copy_dep, + ] + } + _deps += [ ":" + _copy_target_name ] + _output_jars += [ _output_jar ] + } + + action(target_name) { + forward_variables_from(invoker, [ "data" ]) + script = "//build/android/gyp/create_dist_jar.py" + depfile = "$target_gen_dir/$target_name.d" + deps = _deps + + outputs = [ + invoker.output, + ] + + args = [ + "--depfile", + rebase_path(depfile, root_build_dir), + "--output", + rebase_path(invoker.output, root_build_dir), + ] + + foreach(output_jar, _output_jars) { + args += [ + "--inputs", + rebase_path(output_jar, root_build_dir), + ] + } + } +} + +java8_dist_jar("libwebrtc") { _target_dir_name = get_label_info(":$target_name", "dir") output = "${root_out_dir}/lib.java${_target_dir_name}/${target_name}.jar" - direct_deps_only = true - use_interface_jars = false - requires_android = true + deps = [ ":libjingle_peerconnection_java", ":libjingle_peerconnection_metrics_default_java",