如何在 GeckoView 中禁用 WebRTC

Nem*_*emo 6 android webrtc geckoview

使用GeckoView时,是否可以禁用WebRTC?以编程方式还是在构建时(例如在build.gradle)?

语境:

我们正在构建一个 Android 应用程序,我们希望在 Web 视图中运行无需互联网访问的迷你 Web 应用程序。使用系统 webview 时,无法限制互联网访问,因为webapp 始终可以使用 WebRTC 来规避互联网限制

因此,我们正在考虑切换到 GeckoView,但不确定这是否有帮助。

研究:

在 Firefox 中,似乎可以使用 about:config 禁用 WebRTC,但在GeckoView 的 API中,我既找不到设置about:config首选项的方法,也找不到直接禁用 WebRTC 的 API。

对于正常的互联网请求,似乎可以阻止它们

小智 5

您可以通过media.peerconnection.enabled使用 GeckoViewGeckoRuntimeSettings类将首选项设置为 false 来禁用 WebRTC。

GeckoRuntimeSettings.Builder builder = new GeckoRuntimeSettings.Builder();
builder.preferences().setBoolean("media.peerconnection.enabled", false);
GeckoRuntime geckoRuntime = GeckoRuntime.create(this, builder.build());
Run Code Online (Sandbox Code Playgroud)

这将禁用整个应用程序的 WebRTC。

或者,在构建时 - 您可以通过将以下行添加到AndroidManifest.xml文件中来禁用 WebRTC:

<meta-data android:name="org.mozilla.geckoview.WebRTC" android:value="false" />
Run Code Online (Sandbox Code Playgroud)

否则,您可以将以下行添加到您的build.gradle文件中,为您的应用程序的所有版本禁用 WebRTC:

android {
    defaultConfig {
        ...
        manifestPlaceholders = [geckoviewWebRTC: "false"]
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将以下行添加到您的AndroidManifest.xml文件中:

<meta-data android:name="org.mozilla.geckoview.WebRTC" android:value="${geckoviewWebRTC}" />
Run Code Online (Sandbox Code Playgroud)

这将为您的所有应用程序禁用 WebRTC。


小智 2

查看源代码https://hg.mozilla.org/mozilla-central/file/tip/mobile/android/geckoview/build.gradle#l107似乎可以在没有MOZ_WEBRTC变量集的情况下重新编译,以排除所有 WebRTC 源从构建。

也许值得一试。

请看这里,了解如何自定义配置来重建库