diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index c5bc83f..01d73a4 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -49,7 +49,7 @@
 }
 
 if (is_android) {
-  android_apk("AppRTCMobile") {
+  rtc_android_apk("AppRTCMobile") {
     testonly = true
     apk_name = "AppRTCMobile"
     android_manifest = "androidapp/AndroidManifest.xml"
@@ -62,12 +62,9 @@
     ]
 
     shared_libraries = [ "../sdk/android:libjingle_peerconnection_so" ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 
-  android_library("AppRTCMobile_javalib") {
+  rtc_android_library("AppRTCMobile_javalib") {
     testonly = true
     android_manifest = "androidapp/AndroidManifest.xml"
 
@@ -103,9 +100,6 @@
       "../sdk/android:libjingle_peerconnection_metrics_default_java",
       "androidapp/third_party/autobanh:autobanh_java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 
   android_resources("AppRTCMobile_resources") {
@@ -114,7 +108,7 @@
     custom_package = "org.appspot.apprtc"
   }
 
-  instrumentation_test_apk("AppRTCMobileTest") {
+  rtc_instrumentation_test_apk("AppRTCMobileTest") {
     apk_name = "AppRTCMobileTest"
     android_manifest = "androidtests/AndroidManifest.xml"
 
@@ -128,12 +122,9 @@
       "//third_party/android_support_test_runner:runner_java",
       "//third_party/junit",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 
-  instrumentation_test_apk("AppRTCMobileTestStubbedVideoIO") {
+  rtc_instrumentation_test_apk("AppRTCMobileTestStubbedVideoIO") {
     apk_name = "AppRTCMobileTestStubbedVideoIO"
     android_manifest = "androidtests/AndroidManifest.xml"
 
@@ -154,9 +145,6 @@
     data = [
       "../resources/reference_video_640x360_30fps.y4m",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
 
@@ -676,7 +664,7 @@
 }
 
 if (is_android) {
-  android_library("webrtc_unity_java") {
+  rtc_android_library("webrtc_unity_java") {
     java_files = [ "unityplugin/java/src/org/webrtc/UnityUtility.java" ]
     deps = [
       "../rtc_base:base_java",
diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn
index e50041f..8f6f746 100644
--- a/modules/audio_device/BUILD.gn
+++ b/modules/audio_device/BUILD.gn
@@ -368,7 +368,7 @@
 }
 
 if (!build_with_chromium && is_android) {
-  android_library("audio_device_java") {
+  rtc_android_library("audio_device_java") {
     java_files = [
       "android/java/src/org/webrtc/voiceengine/BuildInfo.java",
       "android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
@@ -380,8 +380,5 @@
     deps = [
       "../../rtc_base:base_java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 400efb6..bc9b929 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1089,15 +1089,12 @@
 }
 
 if (is_android) {
-  android_library("base_java") {
+  rtc_android_library("base_java") {
     java_files = [
       "java/src/org/webrtc/ContextUtils.java",
       "java/src/org/webrtc/Logging.java",
       "java/src/org/webrtc/Size.java",
       "java/src/org/webrtc/ThreadUtils.java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index f30c7ae..c368d12 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -385,7 +385,7 @@
   ]
 }
 
-android_library("libjingle_peerconnection_java") {
+rtc_android_library("libjingle_peerconnection_java") {
   java_files = [
     "api/org/webrtc/AudioProcessingFactory.java",
     "api/org/webrtc/AudioSource.java",
@@ -488,24 +488,18 @@
     "../../modules/audio_device:audio_device_java",
     "../../rtc_base:base_java",
   ]
-
-  # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-  no_build_hooks = true
 }
 
-android_library("libjingle_peerconnection_metrics_default_java") {
+rtc_android_library("libjingle_peerconnection_metrics_default_java") {
   java_files = [ "api/org/webrtc/Metrics.java" ]
 
   deps = [
     "../../rtc_base:base_java",
   ]
-
-  # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-  no_build_hooks = true
 }
 
 if (rtc_include_tests) {
-  instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
+  rtc_instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
     apk_name = "libjingle_peerconnection_android_unittest"
     android_manifest = "instrumentationtests/AndroidManifest.xml"
 
@@ -547,8 +541,5 @@
     ]
 
     shared_libraries = [ "../../sdk/android:libjingle_peerconnection_so" ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 78a734d..7277e6b 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -710,7 +710,7 @@
 }
 
 if (!build_with_chromium && is_android) {
-  android_library("native_test_java") {
+  rtc_android_library("native_test_java") {
     testonly = true
     java_files = [
       "android/org/webrtc/native_test/RTCNativeUnitTest.java",
@@ -720,8 +720,5 @@
       "../rtc_base:base_java",
       "//testing/android/native_test:native_test_java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/webrtc.gni b/webrtc.gni
index a4b7c18..3b504e8 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -398,3 +398,62 @@
     }
   }
 }
+
+if (is_android) {
+  template("rtc_android_library") {
+    android_library(target_name) {
+      forward_variables_from(invoker,
+                             "*",
+                             [
+                               "configs",
+                               "public_configs",
+                               "suppressed_configs",
+                               "visibility",
+                             ])
+
+      # Treat warnings as errors.
+      javac_args = [ "-Werror" ]
+
+      # TODO(sakal): Fix build hooks crbug.com/webrtc/8168
+      no_build_hooks = true
+    }
+  }
+
+  template("rtc_android_apk") {
+    android_apk(target_name) {
+      forward_variables_from(invoker,
+                             "*",
+                             [
+                               "configs",
+                               "public_configs",
+                               "suppressed_configs",
+                               "visibility",
+                             ])
+
+      # Treat warnings as errors.
+      javac_args = [ "-Werror" ]
+
+      # TODO(sakal): Fix build hooks crbug.com/webrtc/8168
+      no_build_hooks = true
+    }
+  }
+
+  template("rtc_instrumentation_test_apk") {
+    instrumentation_test_apk(target_name) {
+      forward_variables_from(invoker,
+                             "*",
+                             [
+                               "configs",
+                               "public_configs",
+                               "suppressed_configs",
+                               "visibility",
+                             ])
+
+      # Treat warnings as errors.
+      javac_args = [ "-Werror" ]
+
+      # TODO(sakal): Fix build hooks crbug.com/webrtc/8168
+      no_build_hooks = true
+    }
+  }
+}
