diff --git a/widget/android/AndroidBridge.cpp b/widget/android/AndroidBridge.cpp
index 50a2d93f98953eade42f214847b373e3a61c04a5..024b64036dc4e3faf9b5a20e47b5f4c5fa913bcb 100644
--- a/widget/android/AndroidBridge.cpp
+++ b/widget/android/AndroidBridge.cpp
@@ -229,57 +229,6 @@ void AndroidBridge::GetIconForExtension(const nsACString& aFileExt,
   env->ReleaseByteArrayElements(arr.Get(), elements, 0);
 }
 
-bool AndroidBridge::GetStaticIntField(const char* className,
-                                      const char* fieldName, int32_t* aInt,
-                                      JNIEnv* jEnv /* = nullptr */) {
-  ALOG_BRIDGE("AndroidBridge::GetStaticIntField %s", fieldName);
-
-  if (!jEnv) {
-    if (!jni::IsAvailable()) {
-      return false;
-    }
-    jEnv = jni::GetGeckoThreadEnv();
-  }
-
-  AutoJNIClass cls(jEnv, className);
-  jfieldID field = cls.getStaticField(fieldName, "I");
-
-  if (!field) {
-    return false;
-  }
-
-  *aInt = static_cast<int32_t>(jEnv->GetStaticIntField(cls.getRawRef(), field));
-  return true;
-}
-
-bool AndroidBridge::GetStaticStringField(const char* className,
-                                         const char* fieldName,
-                                         nsAString& result,
-                                         JNIEnv* jEnv /* = nullptr */) {
-  ALOG_BRIDGE("AndroidBridge::GetStaticStringField %s", fieldName);
-
-  if (!jEnv) {
-    if (!jni::IsAvailable()) {
-      return false;
-    }
-    jEnv = jni::GetGeckoThreadEnv();
-  }
-
-  AutoLocalJNIFrame jniFrame(jEnv, 1);
-  AutoJNIClass cls(jEnv, className);
-  jfieldID field = cls.getStaticField(fieldName, "Ljava/lang/String;");
-
-  if (!field) {
-    return false;
-  }
-
-  jstring jstr = (jstring)jEnv->GetStaticObjectField(cls.getRawRef(), field);
-  if (!jstr) return false;
-
-  result.Assign(jni::String::Ref::From(jstr)->ToString());
-  return true;
-}
-
 namespace mozilla {
 class TracerRunnable : public Runnable {
  public:
diff --git a/widget/android/AndroidBridge.h b/widget/android/AndroidBridge.h
index 9097b217cd7706bf795818f9d1f4bdd8b057cd39..f2070ef31a21aa73489b3266de70f36c927eb962 100644
--- a/widget/android/AndroidBridge.h
+++ b/widget/android/AndroidBridge.h
@@ -65,12 +65,6 @@ class AndroidBridge final {
   void GetIconForExtension(const nsACString& aFileExt, uint32_t aIconSize,
                            uint8_t* const aBuf);
 
-  bool GetStaticStringField(const char* classID, const char* field,
-                            nsAString& result, JNIEnv* env = nullptr);
-
-  bool GetStaticIntField(const char* className, const char* fieldName,
-                         int32_t* aInt, JNIEnv* env = nullptr);
-
   // Returns a global reference to the Context for Fennec's Activity. The
   // caller is responsible for ensuring this doesn't leak by calling
   // DeleteGlobalRef() when the context is no longer needed.
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
index 6f127896e3347854924ac321f3ada89d57f54087..88ee06d78db60a84343fd3d23c16e163aead37c3 100644
--- a/xpcom/components/ManifestParser.cpp
+++ b/xpcom/components/ManifestParser.cpp
@@ -23,7 +23,7 @@
 #endif
 
 #ifdef MOZ_WIDGET_ANDROID
-#  include "AndroidBridge.h"
+#  include "AndroidBuild.h"
 #  include "mozilla/java/GeckoAppShellWrappers.h"
 #endif
 
@@ -471,9 +471,9 @@ void ParseManifest(NSLocationType aType, FileLocation& aFile, char* aBuf,
                             gtk_minor_version);
 #elif defined(MOZ_WIDGET_ANDROID)
   bool isTablet = false;
-  if (mozilla::AndroidBridge::Bridge()) {
-    mozilla::AndroidBridge::Bridge()->GetStaticStringField(
-        "android/os/Build$VERSION", "RELEASE", osVersion);
+  if (jni::IsAvailable()) {
+    jni::String::LocalRef release = java::sdk::Build::VERSION::RELEASE();
+    osVersion.Assign(release->ToString());
     isTablet = java::GeckoAppShell::IsTablet();
   }
 #endif