IWYU sdk/ (on Android)

Using
  find sdk/ -name "*.h" -o -name "*.cc" | xargs tools_webrtc/iwyu/apply-include-cleaner
followed by
  tools_webrtc/gn_check_autofix.py -C out/Default
followed by git cl format

Bug: webrtc:42226242
Change-Id: I83ca8f65deb82ac3b12bcb48ecd9d60041ed557f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/399920
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: ZoƩ Lepaul <xalep@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45332}
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 07ea51f..785dd9f 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -611,6 +611,7 @@
       ":internal_jni",
       ":native_api_jni",
       "../../api:field_trials_view",
+      "../../api:ref_count",
       "../../api:scoped_refptr",
       "../../api:sequence_checker",
       "../../api/audio:audio_processing",
@@ -619,6 +620,8 @@
       "../../rtc_base:ip_address",
       "../../rtc_base:logging",
       "../../rtc_base:macromagic",
+      "../../rtc_base:net_helpers",
+      "../../rtc_base:network_constants",
       "../../rtc_base:refcount",
       "../../rtc_base:stringutils",
       "../../rtc_base:threading",
@@ -698,6 +701,7 @@
     deps = [
       ":base_jni",
       ":generated_video_jni",
+      ":internal_jni",
       ":native_api_jni",
       ":videoframe_jni",
       "../../api:array_view",
@@ -708,9 +712,11 @@
       "../../api:sequence_checker",
       "../../api/environment",
       "../../api/task_queue",
+      "../../api/units:data_rate",
       "../../api/video:encoded_image",
       "../../api/video:render_resolution",
       "../../api/video:video_bitrate_allocation",
+      "../../api/video:video_codec_constants",
       "../../api/video:video_frame",
       "../../api/video:video_frame_type",
       "../../api/video:video_rtp_headers",
@@ -821,41 +827,57 @@
       ":native_api_stacktrace",
       "..:media_constraints",
       "../../api:audio_options_api",
+      "../../api:candidate",
       "../../api:create_modular_peer_connection_factory",
       "../../api:dtmf_sender_interface",
       "../../api:enable_media",
       "../../api:fec_controller_api",
       "../../api:libjingle_peerconnection_api",
+      "../../api:make_ref_counted",
       "../../api:media_stream_interface",
       "../../api:network_state_predictor_api",
+      "../../api:priority",
+      "../../api:refcountedbase",
+      "../../api:rtc_error",
       "../../api:rtc_event_log_output_file",
       "../../api:rtc_stats_api",
       "../../api:rtp_parameters",
       "../../api:rtp_sender_interface",
+      "../../api:rtp_transceiver_direction",
       "../../api:scoped_refptr",
       "../../api:turn_customizer",
       "../../api/audio:audio_device",
       "../../api/audio:audio_processing",
       "../../api/audio:builtin_audio_processing_builder",
       "../../api/audio_codecs:audio_codecs_api",
+      "../../api/crypto:frame_decryptor_interface",
+      "../../api/crypto:frame_encryptor_interface",
       "../../api/crypto:options",
       "../../api/environment",
       "../../api/neteq:neteq_api",
+      "../../api/rtc_event_log",
       "../../api/rtc_event_log:rtc_event_log_factory",
       "../../api/task_queue:default_task_queue_factory",
+      "../../api/transport:bitrate_settings",
+      "../../api/transport:enums",
       "../../api/transport:network_control",
       "../../api/video_codecs:video_codecs_api",
       "../../call:call_interfaces",
       "../../media:rtc_media_base",
       "../../modules/audio_device",
       "../../modules/utility",
+      "../../p2p:port",
       "../../pc:media_stream_observer",
       "../../pc:peer_connection_factory",
       "../../pc:webrtc_sdp",
+      "../../rtc_base:buffer",
       "../../rtc_base:checks",
+      "../../rtc_base:copy_on_write_buffer",
       "../../rtc_base:event_tracer",
+      "../../rtc_base:file_rotating_stream",
       "../../rtc_base:log_sinks",
       "../../rtc_base:logging",
+      "../../rtc_base:network_constants",
       "../../rtc_base:refcount",
       "../../rtc_base:rtc_certificate_generator",
       "../../rtc_base:safe_conversions",
@@ -866,7 +888,7 @@
       "../../stats:rtc_stats",
       "../../system_wrappers:field_trial",
       "//third_party/abseil-cpp/absl/memory",
-      "//third_party/abseil-cpp/absl/strings:string_view",
+      "//third_party/abseil-cpp/absl/strings",
       "//third_party/jni_zero",
     ]
   }
@@ -1007,7 +1029,6 @@
       "native_api/jni/application_context_provider.h",
       "native_api/jni/class_loader.h",
       "native_api/jni/java_types.h",
-      "native_api/jni/jni_int_wrapper.h",
       "native_api/jni/jvm.h",
       "native_api/jni/scoped_java_ref.h",
     ]
@@ -1033,6 +1054,7 @@
 
     deps = [
       ":base_jni",
+      ":internal_jni",
       ":native_api_jni",
       "../../rtc_base:checks",
     ]
@@ -1049,6 +1071,7 @@
     ]
 
     deps = [
+      ":audio_device_module_base",
       ":base_jni",
       ":internal_jni",
       ":java_audio_device_module",
@@ -1156,8 +1179,10 @@
       ":video_jni",
       ":videoframe_jni",
       "../../api:libjingle_peerconnection_api",
+      "../../api:make_ref_counted",
       "../../api:media_stream_interface",
       "../../api:scoped_refptr",
+      "../../api/video:recordable_encoded_frame",
       "../../api/video:video_frame",
       "../../api/video:video_rtp_headers",
       "../../rtc_base:refcount",
@@ -1206,7 +1231,9 @@
     deps = [
       ":base_jni",
       ":generated_video_jni",
+      ":internal_jni",
       ":native_api_jni",
+      "../../api:make_ref_counted",
       "../../api:scoped_refptr",
       "../../api/video:video_frame",
       "../../api/video:video_rtp_headers",
@@ -1227,7 +1254,9 @@
     deps = [
       ":base_jni",
       ":generated_logging_jni",
+      ":internal_jni",
       ":native_api_jni",
+      "../../rtc_base:checks",
       "../../rtc_base:logging",
       "//third_party/abseil-cpp/absl/strings:string_view",
     ]
@@ -1341,6 +1370,7 @@
       "../../rtc_base:checks",
       "../../rtc_base:logging",
       "../../rtc_base:platform_thread",
+      "../../rtc_base:platform_thread_types",
       "../../rtc_base:timeutils",
     ]
   }
@@ -1661,7 +1691,9 @@
       ":base_jni",
       ":native_api_jni",
       ":videoframe_jni",
+      "../../api:scoped_refptr",
       "../../api/video:video_frame",
+      "../../rtc_base:checks",
       "../../rtc_base:logging",
       "//third_party/jni_zero",
     ]
@@ -1706,6 +1738,7 @@
       ":audio_device_module_base",
       ":base_jni",
       ":generated_native_unittests_jni",
+      ":internal_jni",
       ":native_api_audio_device_module",
       ":native_api_base",
       ":native_api_codecs",
@@ -1717,16 +1750,20 @@
       ":video_jni",
       "../../api:create_modular_peer_connection_factory",
       "../../api:enable_media_with_defaults",
+      "../../api:field_trials",
       "../../api:field_trials_view",
       "../../api:libjingle_peerconnection_api",
+      "../../api:media_stream_interface",
       "../../api:scoped_refptr",
       "../../api/audio:audio_device",
       "../../api/environment",
       "../../api/environment:environment_factory",
       "../../api/rtc_event_log:rtc_event_log_factory",
       "../../api/task_queue:default_task_queue_factory",
+      "../../api/units:time_delta",
       "../../api/video:video_frame",
       "../../api/video:video_rtp_headers",
+      "../../api/video_codecs:video_codecs_api",
       "../../media:media_constants",
       "../../media:media_engine",
       "../../media:rtc_audio_video",
@@ -1738,6 +1775,7 @@
       "../../rtc_base:checks",
       "../../rtc_base:ip_address",
       "../../rtc_base:logging",
+      "../../rtc_base:network_constants",
       "../../rtc_base:platform_thread",
       "../../rtc_base:rtc_event",
       "../../rtc_base:stringutils",
diff --git a/sdk/android/instrumentationtests/loggable_test.cc b/sdk/android/instrumentationtests/loggable_test.cc
index e2b5df2..9b038a6 100644
--- a/sdk/android/instrumentationtests/loggable_test.cc
+++ b/sdk/android/instrumentationtests/loggable_test.cc
@@ -8,7 +8,9 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include <memory>
+#include <jni.h>
+
+#include <string>
 
 #include "rtc_base/logging.h"
 #include "sdk/android/native_api/jni/java_types.h"
diff --git a/sdk/android/instrumentationtests/video_frame_buffer_test.cc b/sdk/android/instrumentationtests/video_frame_buffer_test.cc
index ed2425c..1e99453 100644
--- a/sdk/android/instrumentationtests/video_frame_buffer_test.cc
+++ b/sdk/android/instrumentationtests/video_frame_buffer_test.cc
@@ -8,7 +8,13 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include "api/video/video_frame_buffer.h"
+
+#include <jni.h>
+
+#include "api/scoped_refptr.h"
 #include "api/video/i420_buffer.h"
+#include "rtc_base/checks.h"
 #include "sdk/android/src/jni/jni_helpers.h"
 #include "sdk/android/src/jni/video_frame.h"
 #include "sdk/android/src/jni/wrapped_native_i420_buffer.h"
diff --git a/sdk/android/native_api/audio_device_module/audio_device_android.cc b/sdk/android/native_api/audio_device_module/audio_device_android.cc
index 9916653..512d28a 100644
--- a/sdk/android/native_api/audio_device_module/audio_device_android.cc
+++ b/sdk/android/native_api/audio_device_module/audio_device_android.cc
@@ -10,23 +10,26 @@
 
 #include "sdk/android/native_api/audio_device_module/audio_device_android.h"
 
+#include <jni.h>
 #include <stdlib.h>
 
 #include <memory>
 #include <utility>
 
+#include "api/audio/audio_device.h"
+#include "api/audio/audio_device_defines.h"
 #include "api/environment/environment.h"
 #include "api/scoped_refptr.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/ref_count.h"
 #include "sdk/android/native_api/jni/application_context_provider.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/src/jni/audio_device/audio_common.h"
+#include "sdk/android/src/jni/audio_device/audio_device_module.h"
 #include "sdk/android/src/jni/audio_device/audio_record_jni.h"
 #include "sdk/android/src/jni/audio_device/audio_track_jni.h"
+#include "sdk/android/src/jni/audio_device/opensles_common.h"
 #include "sdk/android/src/jni/audio_device/opensles_player.h"
 #include "sdk/android/src/jni/audio_device/opensles_recorder.h"
-#include "sdk/android/src/jni/jvm.h"
-#include "system_wrappers/include/metrics.h"
 #include "third_party/jni_zero/jni_zero.h"
 
 #if defined(WEBRTC_AUDIO_DEVICE_INCLUDE_ANDROID_AAUDIO)
diff --git a/sdk/android/native_api/base/init.cc b/sdk/android/native_api/base/init.cc
index 176aa89..b163e18 100644
--- a/sdk/android/native_api/base/init.cc
+++ b/sdk/android/native_api/base/init.cc
@@ -10,9 +10,11 @@
 
 #include "sdk/android/native_api/base/init.h"
 
+#include <jni.h>
+
 #include "rtc_base/checks.h"
 #include "sdk/android/native_api/jni/class_loader.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 
 namespace webrtc {
 
diff --git a/sdk/android/native_api/codecs/wrapper.cc b/sdk/android/native_api/codecs/wrapper.cc
index 1081500..1e707f8 100644
--- a/sdk/android/native_api/codecs/wrapper.cc
+++ b/sdk/android/native_api/codecs/wrapper.cc
@@ -10,9 +10,15 @@
 
 #include "sdk/android/native_api/codecs/wrapper.h"
 
-#include <memory>
+#include <jni.h>
 
-#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include <memory>
+#include <vector>
+
+#include "api/video_codecs/sdp_video_format.h"
+#include "api/video_codecs/video_decoder_factory.h"
+#include "api/video_codecs/video_encoder.h"
+#include "api/video_codecs/video_encoder_factory.h"
 #include "sdk/android/src/jni/video_codec_info.h"
 #include "sdk/android/src/jni/video_decoder_factory_wrapper.h"
 #include "sdk/android/src/jni/video_encoder_factory_wrapper.h"
diff --git a/sdk/android/native_api/jni/application_context_provider.cc b/sdk/android/native_api/jni/application_context_provider.cc
index de3c4a3..3c8e48e 100644
--- a/sdk/android/native_api/jni/application_context_provider.cc
+++ b/sdk/android/native_api/jni/application_context_provider.cc
@@ -9,6 +9,8 @@
  */
 #include "sdk/android/native_api/jni/application_context_provider.h"
 
+#include <jni.h>
+
 #include "sdk/android/generated_native_api_jni/ApplicationContextProvider_jni.h"
 #include "sdk/android/native_api/jni/scoped_java_ref.h"
 
diff --git a/sdk/android/native_api/jni/application_context_provider.h b/sdk/android/native_api/jni/application_context_provider.h
index dc3a80a..6fbce81 100644
--- a/sdk/android/native_api/jni/application_context_provider.h
+++ b/sdk/android/native_api/jni/application_context_provider.h
@@ -10,6 +10,8 @@
 #ifndef SDK_ANDROID_NATIVE_API_JNI_APPLICATION_CONTEXT_PROVIDER_H_
 #define SDK_ANDROID_NATIVE_API_JNI_APPLICATION_CONTEXT_PROVIDER_H_
 
+#include <jni.h>
+
 #include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
diff --git a/sdk/android/native_api/jni/class_loader.cc b/sdk/android/native_api/jni/class_loader.cc
index c7d13f4..76ccba7 100644
--- a/sdk/android/native_api/jni/class_loader.cc
+++ b/sdk/android/native_api/jni/class_loader.cc
@@ -10,12 +10,15 @@
 
 #include "sdk/android/native_api/jni/class_loader.h"
 
+#include <jni.h>
+
 #include <algorithm>
 #include <string>
 
 #include "rtc_base/checks.h"
 #include "sdk/android/generated_native_api_jni/WebRtcClassLoader_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "third_party/jni_zero/jni_zero.h"
 
 // Abort the process if `jni` has a Java exception pending. This macros uses the
diff --git a/sdk/android/native_api/jni/java_types.cc b/sdk/android/native_api/jni/java_types.cc
index f1abe91..c16aee2 100644
--- a/sdk/android/native_api/jni/java_types.cc
+++ b/sdk/android/native_api/jni/java_types.cc
@@ -10,10 +10,21 @@
 
 #include "sdk/android/native_api/jni/java_types.h"
 
-#include <memory>
-#include <string>
-#include <utility>
+#include <jni.h>
 
+#include <cstddef>
+#include <cstdint>
+#include <cstring>
+#include <map>
+#include <optional>
+#include <string>
+#include <type_traits>
+#include <utility>
+#include <vector>
+
+#include "api/array_view.h"
+#include "api/sequence_checker.h"
+#include "rtc_base/checks.h"
 #include "sdk/android/generated_external_classes_jni/ArrayList_jni.h"
 #include "sdk/android/generated_external_classes_jni/Boolean_jni.h"
 #include "sdk/android/generated_external_classes_jni/Double_jni.h"
@@ -25,6 +36,7 @@
 #include "sdk/android/generated_external_classes_jni/Long_jni.h"
 #include "sdk/android/generated_external_classes_jni/Map_jni.h"
 #include "sdk/android/generated_native_api_jni/JniHelper_jni.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "third_party/jni_zero/jni_zero.h"
 
 namespace webrtc {
diff --git a/sdk/android/native_api/jni/jni_int_wrapper.h b/sdk/android/native_api/jni/jni_int_wrapper.h
deleted file mode 100644
index 54535cf..0000000
--- a/sdk/android/native_api/jni/jni_int_wrapper.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
- *
- *  Use of this source code is governed by a BSD-style license
- *  that can be found in the LICENSE file in the root of the source
- *  tree. An additional intellectual property rights grant can be found
- *  in the file PATENTS.  All contributing project authors may
- *  be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef SDK_ANDROID_NATIVE_API_JNI_JNI_INT_WRAPPER_H_
-#define SDK_ANDROID_NATIVE_API_JNI_JNI_INT_WRAPPER_H_
-
-#include "third_party/jni_zero/jni_zero.h"
-
-#endif  // SDK_ANDROID_NATIVE_API_JNI_JNI_INT_WRAPPER_H_
diff --git a/sdk/android/native_api/jni/jvm.cc b/sdk/android/native_api/jni/jvm.cc
index 3356cbe..17fb8cf 100644
--- a/sdk/android/native_api/jni/jvm.cc
+++ b/sdk/android/native_api/jni/jvm.cc
@@ -10,6 +10,8 @@
 
 #include "sdk/android/native_api/jni/jvm.h"
 
+#include <jni.h>
+
 #include "sdk/android/src/jni/jvm.h"
 
 namespace webrtc {
diff --git a/sdk/android/native_api/network_monitor/network_monitor.cc b/sdk/android/native_api/network_monitor/network_monitor.cc
index 39b3c8c..bbf31e7 100644
--- a/sdk/android/native_api/network_monitor/network_monitor.cc
+++ b/sdk/android/native_api/network_monitor/network_monitor.cc
@@ -10,8 +10,11 @@
 
 #include "sdk/android/native_api/network_monitor/network_monitor.h"
 
+#include <jni.h>
+
 #include <memory>
 
+#include "rtc_base/network_monitor_factory.h"
 #include "sdk/android/src/jni/android_network_monitor.h"
 #include "third_party/jni_zero/jni_zero.h"
 
diff --git a/sdk/android/native_api/stacktrace/stacktrace.cc b/sdk/android/native_api/stacktrace/stacktrace.cc
index 4f1a025..c8df124 100644
--- a/sdk/android/native_api/stacktrace/stacktrace.cc
+++ b/sdk/android/native_api/stacktrace/stacktrace.cc
@@ -10,24 +10,28 @@
 
 #include "sdk/android/native_api/stacktrace/stacktrace.h"
 
+#include <asm-generic/siginfo.h>
+#include <asm-generic/signal-defs.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <linux/futex.h>
-#include <sys/ptrace.h>
-#include <sys/ucontext.h>
-#include <syscall.h>
-#include <ucontext.h>
+#include <signal.h>
+#include <sys/syscall.h>  // IWYU pragma: keep
 #include <unistd.h>
 #include <unwind.h>
 
 #include <atomic>
+#include <cstddef>
+#include <cstdint>
+#include <cstring>
+#include <string>
+#include <vector>
 
 // ptrace.h is polluting the namespace. Clean up to avoid conflicts with rtc.
 #if defined(DS)
 #undef DS
 #endif
 
-#include "absl/base/attributes.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/strings/string_builder.h"
 #include "rtc_base/synchronization/mutex.h"
diff --git a/sdk/android/native_api/stacktrace/stacktrace.h b/sdk/android/native_api/stacktrace/stacktrace.h
index 4cae1a5..5550eaf 100644
--- a/sdk/android/native_api/stacktrace/stacktrace.h
+++ b/sdk/android/native_api/stacktrace/stacktrace.h
@@ -11,6 +11,7 @@
 #ifndef SDK_ANDROID_NATIVE_API_STACKTRACE_STACKTRACE_H_
 #define SDK_ANDROID_NATIVE_API_STACKTRACE_STACKTRACE_H_
 
+#include <cstdint>
 #include <string>
 #include <vector>
 
diff --git a/sdk/android/native_api/video/video_source.cc b/sdk/android/native_api/video/video_source.cc
index 2ca8ddc..3b1a399 100644
--- a/sdk/android/native_api/video/video_source.cc
+++ b/sdk/android/native_api/video/video_source.cc
@@ -10,6 +10,19 @@
 
 #include "sdk/android/native_api/video/video_source.h"
 
+#include <jni.h>
+
+#include <optional>
+
+#include "api/make_ref_counted.h"
+#include "api/media_stream_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/video/recordable_encoded_frame.h"
+#include "api/video/video_frame.h"
+#include "api/video/video_sink_interface.h"
+#include "api/video/video_source_interface.h"
+#include "rtc_base/thread.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/android_video_track_source.h"
 #include "sdk/android/src/jni/native_capturer_observer.h"
 
diff --git a/sdk/android/native_api/video/wrapper.cc b/sdk/android/native_api/video/wrapper.cc
index f7f239d..5514083 100644
--- a/sdk/android/native_api/video/wrapper.cc
+++ b/sdk/android/native_api/video/wrapper.cc
@@ -10,8 +10,12 @@
 
 #include "sdk/android/native_api/video/wrapper.h"
 
+#include <jni.h>
+
 #include <memory>
 
+#include "api/video/video_frame.h"
+#include "api/video/video_sink_interface.h"
 #include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/video_frame.h"
 #include "sdk/android/src/jni/video_sink.h"
diff --git a/sdk/android/native_unittests/android_network_monitor_unittest.cc b/sdk/android/native_unittests/android_network_monitor_unittest.cc
index 1544049..89ccd90 100644
--- a/sdk/android/native_unittests/android_network_monitor_unittest.cc
+++ b/sdk/android/native_unittests/android_network_monitor_unittest.cc
@@ -10,11 +10,21 @@
 
 #include "sdk/android/src/jni/android_network_monitor.h"
 
+#include <jni.h>
+
+#include <cstdint>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "api/field_trials.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/ip_address.h"
-#include "rtc_base/logging.h"
+#include "rtc_base/network_constants.h"
 #include "rtc_base/thread.h"
 #include "sdk/android/native_api/jni/application_context_provider.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "test/create_test_field_trials.h"
 #include "test/gtest.h"
 
diff --git a/sdk/android/native_unittests/audio_device/audio_device_unittest.cc b/sdk/android/native_unittests/audio_device/audio_device_unittest.cc
index 62c81c4..f28e475 100644
--- a/sdk/android/native_unittests/audio_device/audio_device_unittest.cc
+++ b/sdk/android/native_unittests/audio_device/audio_device_unittest.cc
@@ -10,13 +10,28 @@
 
 #include "api/audio/audio_device.h"
 
+#include <SLES/OpenSLES.h>
+#include <jni.h>
+
+#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <cstdio>
+#include <cstring>
+#include <iostream>
+#include <iterator>
+#include <limits>
 #include <list>
 #include <memory>
 #include <numeric>
+#include <string>
+#include <vector>
 
+#include "api/audio/audio_device_defines.h"
 #include "api/environment/environment.h"
 #include "api/environment/environment_factory.h"
 #include "api/scoped_refptr.h"
+#include "api/units/time_delta.h"
 #include "modules/audio_device/include/mock_audio_transport.h"
 #include "rtc_base/event.h"
 #include "rtc_base/synchronization/mutex.h"
@@ -24,10 +39,11 @@
 #include "sdk/android/generated_native_unittests_jni/BuildInfo_jni.h"
 #include "sdk/android/native_api/audio_device_module/audio_device_android.h"
 #include "sdk/android/native_api/jni/application_context_provider.h"
-#include "sdk/android/src/jni/audio_device/audio_common.h"
+#include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/audio_device/audio_device_module.h"
 #include "sdk/android/src/jni/audio_device/opensles_common.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/testsupport/file_utils.h"
diff --git a/sdk/android/native_unittests/codecs/wrapper_unittest.cc b/sdk/android/native_unittests/codecs/wrapper_unittest.cc
index 1d8d255..2d4a9e2 100644
--- a/sdk/android/native_unittests/codecs/wrapper_unittest.cc
+++ b/sdk/android/native_unittests/codecs/wrapper_unittest.cc
@@ -10,15 +10,20 @@
 
 #include "sdk/android/native_api/codecs/wrapper.h"
 
-#include <memory>
+#include <jni.h>
 
-#include "absl/memory/memory.h"
+#include <memory>
+#include <vector>
+
 #include "api/environment/environment.h"
 #include "api/environment/environment_factory.h"
+#include "api/video_codecs/sdp_video_format.h"
+#include "api/video_codecs/video_encoder.h"
 #include "media/base/media_constants.h"
 #include "sdk/android/generated_native_unittests_jni/CodecsWrapperTestHelper_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/video_encoder_wrapper.h"
 #include "test/gtest.h"
 
diff --git a/sdk/android/native_unittests/java_types_unittest.cc b/sdk/android/native_unittests/java_types_unittest.cc
index 1762eb5..b0907e2 100644
--- a/sdk/android/native_unittests/java_types_unittest.cc
+++ b/sdk/android/native_unittests/java_types_unittest.cc
@@ -10,11 +10,16 @@
 
 #include "sdk/android/native_api/jni/java_types.h"
 
-#include <memory>
+#include <jni.h>
+
+#include <cstdint>
+#include <map>
+#include <string>
 #include <vector>
 
 #include "sdk/android/generated_native_unittests_jni/JavaTypesTestHelper_jni.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "test/gtest.h"
 
 namespace webrtc {
diff --git a/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc b/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc
index 1ecd2d6..4d717ba 100644
--- a/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc
+++ b/sdk/android/native_unittests/stacktrace/stacktrace_unittest.cc
@@ -11,17 +11,21 @@
 #include "sdk/android/native_api/stacktrace/stacktrace.h"
 
 #include <dlfcn.h>
+#include <unistd.h>
 
 #include <atomic>
+#include <cstdint>
 #include <memory>
+#include <string>
+#include <utility>
 #include <vector>
 
 #include "absl/strings/string_view.h"
+#include "api/units/time_delta.h"
 #include "rtc_base/event.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/platform_thread.h"
 #include "rtc_base/string_utils.h"
-#include "rtc_base/strings/string_builder.h"
 #include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/system/inline.h"
 #include "rtc_base/thread.h"
diff --git a/sdk/android/native_unittests/video/video_source_unittest.cc b/sdk/android/native_unittests/video/video_source_unittest.cc
index ee6df18..0dce960 100644
--- a/sdk/android/native_unittests/video/video_source_unittest.cc
+++ b/sdk/android/native_unittests/video/video_source_unittest.cc
@@ -10,9 +10,17 @@
 
 #include "sdk/android/native_api/video/video_source.h"
 
+#include <jni.h>
+
+#include <cstdint>
 #include <vector>
 
+#include "api/media_stream_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/video/video_frame.h"
 #include "api/video/video_sink_interface.h"
+#include "api/video/video_source_interface.h"
+#include "rtc_base/thread.h"
 #include "sdk/android/generated_native_unittests_jni/JavaVideoSourceTestHelper_jni.h"
 #include "sdk/android/native_api/jni/jvm.h"
 #include "test/gtest.h"
diff --git a/sdk/android/src/jni/android_histogram.cc b/sdk/android/src/jni/android_histogram.cc
index ee3d441..0e85e60 100644
--- a/sdk/android/src/jni/android_histogram.cc
+++ b/sdk/android/src/jni/android_histogram.cc
@@ -8,8 +8,9 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include <map>
-#include <memory>
+#include <jni.h>
+
+#include <string>
 
 #include "sdk/android/generated_base_jni/Histogram_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
diff --git a/sdk/android/src/jni/android_metrics.cc b/sdk/android/src/jni/android_metrics.cc
index b9d41e5..581b6cc 100644
--- a/sdk/android/src/jni/android_metrics.cc
+++ b/sdk/android/src/jni/android_metrics.cc
@@ -8,13 +8,16 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include <map>
 #include <memory>
+#include <string>
 
 #include "rtc_base/string_utils.h"
 #include "sdk/android/generated_metrics_jni/Metrics_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "system_wrappers/include/metrics.h"
 
 // Enables collection of native histograms and creating them.
diff --git a/sdk/android/src/jni/android_network_monitor.cc b/sdk/android/src/jni/android_network_monitor.cc
index f8dc19e..2612c3a 100644
--- a/sdk/android/src/jni/android_network_monitor.cc
+++ b/sdk/android/src/jni/android_network_monitor.cc
@@ -10,9 +10,29 @@
 
 #include "sdk/android/src/jni/android_network_monitor.h"
 
+#include <asm-generic/errno.h>
 #include <dlfcn.h>
+#include <jni.h>
+#include <linux/in6.h>
+
+#include <algorithm>
+#include <cstddef>
+#include <cstdint>
+#include <cstring>
+#include <optional>
+#include <string>
+#include <utility>
+#include <vector>
 
 #include "absl/strings/string_view.h"
+#include "api/field_trials_view.h"
+#include "api/task_queue/pending_task_safety_flag.h"
+#include "rtc_base/net_helpers.h"
+#include "rtc_base/network_constants.h"
+#include "rtc_base/network_monitor.h"
+#include "rtc_base/thread.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include "sdk/android/src/jni/jvm.h"
 #ifndef RTLD_NOLOAD
 // This was added in Lollipop to dlfcn.h
 #define RTLD_NOLOAD 4
diff --git a/sdk/android/src/jni/android_network_monitor.h b/sdk/android/src/jni/android_network_monitor.h
index b4b8a32..2f89906 100644
--- a/sdk/android/src/jni/android_network_monitor.h
+++ b/sdk/android/src/jni/android_network_monitor.h
@@ -11,6 +11,7 @@
 #ifndef SDK_ANDROID_SRC_JNI_ANDROID_NETWORK_MONITOR_H_
 #define SDK_ANDROID_SRC_JNI_ANDROID_NETWORK_MONITOR_H_
 
+#include <jni.h>
 #include <stdint.h>
 
 #include <map>
@@ -20,13 +21,16 @@
 
 #include "absl/strings/string_view.h"
 #include "api/field_trials_view.h"
+#include "api/scoped_refptr.h"
 #include "api/task_queue/pending_task_safety_flag.h"
+#include "rtc_base/ip_address.h"
+#include "rtc_base/network_constants.h"
 #include "rtc_base/network_monitor.h"
 #include "rtc_base/network_monitor_factory.h"
 #include "rtc_base/string_utils.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/thread_annotations.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace test {
diff --git a/sdk/android/src/jni/android_video_track_source.cc b/sdk/android/src/jni/android_video_track_source.cc
index 93faf3a..670f803 100644
--- a/sdk/android/src/jni/android_video_track_source.cc
+++ b/sdk/android/src/jni/android_video_track_source.cc
@@ -10,11 +10,25 @@
 
 #include "sdk/android/src/jni/android_video_track_source.h"
 
+#include <jni.h>
+
+#include <cstdint>
+#include <optional>
 #include <utility>
 
+#include "api/media_stream_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/video/video_frame.h"
+#include "api/video/video_frame_buffer.h"
+#include "api/video/video_rotation.h"
+#include "media/base/adapted_video_track_source.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/thread.h"
+#include "rtc_base/time_utils.h"
 #include "sdk/android/generated_video_jni/NativeAndroidVideoTrackSource_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/video_frame.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/audio_device/audio_device_module.cc b/sdk/android/src/jni/audio_device/audio_device_module.cc
index 4331db2..c81e548 100644
--- a/sdk/android/src/jni/audio_device/audio_device_module.cc
+++ b/sdk/android/src/jni/audio_device/audio_device_module.cc
@@ -10,16 +10,25 @@
 
 #include "sdk/android/src/jni/audio_device/audio_device_module.h"
 
+#include <jni.h>
+
+#include <cstddef>
+#include <cstdint>
 #include <memory>
+#include <optional>
 #include <utility>
 
+#include "api/audio/audio_device.h"
+#include "api/audio/audio_device_defines.h"
 #include "api/environment/environment.h"
 #include "api/make_ref_counted.h"
+#include "api/scoped_refptr.h"
 #include "api/sequence_checker.h"
 #include "modules/audio_device/audio_device_buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "sdk/android/generated_audio_device_module_base_jni/WebRtcAudioManager_jni.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "system_wrappers/include/metrics.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/audio_device/audio_device_module.h b/sdk/android/src/jni/audio_device/audio_device_module.h
index dc7c73d..e8dda87 100644
--- a/sdk/android/src/jni/audio_device/audio_device_module.h
+++ b/sdk/android/src/jni/audio_device/audio_device_module.h
@@ -11,10 +11,14 @@
 #ifndef SDK_ANDROID_SRC_JNI_AUDIO_DEVICE_AUDIO_DEVICE_MODULE_H_
 #define SDK_ANDROID_SRC_JNI_AUDIO_DEVICE_AUDIO_DEVICE_MODULE_H_
 
+#include <jni.h>
+
+#include <cstdint>
 #include <memory>
 #include <optional>
 
 #include "api/audio/audio_device.h"
+#include "api/audio/audio_device_defines.h"
 #include "api/environment/environment.h"
 #include "api/scoped_refptr.h"
 #include "sdk/android/native_api/jni/scoped_java_ref.h"
diff --git a/sdk/android/src/jni/audio_device/audio_record_jni.cc b/sdk/android/src/jni/audio_device/audio_record_jni.cc
index 43706e9..42f79f1 100644
--- a/sdk/android/src/jni/audio_device/audio_record_jni.cc
+++ b/sdk/android/src/jni/audio_device/audio_record_jni.cc
@@ -10,16 +10,21 @@
 
 #include "sdk/android/src/jni/audio_device/audio_record_jni.h"
 
-#include <string>
-#include <utility>
+#include <jni.h>
 
+#include <cstddef>
+#include <cstdint>
+#include <string>
+
+#include "api/audio/audio_device_defines.h"
+#include "modules/audio_device/audio_device_buffer.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
-#include "rtc_base/platform_thread.h"
 #include "rtc_base/time_utils.h"
 #include "sdk/android/generated_java_audio_device_module_native_jni/WebRtcAudioRecord_jni.h"
-#include "sdk/android/src/jni/audio_device/audio_common.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "system_wrappers/include/metrics.h"
 #include "third_party/jni_zero/jni_zero.h"
 
diff --git a/sdk/android/src/jni/audio_device/opensles_common.cc b/sdk/android/src/jni/audio_device/opensles_common.cc
index 8225518..c9735f7 100644
--- a/sdk/android/src/jni/audio_device/opensles_common.cc
+++ b/sdk/android/src/jni/audio_device/opensles_common.cc
@@ -12,9 +12,11 @@
 
 #include <SLES/OpenSLES.h>
 
+#include <cstddef>
 #include <iterator>
 
 #include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
 
 namespace webrtc {
 
diff --git a/sdk/android/src/jni/audio_device/opensles_common.h b/sdk/android/src/jni/audio_device/opensles_common.h
index feface9..a8d5707 100644
--- a/sdk/android/src/jni/audio_device/opensles_common.h
+++ b/sdk/android/src/jni/audio_device/opensles_common.h
@@ -17,7 +17,6 @@
 #include "api/ref_counted_base.h"
 #include "api/sequence_checker.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/logging.h"
 
 namespace webrtc {
 
diff --git a/sdk/android/src/jni/audio_device/opensles_player.cc b/sdk/android/src/jni/audio_device/opensles_player.cc
index 674e6e0..623961f 100644
--- a/sdk/android/src/jni/audio_device/opensles_player.cc
+++ b/sdk/android/src/jni/audio_device/opensles_player.cc
@@ -10,17 +10,27 @@
 
 #include "sdk/android/src/jni/audio_device/opensles_player.h"
 
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
+#include <SLES/OpenSLES_AndroidConfiguration.h>
 #include <android/log.h>
 
+#include <cstddef>
+#include <cstdint>
+#include <cstring>
 #include <iterator>
 #include <memory>
+#include <optional>
+#include <utility>
 
 #include "api/array_view.h"
+#include "api/audio/audio_device_defines.h"
+#include "api/scoped_refptr.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/platform_thread.h"
+#include "rtc_base/platform_thread_types.h"
 #include "rtc_base/time_utils.h"
-#include "sdk/android/src/jni/audio_device/audio_common.h"
+#include "sdk/android/src/jni/audio_device/opensles_common.h"
 
 #define TAG "OpenSLESPlayer"
 #define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
diff --git a/sdk/android/src/jni/audio_device/opensles_player.h b/sdk/android/src/jni/audio_device/opensles_player.h
index 840c593..f655073 100644
--- a/sdk/android/src/jni/audio_device/opensles_player.h
+++ b/sdk/android/src/jni/audio_device/opensles_player.h
@@ -13,8 +13,8 @@
 
 #include <SLES/OpenSLES.h>
 #include <SLES/OpenSLES_Android.h>
-#include <SLES/OpenSLES_AndroidConfiguration.h>
 
+#include <cstdint>
 #include <memory>
 #include <optional>
 
@@ -23,7 +23,6 @@
 #include "api/sequence_checker.h"
 #include "modules/audio_device/audio_device_buffer.h"
 #include "modules/audio_device/fine_audio_buffer.h"
-#include "sdk/android/src/jni/audio_device/audio_common.h"
 #include "sdk/android/src/jni/audio_device/audio_device_module.h"
 #include "sdk/android/src/jni/audio_device/opensles_common.h"
 
diff --git a/sdk/android/src/jni/audio_device/opensles_recorder.cc b/sdk/android/src/jni/audio_device/opensles_recorder.cc
index b34cba9..87eb43e 100644
--- a/sdk/android/src/jni/audio_device/opensles_recorder.cc
+++ b/sdk/android/src/jni/audio_device/opensles_recorder.cc
@@ -10,17 +10,25 @@
 
 #include "sdk/android/src/jni/audio_device/opensles_recorder.h"
 
+#include <SLES/OpenSLES.h>
+#include <SLES/OpenSLES_Android.h>
+#include <SLES/OpenSLES_AndroidConfiguration.h>
 #include <android/log.h>
 
+#include <cstddef>
+#include <cstdint>
 #include <iterator>
 #include <memory>
+#include <utility>
 
 #include "api/array_view.h"
+#include "api/audio/audio_device_defines.h"
+#include "api/scoped_refptr.h"
 #include "modules/audio_device/fine_audio_buffer.h"
 #include "rtc_base/checks.h"
-#include "rtc_base/platform_thread.h"
+#include "rtc_base/platform_thread_types.h"
 #include "rtc_base/time_utils.h"
-#include "sdk/android/src/jni/audio_device/audio_common.h"
+#include "sdk/android/src/jni/audio_device/opensles_common.h"
 
 #define TAG "OpenSLESRecorder"
 #define ALOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, TAG, __VA_ARGS__)
diff --git a/sdk/android/src/jni/audio_device/opensles_recorder.h b/sdk/android/src/jni/audio_device/opensles_recorder.h
index 67e23a4..910f733 100644
--- a/sdk/android/src/jni/audio_device/opensles_recorder.h
+++ b/sdk/android/src/jni/audio_device/opensles_recorder.h
@@ -13,8 +13,8 @@
 
 #include <SLES/OpenSLES.h>
 #include <SLES/OpenSLES_Android.h>
-#include <SLES/OpenSLES_AndroidConfiguration.h>
 
+#include <cstdint>
 #include <memory>
 
 #include "api/audio/audio_device_defines.h"
@@ -22,7 +22,6 @@
 #include "api/sequence_checker.h"
 #include "modules/audio_device/audio_device_buffer.h"
 #include "modules/audio_device/fine_audio_buffer.h"
-#include "sdk/android/src/jni/audio_device/audio_common.h"
 #include "sdk/android/src/jni/audio_device/audio_device_module.h"
 #include "sdk/android/src/jni/audio_device/opensles_common.h"
 
diff --git a/sdk/android/src/jni/builtin_audio_decoder_factory_factory.cc b/sdk/android/src/jni/builtin_audio_decoder_factory_factory.cc
index 5cd95c6..6b80e11 100644
--- a/sdk/android/src/jni/builtin_audio_decoder_factory_factory.cc
+++ b/sdk/android/src/jni/builtin_audio_decoder_factory_factory.cc
@@ -8,10 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include "api/audio_codecs/builtin_audio_decoder_factory.h"
 #include "sdk/android/generated_builtin_audio_codecs_jni/BuiltinAudioDecoderFactoryFactory_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/builtin_audio_encoder_factory_factory.cc b/sdk/android/src/jni/builtin_audio_encoder_factory_factory.cc
index 352b8da..192abf1 100644
--- a/sdk/android/src/jni/builtin_audio_encoder_factory_factory.cc
+++ b/sdk/android/src/jni/builtin_audio_encoder_factory_factory.cc
@@ -8,10 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include "api/audio_codecs/builtin_audio_encoder_factory.h"
 #include "sdk/android/generated_builtin_audio_codecs_jni/BuiltinAudioEncoderFactoryFactory_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/egl_base_10_impl.cc b/sdk/android/src/jni/egl_base_10_impl.cc
index 1bbc703..1c6aaab 100644
--- a/sdk/android/src/jni/egl_base_10_impl.cc
+++ b/sdk/android/src/jni/egl_base_10_impl.cc
@@ -9,6 +9,7 @@
  */
 
 #include <EGL/egl.h>
+#include <jni.h>
 
 #include "sdk/android/generated_video_egl_jni/EglBase10Impl_jni.h"
 
diff --git a/sdk/android/src/jni/encoded_image.cc b/sdk/android/src/jni/encoded_image.cc
index 204fdc7..e38b445 100644
--- a/sdk/android/src/jni/encoded_image.cc
+++ b/sdk/android/src/jni/encoded_image.cc
@@ -10,10 +10,20 @@
 
 #include "sdk/android/src/jni/encoded_image.h"
 
+#include <jni.h>
+
+#include <cstddef>
+#include <cstdint>
+#include <vector>
+
+#include "api/make_ref_counted.h"
 #include "api/video/encoded_image.h"
+#include "api/video/video_frame_type.h"
+#include "api/video/video_rotation.h"
 #include "rtc_base/time_utils.h"
 #include "sdk/android/generated_video_jni/EncodedImage_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
 #include "sdk/android/src/jni/scoped_java_ref_counted.h"
 
diff --git a/sdk/android/src/jni/h264_utils.cc b/sdk/android/src/jni/h264_utils.cc
index 78084d6..5823317 100644
--- a/sdk/android/src/jni/h264_utils.cc
+++ b/sdk/android/src/jni/h264_utils.cc
@@ -8,10 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include "api/video_codecs/h264_profile_level_id.h"
 #include "sdk/android/generated_video_jni/H264Utils_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/video_codec_info.h"
 #include "third_party/jni_zero/jni_zero.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/java_i420_buffer.cc b/sdk/android/src/jni/java_i420_buffer.cc
index f378c08..b903492 100644
--- a/sdk/android/src/jni/java_i420_buffer.cc
+++ b/sdk/android/src/jni/java_i420_buffer.cc
@@ -8,6 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
+#include <cstdint>
+
 #include "rtc_base/checks.h"
 #include "sdk/android/generated_video_jni/JavaI420Buffer_jni.h"
 #include "third_party/jni_zero/jni_zero.h"
diff --git a/sdk/android/src/jni/jni_common.cc b/sdk/android/src/jni/jni_common.cc
index d5b7628..7794f4e 100644
--- a/sdk/android/src/jni/jni_common.cc
+++ b/sdk/android/src/jni/jni_common.cc
@@ -8,7 +8,9 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
-#include "rtc_base/ref_count.h"
+#include <jni.h>
+
+#include "api/ref_count.h"
 #include "sdk/android/generated_base_jni/JniCommon_jni.h"
 #include "sdk/android/src/jni/jni_helpers.h"
 #include "third_party/jni_zero/jni_zero.h"
diff --git a/sdk/android/src/jni/jni_helpers.cc b/sdk/android/src/jni/jni_helpers.cc
index 53399ab..46d6e5c 100644
--- a/sdk/android/src/jni/jni_helpers.cc
+++ b/sdk/android/src/jni/jni_helpers.cc
@@ -9,9 +9,11 @@
  */
 #include "sdk/android/src/jni/jni_helpers.h"
 
-#include <vector>
+#include <jni.h>
 
+#include "rtc_base/checks.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/jvm.cc b/sdk/android/src/jni/jvm.cc
index 1a4292d..fa87e1d 100644
--- a/sdk/android/src/jni/jvm.cc
+++ b/sdk/android/src/jni/jvm.cc
@@ -11,16 +11,22 @@
 #include "sdk/android/src/jni/jvm.h"
 
 #include <asm/unistd.h>
+#include <jni.h>
+#include <linux/prctl.h>
 #include <pthread.h>
 #include <sys/prctl.h>
-#include <sys/syscall.h>
 #include <unistd.h>
 
+#include <cstdio>
 #include <string>
 
 #include "rtc_base/checks.h"
 #include "third_party/jni_zero/jni_zero.h"
 
+#ifdef WEBRTC_ARCH_ARM64
+#include <asm/unistd_64.h>
+#endif
+
 namespace webrtc {
 namespace jni {
 
diff --git a/sdk/android/src/jni/logging/log_sink.cc b/sdk/android/src/jni/logging/log_sink.cc
index 3430da6..a0e5b97 100644
--- a/sdk/android/src/jni/logging/log_sink.cc
+++ b/sdk/android/src/jni/logging/log_sink.cc
@@ -9,8 +9,17 @@
  */
 #include "sdk/android/src/jni/logging/log_sink.h"
 
+#include <jni.h>
+
+#include <string>
+
 #include "absl/strings/string_view.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/logging.h"
 #include "sdk/android/generated_logging_jni/JNILogging_jni.h"
+#include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include "sdk/android/src/jni/jvm.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/logging/log_sink.h b/sdk/android/src/jni/logging/log_sink.h
index 1c4d433..69a3879 100644
--- a/sdk/android/src/jni/logging/log_sink.h
+++ b/sdk/android/src/jni/logging/log_sink.h
@@ -10,12 +10,13 @@
 #ifndef SDK_ANDROID_SRC_JNI_LOGGING_LOG_SINK_H_
 #define SDK_ANDROID_SRC_JNI_LOGGING_LOG_SINK_H_
 
+#include <jni.h>
+
 #include <string>
 
 #include "absl/strings/string_view.h"
 #include "rtc_base/logging.h"
-#include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/native_capturer_observer.cc b/sdk/android/src/jni/native_capturer_observer.cc
index cb2b56a..3d63936 100644
--- a/sdk/android/src/jni/native_capturer_observer.cc
+++ b/sdk/android/src/jni/native_capturer_observer.cc
@@ -10,9 +10,12 @@
 
 #include "sdk/android/src/jni/native_capturer_observer.h"
 
-#include "rtc_base/logging.h"
+#include <jni.h>
+
+#include "api/scoped_refptr.h"
 #include "sdk/android/generated_video_jni/NativeCapturerObserver_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/android_video_track_source.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/DEPS b/sdk/android/src/jni/pc/DEPS
new file mode 100644
index 0000000..2c2c518
--- /dev/null
+++ b/sdk/android/src/jni/pc/DEPS
@@ -0,0 +1,3 @@
+include_rules = [
+  "+p2p",
+]
diff --git a/sdk/android/src/jni/pc/add_ice_candidate_observer.cc b/sdk/android/src/jni/pc/add_ice_candidate_observer.cc
index 57a053a..1fd00d1 100644
--- a/sdk/android/src/jni/pc/add_ice_candidate_observer.cc
+++ b/sdk/android/src/jni/pc/add_ice_candidate_observer.cc
@@ -10,12 +10,13 @@
 
 #include "sdk/android/src/jni/pc/add_ice_candidate_observer.h"
 
-#include <utility>
+#include <jni.h>
 
+#include "api/rtc_error.h"
 #include "sdk/android/generated_peerconnection_jni/AddIceObserver_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
-#include "sdk/media_constraints.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include "sdk/android/src/jni/jvm.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/add_ice_candidate_observer.h b/sdk/android/src/jni/pc/add_ice_candidate_observer.h
index ba47bef..b23f3f3 100644
--- a/sdk/android/src/jni/pc/add_ice_candidate_observer.h
+++ b/sdk/android/src/jni/pc/add_ice_candidate_observer.h
@@ -11,11 +11,11 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_ADD_ICE_CANDIDATE_OBSERVER_H_
 #define SDK_ANDROID_SRC_JNI_PC_ADD_ICE_CANDIDATE_OBSERVER_H_
 
-#include <memory>
-#include <string>
+#include <jni.h>
 
-#include "api/peer_connection_interface.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "api/ref_counted_base.h"
+#include "api/rtc_error.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/audio_track.cc b/sdk/android/src/jni/pc/audio_track.cc
index a204862..1ec0f44 100644
--- a/sdk/android/src/jni/pc/audio_track.cc
+++ b/sdk/android/src/jni/pc/audio_track.cc
@@ -8,7 +8,10 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include "api/media_stream_interface.h"
+#include "api/scoped_refptr.h"
 #include "sdk/android/generated_peerconnection_jni/AudioTrack_jni.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc b/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc
index 4acee15..332aac6 100644
--- a/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc
+++ b/sdk/android/src/jni/pc/call_session_file_rotating_log_sink.cc
@@ -8,7 +8,16 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
+#include <cstddef>
+#include <cstdlib>
+#include <memory>
+#include <string>
+
+#include "rtc_base/file_rotating_stream.h"
 #include "rtc_base/log_sinks.h"
+#include "rtc_base/logging.h"
 #include "sdk/android/generated_peerconnection_jni/CallSessionFileRotatingLogSink_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
diff --git a/sdk/android/src/jni/pc/crypto_options.cc b/sdk/android/src/jni/pc/crypto_options.cc
index 2174ac9..5ce4c85 100644
--- a/sdk/android/src/jni/pc/crypto_options.cc
+++ b/sdk/android/src/jni/pc/crypto_options.cc
@@ -10,7 +10,13 @@
 
 #include "sdk/android/src/jni/pc/crypto_options.h"
 
+#include <jni.h>
+
+#include <optional>
+
+#include "api/crypto/crypto_options.h"
 #include "sdk/android/generated_peerconnection_jni/CryptoOptions_jni.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/data_channel.cc b/sdk/android/src/jni/pc/data_channel.cc
index baf003e..4380bc9 100644
--- a/sdk/android/src/jni/pc/data_channel.cc
+++ b/sdk/android/src/jni/pc/data_channel.cc
@@ -10,14 +10,22 @@
 
 #include "sdk/android/src/jni/pc/data_channel.h"
 
+#include <jni.h>
+
+#include <cstdint>
 #include <limits>
 #include <memory>
+#include <vector>
 
 #include "api/data_channel_interface.h"
-#include "rtc_base/logging.h"
+#include "api/scoped_refptr.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/copy_on_write_buffer.h"
 #include "sdk/android/generated_peerconnection_jni/DataChannel_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "third_party/jni_zero/jni_zero.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/data_channel.h b/sdk/android/src/jni/pc/data_channel.h
index 8ed3b6b..a7db77b 100644
--- a/sdk/android/src/jni/pc/data_channel.h
+++ b/sdk/android/src/jni/pc/data_channel.h
@@ -11,8 +11,11 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_DATA_CHANNEL_H_
 #define SDK_ANDROID_SRC_JNI_PC_DATA_CHANNEL_H_
 
+#include <jni.h>
+
 #include "api/data_channel_interface.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "api/scoped_refptr.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/dtmf_sender.cc b/sdk/android/src/jni/pc/dtmf_sender.cc
index 1515677..54197c1 100644
--- a/sdk/android/src/jni/pc/dtmf_sender.cc
+++ b/sdk/android/src/jni/pc/dtmf_sender.cc
@@ -8,10 +8,11 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include "api/dtmf_sender_interface.h"
 #include "sdk/android/generated_peerconnection_jni/DtmfSender_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
 #include "third_party/jni_zero/jni_zero.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/ice_candidate.h b/sdk/android/src/jni/pc/ice_candidate.h
index 2267f30..a9f0dfe 100644
--- a/sdk/android/src/jni/pc/ice_candidate.h
+++ b/sdk/android/src/jni/pc/ice_candidate.h
@@ -11,14 +11,19 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_ICE_CANDIDATE_H_
 #define SDK_ANDROID_SRC_JNI_PC_ICE_CANDIDATE_H_
 
+#include <jni.h>
+
+#include <memory>
+#include <optional>
 #include <vector>
 
-#include "api/data_channel_interface.h"
+#include "api/candidate.h"
 #include "api/jsep.h"
 #include "api/peer_connection_interface.h"
-#include "api/rtp_parameters.h"
+#include "api/transport/enums.h"
+#include "rtc_base/network_constants.h"
 #include "rtc_base/ssl_identity.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/logging.cc b/sdk/android/src/jni/pc/logging.cc
index 6cd78b2..9230d48 100644
--- a/sdk/android/src/jni/pc/logging.cc
+++ b/sdk/android/src/jni/pc/logging.cc
@@ -10,7 +10,9 @@
 
 #include "rtc_base/logging.h"
 
-#include <memory>
+#include <jni.h>
+
+#include <string>
 
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/src/jni/jni_helpers.h"
diff --git a/sdk/android/src/jni/pc/media_constraints.cc b/sdk/android/src/jni/pc/media_constraints.cc
index 4e1a3ba..97a78dd 100644
--- a/sdk/android/src/jni/pc/media_constraints.cc
+++ b/sdk/android/src/jni/pc/media_constraints.cc
@@ -10,11 +10,14 @@
 
 #include "sdk/android/src/jni/pc/media_constraints.h"
 
+#include <jni.h>
+
 #include <memory>
 
 #include "sdk/android/generated_peerconnection_jni/MediaConstraints_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include "sdk/media_constraints.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/media_source.cc b/sdk/android/src/jni/pc/media_source.cc
index 186ad95..58d650e 100644
--- a/sdk/android/src/jni/pc/media_source.cc
+++ b/sdk/android/src/jni/pc/media_source.cc
@@ -8,6 +8,8 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include "api/media_stream_interface.h"
 #include "sdk/android/generated_peerconnection_jni/MediaSource_jni.h"
 #include "third_party/jni_zero/jni_zero.h"
diff --git a/sdk/android/src/jni/pc/media_stream.cc b/sdk/android/src/jni/pc/media_stream.cc
index b23b614..00f26a6 100644
--- a/sdk/android/src/jni/pc/media_stream.cc
+++ b/sdk/android/src/jni/pc/media_stream.cc
@@ -10,11 +10,18 @@
 
 #include "sdk/android/src/jni/pc/media_stream.h"
 
+#include <jni.h>
+
 #include <memory>
 
+#include "api/media_stream_interface.h"
+#include "api/scoped_refptr.h"
+#include "pc/media_stream_observer.h"
 #include "sdk/android/generated_peerconnection_jni/MediaStream_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/media_stream_track.cc b/sdk/android/src/jni/pc/media_stream_track.cc
index d3eb4e8..28c4382 100644
--- a/sdk/android/src/jni/pc/media_stream_track.cc
+++ b/sdk/android/src/jni/pc/media_stream_track.cc
@@ -10,10 +10,13 @@
 
 #include "sdk/android/src/jni/pc/media_stream_track.h"
 
+#include <jni.h>
+
 #include "api/media_stream_interface.h"
+#include "api/media_types.h"
 #include "sdk/android/generated_peerconnection_jni/MediaStreamTrack_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/owned_factory_and_threads.cc b/sdk/android/src/jni/pc/owned_factory_and_threads.cc
index 7c83de6..ccf360c 100644
--- a/sdk/android/src/jni/pc/owned_factory_and_threads.cc
+++ b/sdk/android/src/jni/pc/owned_factory_and_threads.cc
@@ -10,7 +10,13 @@
 
 #include "sdk/android/src/jni/pc/owned_factory_and_threads.h"
 
-#include "sdk/android/src/jni/jni_helpers.h"
+#include <memory>
+#include <utility>
+
+#include "api/peer_connection_interface.h"
+#include "api/scoped_refptr.h"
+#include "rtc_base/socket_factory.h"
+#include "rtc_base/thread.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/peer_connection.cc b/sdk/android/src/jni/pc/peer_connection.cc
index 4d51c41..c218cbf 100644
--- a/sdk/android/src/jni/pc/peer_connection.cc
+++ b/sdk/android/src/jni/pc/peer_connection.cc
@@ -27,37 +27,62 @@
 
 #include "sdk/android/src/jni/pc/peer_connection.h"
 
-#include <limits>
+#include <jni.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <cstddef>
+#include <cstdio>
 #include <memory>
 #include <string>
+#include <tuple>
 #include <utility>
+#include <vector>
 
+#include "api/candidate.h"
+#include "api/data_channel_interface.h"
+#include "api/jsep.h"
+#include "api/make_ref_counted.h"
+#include "api/media_stream_interface.h"
 #include "api/peer_connection_interface.h"
+#include "api/rtc_error.h"
+#include "api/rtc_event_log/rtc_event_log.h"
 #include "api/rtc_event_log_output_file.h"
 #include "api/rtp_receiver_interface.h"
 #include "api/rtp_sender_interface.h"
 #include "api/rtp_transceiver_interface.h"
+#include "api/scoped_refptr.h"
+#include "api/transport/bitrate_settings.h"
+#include "p2p/base/port.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
+#include "rtc_base/rtc_certificate.h"
+#include "rtc_base/ssl_identity.h"
 #include "sdk/android/generated_peerconnection_jni/CandidatePairChangeEvent_jni.h"
 #include "sdk/android/generated_peerconnection_jni/IceCandidateErrorEvent_jni.h"
 #include "sdk/android/generated_peerconnection_jni/PeerConnection_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "sdk/android/src/jni/pc/add_ice_candidate_observer.h"
 #include "sdk/android/src/jni/pc/crypto_options.h"
 #include "sdk/android/src/jni/pc/data_channel.h"
 #include "sdk/android/src/jni/pc/ice_candidate.h"
 #include "sdk/android/src/jni/pc/media_constraints.h"
+#include "sdk/android/src/jni/pc/media_stream.h"
 #include "sdk/android/src/jni/pc/media_stream_track.h"
 #include "sdk/android/src/jni/pc/rtc_certificate.h"
 #include "sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.h"
+#include "sdk/android/src/jni/pc/rtp_receiver.h"
 #include "sdk/android/src/jni/pc/rtp_sender.h"
+#include "sdk/android/src/jni/pc/rtp_transceiver.h"
 #include "sdk/android/src/jni/pc/sdp_observer.h"
 #include "sdk/android/src/jni/pc/session_description.h"
 #include "sdk/android/src/jni/pc/stats_observer.h"
 #include "sdk/android/src/jni/pc/turn_customizer.h"
+#include "sdk/media_constraints.h"
 #include "third_party/jni_zero/jni_zero.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/peer_connection.h b/sdk/android/src/jni/pc/peer_connection.h
index d48ca47..2f8416a 100644
--- a/sdk/android/src/jni/pc/peer_connection.h
+++ b/sdk/android/src/jni/pc/peer_connection.h
@@ -11,17 +11,28 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_PEER_CONNECTION_H_
 #define SDK_ANDROID_SRC_JNI_PC_PEER_CONNECTION_H_
 
+#include <jni.h>
+
 #include <map>
 #include <memory>
+#include <string>
 #include <vector>
 
+#include "api/candidate.h"
+#include "api/data_channel_interface.h"
+#include "api/jsep.h"
+#include "api/media_stream_interface.h"
 #include "api/peer_connection_interface.h"
-#include "pc/media_stream_observer.h"
-#include "sdk/android/src/jni/jni_helpers.h"
-#include "sdk/android/src/jni/pc/media_constraints.h"
+#include "api/rtp_receiver_interface.h"
+#include "api/rtp_transceiver_interface.h"
+#include "api/scoped_refptr.h"
+#include "p2p/base/port.h"
+#include "rtc_base/ssl_identity.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/pc/media_stream.h"
 #include "sdk/android/src/jni/pc/rtp_receiver.h"
 #include "sdk/android/src/jni/pc/rtp_transceiver.h"
+#include "sdk/media_constraints.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/rtc_certificate.cc b/sdk/android/src/jni/pc/rtc_certificate.cc
index 86e892c..dffe8ea 100644
--- a/sdk/android/src/jni/pc/rtc_certificate.cc
+++ b/sdk/android/src/jni/pc/rtc_certificate.cc
@@ -10,12 +10,17 @@
 
 #include "sdk/android/src/jni/pc/rtc_certificate.h"
 
-#include "rtc_base/ref_count.h"
+#include <jni.h>
+
+#include <cstdint>
+
+#include "api/scoped_refptr.h"
 #include "rtc_base/rtc_certificate.h"
 #include "rtc_base/rtc_certificate_generator.h"
+#include "rtc_base/ssl_identity.h"
 #include "sdk/android/generated_peerconnection_jni/RtcCertificatePem_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/pc/ice_candidate.h"
 #include "third_party/jni_zero/jni_zero.h"
 
diff --git a/sdk/android/src/jni/pc/rtc_certificate.h b/sdk/android/src/jni/pc/rtc_certificate.h
index eab27f1..f3be2f5 100644
--- a/sdk/android/src/jni/pc/rtc_certificate.h
+++ b/sdk/android/src/jni/pc/rtc_certificate.h
@@ -11,10 +11,10 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_RTC_CERTIFICATE_H_
 #define SDK_ANDROID_SRC_JNI_PC_RTC_CERTIFICATE_H_
 
-#include "rtc_base/ref_count.h"
+#include <jni.h>
+
 #include "rtc_base/rtc_certificate.h"
-#include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.cc b/sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.cc
index 3017a0f..094b889 100644
--- a/sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.cc
+++ b/sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.cc
@@ -10,16 +10,27 @@
 
 #include "sdk/android/src/jni/pc/rtc_stats_collector_callback_wrapper.h"
 
+#include <jni.h>
+
+#include <cstdint>
+#include <map>
 #include <string>
+#include <utility>
 #include <vector>
 
-#include "rtc_base/string_encode.h"
+#include "absl/strings/str_cat.h"
+#include "api/scoped_refptr.h"
+#include "api/stats/attribute.h"
+#include "api/stats/rtc_stats.h"
+#include "api/stats/rtc_stats_report.h"
+#include "rtc_base/checks.h"
 #include "sdk/android/generated_external_classes_jni/BigInteger_jni.h"
 #include "sdk/android/generated_peerconnection_jni/RTCStatsCollectorCallback_jni.h"
 #include "sdk/android/generated_peerconnection_jni/RTCStatsReport_jni.h"
 #include "sdk/android/generated_peerconnection_jni/RTCStats_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/rtp_capabilities.cc b/sdk/android/src/jni/pc/rtp_capabilities.cc
index 09157be..acc4731 100644
--- a/sdk/android/src/jni/pc/rtp_capabilities.cc
+++ b/sdk/android/src/jni/pc/rtp_capabilities.cc
@@ -10,9 +10,12 @@
 
 #include "sdk/android/src/jni/pc/rtp_capabilities.h"
 
+#include <jni.h>
+
+#include "api/rtp_parameters.h"
 #include "sdk/android/generated_peerconnection_jni/RtpCapabilities_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/pc/media_stream_track.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/rtp_parameters.cc b/sdk/android/src/jni/pc/rtp_parameters.cc
index c83ea85..3259f68 100644
--- a/sdk/android/src/jni/pc/rtp_parameters.cc
+++ b/sdk/android/src/jni/pc/rtp_parameters.cc
@@ -10,9 +10,16 @@
 
 #include "sdk/android/src/jni/pc/rtp_parameters.h"
 
+#include <jni.h>
+
+#include <string>
+
+#include "api/priority.h"
+#include "api/rtp_parameters.h"
+#include "rtc_base/checks.h"
 #include "sdk/android/generated_peerconnection_jni/RtpParameters_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/pc/media_stream_track.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/rtp_receiver.cc b/sdk/android/src/jni/pc/rtp_receiver.cc
index 81dcd4a..13e92fa 100644
--- a/sdk/android/src/jni/pc/rtp_receiver.cc
+++ b/sdk/android/src/jni/pc/rtp_receiver.cc
@@ -10,9 +10,18 @@
 
 #include "sdk/android/src/jni/pc/rtp_receiver.h"
 
+#include <jni.h>
+
+#include "api/crypto/frame_decryptor_interface.h"
+#include "api/media_types.h"
+#include "api/rtp_parameters.h"
+#include "api/rtp_receiver_interface.h"
+#include "api/scoped_refptr.h"
 #include "sdk/android/generated_peerconnection_jni/RtpReceiver_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "sdk/android/src/jni/pc/media_stream_track.h"
 #include "sdk/android/src/jni/pc/rtp_parameters.h"
 #include "third_party/jni_zero/jni_zero.h"
diff --git a/sdk/android/src/jni/pc/rtp_sender.cc b/sdk/android/src/jni/pc/rtp_sender.cc
index c3dd3a2..6966ada 100644
--- a/sdk/android/src/jni/pc/rtp_sender.cc
+++ b/sdk/android/src/jni/pc/rtp_sender.cc
@@ -10,8 +10,19 @@
 
 #include "sdk/android/src/jni/pc/rtp_sender.h"
 
+#include <jni.h>
+
+#include <string>
+
+#include "api/crypto/frame_encryptor_interface.h"
+#include "api/media_stream_interface.h"
+#include "api/media_types.h"
+#include "api/rtp_parameters.h"
+#include "api/rtp_sender_interface.h"
+#include "api/scoped_refptr.h"
 #include "sdk/android/generated_peerconnection_jni/RtpSender_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
 #include "sdk/android/src/jni/pc/rtp_parameters.h"
 #include "third_party/jni_zero/jni_zero.h"
diff --git a/sdk/android/src/jni/pc/rtp_transceiver.cc b/sdk/android/src/jni/pc/rtp_transceiver.cc
index 8818438..0d2e13f 100644
--- a/sdk/android/src/jni/pc/rtp_transceiver.cc
+++ b/sdk/android/src/jni/pc/rtp_transceiver.cc
@@ -10,12 +10,24 @@
 
 #include "sdk/android/src/jni/pc/rtp_transceiver.h"
 
-#include <string>
+#include <jni.h>
 
+#include <optional>
+#include <string>
+#include <vector>
+
+#include "api/rtc_error.h"
+#include "api/rtp_parameters.h"
+#include "api/rtp_transceiver_direction.h"
+#include "api/rtp_transceiver_interface.h"
+#include "api/scoped_refptr.h"
+#include "rtc_base/logging.h"
 #include "sdk/android/generated_peerconnection_jni/RtpTransceiver_jni.h"
 #include "sdk/android/generated_rtcerror_jni/RtcError_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "sdk/android/src/jni/pc/media_stream_track.h"
 #include "sdk/android/src/jni/pc/rtp_capabilities.h"
 #include "sdk/android/src/jni/pc/rtp_parameters.h"
diff --git a/sdk/android/src/jni/pc/sdp_observer.cc b/sdk/android/src/jni/pc/sdp_observer.cc
index 2b5d8e2..6994cc4 100644
--- a/sdk/android/src/jni/pc/sdp_observer.cc
+++ b/sdk/android/src/jni/pc/sdp_observer.cc
@@ -10,11 +10,20 @@
 
 #include "sdk/android/src/jni/pc/sdp_observer.h"
 
+#include <jni.h>
+
+#include <memory>
+#include <string>
 #include <utility>
 
+#include "api/jsep.h"
+#include "api/rtc_error.h"
+#include "rtc_base/checks.h"
 #include "sdk/android/generated_peerconnection_jni/SdpObserver_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include "sdk/android/src/jni/jvm.h"
+#include "sdk/android/src/jni/pc/session_description.h"
 #include "sdk/media_constraints.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/sdp_observer.h b/sdk/android/src/jni/pc/sdp_observer.h
index b33a301..e561601 100644
--- a/sdk/android/src/jni/pc/sdp_observer.h
+++ b/sdk/android/src/jni/pc/sdp_observer.h
@@ -11,12 +11,15 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_SDP_OBSERVER_H_
 #define SDK_ANDROID_SRC_JNI_PC_SDP_OBSERVER_H_
 
-#include <memory>
-#include <string>
+#include <jni.h>
 
-#include "api/peer_connection_interface.h"
-#include "sdk/android/src/jni/jni_helpers.h"
-#include "sdk/android/src/jni/pc/session_description.h"
+#include <memory>
+
+#include "api/jsep.h"
+#include "api/rtc_error.h"
+#include "api/set_local_description_observer_interface.h"
+#include "api/set_remote_description_observer_interface.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/media_constraints.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/pc/session_description.cc b/sdk/android/src/jni/pc/session_description.cc
index 64b2dae..193e35e 100644
--- a/sdk/android/src/jni/pc/session_description.cc
+++ b/sdk/android/src/jni/pc/session_description.cc
@@ -10,12 +10,17 @@
 
 #include "sdk/android/src/jni/pc/session_description.h"
 
+#include <jni.h>
+
+#include <memory>
+#include <optional>
 #include <string>
 
+#include "api/jsep.h"
 #include "rtc_base/logging.h"
 #include "sdk/android/generated_peerconnection_jni/SessionDescription_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc b/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc
index 2b1421d..ce61720 100644
--- a/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc
+++ b/sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.cc
@@ -10,10 +10,13 @@
 
 #include "sdk/android/src/jni/pc/ssl_certificate_verifier_wrapper.h"
 
+#include <jni.h>
+
+#include "rtc_base/buffer.h"
+#include "rtc_base/ssl_certificate.h"
 #include "sdk/android/generated_peerconnection_jni/SSLCertificateVerifier_jni.h"
-#include "sdk/android/native_api/jni/class_loader.h"
-#include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/stats_observer.cc b/sdk/android/src/jni/pc/stats_observer.cc
index 7511100..0a42bc0 100644
--- a/sdk/android/src/jni/pc/stats_observer.cc
+++ b/sdk/android/src/jni/pc/stats_observer.cc
@@ -10,12 +10,17 @@
 
 #include "sdk/android/src/jni/pc/stats_observer.h"
 
+#include <jni.h>
+
 #include <vector>
 
+#include "api/legacy_stats_types.h"
+#include "api/scoped_refptr.h"
 #include "sdk/android/generated_peerconnection_jni/StatsObserver_jni.h"
 #include "sdk/android/generated_peerconnection_jni/StatsReport_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include "sdk/android/src/jni/jvm.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/stats_observer.h b/sdk/android/src/jni/pc/stats_observer.h
index 0cfd433..48606ba 100644
--- a/sdk/android/src/jni/pc/stats_observer.h
+++ b/sdk/android/src/jni/pc/stats_observer.h
@@ -11,8 +11,11 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_STATS_OBSERVER_H_
 #define SDK_ANDROID_SRC_JNI_PC_STATS_OBSERVER_H_
 
+#include <jni.h>
+
+#include "api/legacy_stats_types.h"
 #include "api/peer_connection_interface.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/turn_customizer.cc b/sdk/android/src/jni/pc/turn_customizer.cc
index b79fe51..34e9636 100644
--- a/sdk/android/src/jni/pc/turn_customizer.cc
+++ b/sdk/android/src/jni/pc/turn_customizer.cc
@@ -10,9 +10,11 @@
 
 #include "api/turn_customizer.h"
 
+#include <jni.h>
+
 #include "sdk/android/generated_peerconnection_jni/TurnCustomizer_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/pc/turn_customizer.h b/sdk/android/src/jni/pc/turn_customizer.h
index 359234f..59d3bce 100644
--- a/sdk/android/src/jni/pc/turn_customizer.h
+++ b/sdk/android/src/jni/pc/turn_customizer.h
@@ -11,6 +11,8 @@
 #ifndef SDK_ANDROID_SRC_JNI_PC_TURN_CUSTOMIZER_H_
 #define SDK_ANDROID_SRC_JNI_PC_TURN_CUSTOMIZER_H_
 
+#include <jni.h>
+
 #include "api/turn_customizer.h"
 #include "sdk/android/native_api/jni/scoped_java_ref.h"
 
diff --git a/sdk/android/src/jni/scoped_java_ref_counted.cc b/sdk/android/src/jni/scoped_java_ref_counted.cc
index 77ccba7..75344f3 100644
--- a/sdk/android/src/jni/scoped_java_ref_counted.cc
+++ b/sdk/android/src/jni/scoped_java_ref_counted.cc
@@ -10,9 +10,12 @@
 
 #include "sdk/android/src/jni/scoped_java_ref_counted.h"
 
+#include <jni.h>
+
 #include "rtc_base/checks.h"
 #include "sdk/android/generated_base_jni/RefCounted_jni.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 #define CHECK_EXCEPTION(jni)        \
   RTC_CHECK(!jni->ExceptionCheck()) \
diff --git a/sdk/android/src/jni/scoped_java_ref_counted.h b/sdk/android/src/jni/scoped_java_ref_counted.h
index 3ea2262..57bb43c 100644
--- a/sdk/android/src/jni/scoped_java_ref_counted.h
+++ b/sdk/android/src/jni/scoped_java_ref_counted.h
@@ -10,6 +10,8 @@
 #ifndef SDK_ANDROID_SRC_JNI_SCOPED_JAVA_REF_COUNTED_H_
 #define SDK_ANDROID_SRC_JNI_SCOPED_JAVA_REF_COUNTED_H_
 
+#include <jni.h>
+
 #include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/software_video_decoder_factory.cc b/sdk/android/src/jni/software_video_decoder_factory.cc
index cc82e51..8ce0333 100644
--- a/sdk/android/src/jni/software_video_decoder_factory.cc
+++ b/sdk/android/src/jni/software_video_decoder_factory.cc
@@ -8,15 +8,15 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include <memory>
 
 #include "api/environment/environment.h"
 #include "api/video_codecs/builtin_video_decoder_factory.h"
-#include "api/video_codecs/video_decoder.h"
 #include "api/video_codecs/video_decoder_factory.h"
 #include "sdk/android/generated_swcodecs_jni/SoftwareVideoDecoderFactory_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
 #include "sdk/android/src/jni/video_codec_info.h"
 #include "third_party/jni_zero/jni_zero.h"
 
diff --git a/sdk/android/src/jni/software_video_encoder_factory.cc b/sdk/android/src/jni/software_video_encoder_factory.cc
index 344a459..e288256 100644
--- a/sdk/android/src/jni/software_video_encoder_factory.cc
+++ b/sdk/android/src/jni/software_video_encoder_factory.cc
@@ -8,12 +8,13 @@
  *  be found in the AUTHORS file in the root of the source tree.
  */
 
+#include <jni.h>
+
 #include "api/environment/environment.h"
 #include "api/video_codecs/builtin_video_encoder_factory.h"
-#include "api/video_codecs/video_encoder.h"
+#include "api/video_codecs/video_encoder_factory.h"
 #include "sdk/android/generated_swcodecs_jni/SoftwareVideoEncoderFactory_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
 #include "sdk/android/src/jni/video_codec_info.h"
 #include "third_party/jni_zero/jni_zero.h"
 
diff --git a/sdk/android/src/jni/video_codec_info.cc b/sdk/android/src/jni/video_codec_info.cc
index a218a1d..8ba7274 100644
--- a/sdk/android/src/jni/video_codec_info.cc
+++ b/sdk/android/src/jni/video_codec_info.cc
@@ -10,9 +10,12 @@
 
 #include "sdk/android/src/jni/video_codec_info.h"
 
+#include <jni.h>
+
+#include "api/video_codecs/sdp_video_format.h"
 #include "sdk/android/generated_video_jni/VideoCodecInfo_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/video_codec_status.cc b/sdk/android/src/jni/video_codec_status.cc
index e34d6d6..a543323 100644
--- a/sdk/android/src/jni/video_codec_status.cc
+++ b/sdk/android/src/jni/video_codec_status.cc
@@ -10,7 +10,12 @@
 
 #include "sdk/android/src/jni/video_codec_status.h"
 
+#include <jni.h>
+
+#include <cstdint>
+
 #include "sdk/android/generated_video_jni/VideoCodecStatus_jni.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 
 namespace webrtc {
 namespace jni {
diff --git a/sdk/android/src/jni/video_decoder_factory_wrapper.cc b/sdk/android/src/jni/video_decoder_factory_wrapper.cc
index 0e06cd2..e5d6a86 100644
--- a/sdk/android/src/jni/video_decoder_factory_wrapper.cc
+++ b/sdk/android/src/jni/video_decoder_factory_wrapper.cc
@@ -10,13 +10,18 @@
 
 #include "sdk/android/src/jni/video_decoder_factory_wrapper.h"
 
+#include <jni.h>
+
+#include <memory>
+#include <vector>
+
 #include "api/environment/environment.h"
 #include "api/video_codecs/sdp_video_format.h"
 #include "api/video_codecs/video_decoder.h"
-#include "rtc_base/logging.h"
 #include "sdk/android/generated_video_jni/VideoDecoderFactory_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/video_codec_info.h"
 #include "sdk/android/src/jni/video_decoder_wrapper.h"
 
diff --git a/sdk/android/src/jni/video_decoder_wrapper.cc b/sdk/android/src/jni/video_decoder_wrapper.cc
index f8d1161..0bd53dd 100644
--- a/sdk/android/src/jni/video_decoder_wrapper.cc
+++ b/sdk/android/src/jni/video_decoder_wrapper.cc
@@ -10,24 +10,33 @@
 
 #include "sdk/android/src/jni/video_decoder_wrapper.h"
 
+#include <jni.h>
+
+#include <cstdint>
+#include <memory>
+#include <optional>
+
 #include "absl/memory/memory.h"
-#include "api/environment/environment.h"
+#include "api/sequence_checker.h"
 #include "api/video/render_resolution.h"
+#include "api/video/video_codec_type.h"
 #include "api/video/video_frame.h"
 #include "api/video_codecs/video_decoder.h"
-#include "modules/video_coding/include/video_codec_interface.h"
 #include "modules/video_coding/include/video_error_codes.h"
 #include "modules/video_coding/utility/vp8_header_parser.h"
 #include "modules/video_coding/utility/vp9_uncompressed_header_parser.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
+#include "rtc_base/race_checker.h"
+#include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/time_utils.h"
 #include "sdk/android/generated_video_jni/VideoDecoderWrapper_jni.h"
 #include "sdk/android/generated_video_jni/VideoDecoder_jni.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/encoded_image.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "sdk/android/src/jni/video_codec_status.h"
 #include "sdk/android/src/jni/video_frame.h"
 
diff --git a/sdk/android/src/jni/video_encoder_factory_wrapper.cc b/sdk/android/src/jni/video_encoder_factory_wrapper.cc
index 3bc25ed..6a0e62a 100644
--- a/sdk/android/src/jni/video_encoder_factory_wrapper.cc
+++ b/sdk/android/src/jni/video_encoder_factory_wrapper.cc
@@ -10,13 +10,22 @@
 
 #include "sdk/android/src/jni/video_encoder_factory_wrapper.h"
 
+#include <jni.h>
+
+#include <memory>
+#include <optional>
+#include <vector>
+
+#include "api/environment/environment.h"
+#include "api/units/data_rate.h"
 #include "api/video/render_resolution.h"
+#include "api/video_codecs/sdp_video_format.h"
 #include "api/video_codecs/video_encoder.h"
-#include "rtc_base/logging.h"
+#include "api/video_codecs/video_encoder_factory.h"
 #include "sdk/android/generated_video_jni/VideoEncoderFactory_jni.h"
-#include "sdk/android/native_api/jni/class_loader.h"
 #include "sdk/android/native_api/jni/java_types.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/video_codec_info.h"
 #include "sdk/android/src/jni/video_encoder_wrapper.h"
 
diff --git a/sdk/android/src/jni/video_encoder_wrapper.cc b/sdk/android/src/jni/video_encoder_wrapper.cc
index 8799fdf..aaeda72 100644
--- a/sdk/android/src/jni/video_encoder_wrapper.cc
+++ b/sdk/android/src/jni/video_encoder_wrapper.cc
@@ -10,24 +10,43 @@
 
 #include "sdk/android/src/jni/video_encoder_wrapper.h"
 
-#include <utility>
+#include <jni.h>
+
+#include <array>
+#include <cstdint>
+#include <memory>
+#include <optional>
+#include <vector>
 
 #include "absl/memory/memory.h"
-#include "common_video/h264/h264_common.h"
+#include "api/array_view.h"
+#include "api/video/render_resolution.h"
+#include "api/video/video_bitrate_allocation.h"
+#include "api/video/video_codec_constants.h"
+#include "api/video/video_codec_type.h"
+#include "api/video/video_frame.h"
+#include "api/video/video_frame_type.h"
+#include "api/video_codecs/video_codec.h"
+#include "api/video_codecs/video_encoder.h"
+#include "modules/video_coding/codecs/interface/common_constants.h"
+#include "modules/video_coding/codecs/vp9/include/vp9_globals.h"
 #include "modules/video_coding/include/video_codec_interface.h"
 #include "modules/video_coding/include/video_error_codes.h"
 #include "modules/video_coding/svc/scalable_video_controller_no_layering.h"
 #include "modules/video_coding/utility/vp8_header_parser.h"
 #include "modules/video_coding/utility/vp9_uncompressed_header_parser.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/synchronization/mutex.h"
 #include "rtc_base/time_utils.h"
 #include "sdk/android/generated_video_jni/VideoEncoderWrapper_jni.h"
 #include "sdk/android/generated_video_jni/VideoEncoder_jni.h"
 #include "sdk/android/native_api/jni/class_loader.h"
 #include "sdk/android/native_api/jni/java_types.h"
-#include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/encoded_image.h"
 #include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "sdk/android/src/jni/video_codec_status.h"
 #include "sdk/android/src/jni/video_frame.h"
 
diff --git a/sdk/android/src/jni/video_frame.cc b/sdk/android/src/jni/video_frame.cc
index 910778c..7f70101 100644
--- a/sdk/android/src/jni/video_frame.cc
+++ b/sdk/android/src/jni/video_frame.cc
@@ -10,11 +10,20 @@
 
 #include "sdk/android/src/jni/video_frame.h"
 
+#include <jni.h>
+
+#include <cstdint>
+
+#include "api/make_ref_counted.h"
 #include "api/scoped_refptr.h"
-#include "common_video/include/video_frame_buffer.h"
+#include "api/video/video_frame.h"
+#include "api/video/video_frame_buffer.h"
+#include "api/video/video_rotation.h"
+#include "rtc_base/checks.h"
 #include "rtc_base/time_utils.h"
 #include "sdk/android/generated_video_jni/VideoFrame_jni.h"
-#include "sdk/android/src/jni/jni_helpers.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
+#include "sdk/android/src/jni/jvm.h"
 #include "sdk/android/src/jni/wrapped_native_i420_buffer.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/video_sink.cc b/sdk/android/src/jni/video_sink.cc
index 1855eb8..72d2d21 100644
--- a/sdk/android/src/jni/video_sink.cc
+++ b/sdk/android/src/jni/video_sink.cc
@@ -10,8 +10,12 @@
 
 #include "sdk/android/src/jni/video_sink.h"
 
+#include <jni.h>
+
+#include "api/video/video_frame.h"
 #include "sdk/android/generated_video_jni/VideoSink_jni.h"
 #include "sdk/android/native_api/jni/jvm.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/video_frame.h"
 
 namespace webrtc {
diff --git a/sdk/android/src/jni/wrapped_native_i420_buffer.cc b/sdk/android/src/jni/wrapped_native_i420_buffer.cc
index c28336a..d05a439 100644
--- a/sdk/android/src/jni/wrapped_native_i420_buffer.cc
+++ b/sdk/android/src/jni/wrapped_native_i420_buffer.cc
@@ -10,7 +10,14 @@
 
 #include "sdk/android/src/jni/wrapped_native_i420_buffer.h"
 
+#include <jni.h>
+
+#include <cstdint>
+
+#include "api/scoped_refptr.h"
+#include "api/video/video_frame_buffer.h"
 #include "sdk/android/generated_video_jni/WrappedNativeI420Buffer_jni.h"
+#include "sdk/android/native_api/jni/scoped_java_ref.h"
 #include "sdk/android/src/jni/jni_helpers.h"
 
 namespace webrtc {