Reland of Creating libwebrtc bundle jar (patchset #1 id:1 of https://codereview.webrtc.org/2640023010/ )

Reason for revert:
It seems that we cannot skip the generation of "//webrtc/base/base_java" in chromium without some refactoring because it is included as a dependency in some places.

Original issue's description:
> Revert of Creating libwebrtc bundle jar (patchset #4 id:60001 of https://codereview.webrtc.org/2646443002/ )
>
> Reason for revert:
> This breaks some chromium.webrtc.fyi buildbots with the following error:
>
> ERROR Unresolved dependencies.
> //third_party/webrtc/base:base(//build/toolchain/android:android_arm)
>   needs //third_party/webrtc/base:base_java(//build/toolchain/android:android_arm)
>
>
> Original issue's description:
> > Creating libwebrtc bundle jar
> >
> > Creates a JAR which includes:
> > - //webrtc/base:base_java
> > - //webrtc/modules/audio_device:audio_device_java
> > - //webrtc/sdk/android:libjingle_peerconnection_java
> > - //webrtc/sdk/android:libjingle_peerconnection_metrics_default_java
> >
> > The libwebrtc.jar file will be generated at '<output_dir>/lib.java/webrtc/sdk/android/libwebrtc.jar'.
> >
> > BUG=webrtc:6356
> >
> > Review-Url: https://codereview.webrtc.org/2646443002
> > Cr-Commit-Position: refs/heads/master@{#16189}
> > Committed: https://chromium.googlesource.com/external/webrtc/+/a62a82b7e7da5a1bbbf8b5614ef19334cc1603ce
>
> TBR=kjellander@webrtc.org,sakal@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6356
>
> Review-Url: https://codereview.webrtc.org/2640023010
> Cr-Commit-Position: refs/heads/master@{#16190}
> Committed: https://chromium.googlesource.com/external/webrtc/+/3c9151b9532b372a35f0b81cc7c6b34d820506e1

TBR=kjellander@webrtc.org,sakal@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6356

Review-Url: https://codereview.webrtc.org/2646093004
Cr-Commit-Position: refs/heads/master@{#16203}
diff --git a/webrtc/build/webrtc.gni b/webrtc/build/webrtc.gni
index edbd153..d179ed4 100644
--- a/webrtc/build/webrtc.gni
+++ b/webrtc/build/webrtc.gni
@@ -323,32 +323,3 @@
     }
   }
 }
-
-# TODO(mbonadei): Merge this in android_library or create an
-# rtc_android_library. Waiting for hints from chromium:648244.
-if (is_android) {
-  template("android_shared_srcjar") {
-    action(target_name) {
-      check_includes = false
-      set_sources_assignment_filter([])
-      assert(defined(invoker.sources))
-
-      forward_variables_from(invoker,
-                             [
-                               "sources",
-                               "testonly",
-                               "visibility",
-                             ])
-      script = "//webrtc/build/generate_srcjar.py"
-      _srcjar_path = "${target_gen_dir}/${target_name}.srcjar"
-      _rebased_srcjar_path = rebase_path(_srcjar_path, root_build_dir)
-      _rebased_sources = rebase_path(invoker.sources, root_build_dir)
-
-      args = [ "--srcjar=$_rebased_srcjar_path" ] + _rebased_sources
-
-      outputs = [
-        _srcjar_path,
-      ]
-    }
-  }
-}
diff --git a/webrtc/examples/BUILD.gn b/webrtc/examples/BUILD.gn
index 3764b5c..eaa3bc9 100644
--- a/webrtc/examples/BUILD.gn
+++ b/webrtc/examples/BUILD.gn
@@ -93,6 +93,7 @@
       ":AppRTCMobile_resources",
       "//webrtc/base:base_java",
       "//webrtc/examples/androidapp/third_party/autobanh:autobanh_java",
+      "//webrtc/modules/audio_device:audio_device_java",
       "//webrtc/sdk/android:libjingle_peerconnection_java",
       "//webrtc/sdk/android:libjingle_peerconnection_metrics_default_java",
     ]
diff --git a/webrtc/modules/audio_device/BUILD.gn b/webrtc/modules/audio_device/BUILD.gn
index e2b510c..4dc6760 100644
--- a/webrtc/modules/audio_device/BUILD.gn
+++ b/webrtc/modules/audio_device/BUILD.gn
@@ -347,8 +347,8 @@
 }
 
 if (!build_with_chromium && is_android) {
-  android_shared_srcjar("audio_device_java") {
-    sources = [
+  android_library("audio_device_java") {
+    java_files = [
       "android/java/src/org/webrtc/voiceengine/BuildInfo.java",
       "android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
       "android/java/src/org/webrtc/voiceengine/WebRtcAudioManager.java",
@@ -356,5 +356,8 @@
       "android/java/src/org/webrtc/voiceengine/WebRtcAudioTrack.java",
       "android/java/src/org/webrtc/voiceengine/WebRtcAudioUtils.java",
     ]
+    deps = [
+      "//webrtc/base:base_java",
+    ]
   }
 }
diff --git a/webrtc/sdk/android/BUILD.gn b/webrtc/sdk/android/BUILD.gn
index cff8c21..2adcdb5 100644
--- a/webrtc/sdk/android/BUILD.gn
+++ b/webrtc/sdk/android/BUILD.gn
@@ -110,6 +110,19 @@
   output_extension = "so"
 }
 
+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
+  deps = [
+    ":libjingle_peerconnection_java",
+    ":libjingle_peerconnection_metrics_default_java",
+    "//webrtc/base:base_java",
+    "//webrtc/modules/audio_device:audio_device_java",
+  ]
+}
+
 android_library("libjingle_peerconnection_java") {
   java_files = [
     "api/org/webrtc/AudioSource.java",
@@ -171,9 +184,8 @@
 
   deps = [
     "//webrtc/base:base_java",
+    "//webrtc/modules/audio_device:audio_device_java",
   ]
-
-  srcjar_deps = [ "//webrtc/modules/audio_device:audio_device_java" ]
 }
 
 android_library("libjingle_peerconnection_metrics_default_java") {