CronetEngine.Builder

public static class CronetEngine.Builder extends Object

一个用于构建 CronetEngine 的构建器,允许在运行时配置 CronetEngine。配置选项在构建器上设置,然后调用 build() 来创建 CronetEngine

嵌套类摘要

CronetEngine.Builder.LibraryLoader 一个提供加载 cronet 原生库方法的类。

常量摘要

int HTTP_CACHE_DISABLED 用于禁用 HTTP 缓存的设置。
int HTTP_CACHE_DISK 用于启用磁盘缓存(包括 HTTP 数据)的设置。
int HTTP_CACHE_DISK_NO_HTTP 用于启用磁盘缓存(不包括 HTTP 数据)的设置。
int HTTP_CACHE_IN_MEMORY 用于启用内存 HTTP 缓存(包括 HTTP 数据)的设置。

公共构造函数摘要

Builder(Context context)
构造一个 CronetEngine.Builder 对象,该对象用于创建 CronetEngine

公共方法摘要

CronetEngine.Builder
addPublicKeyPins(String hostName, Set<byte[]> pinsSha256, boolean includeSubdomains, Date expirationDate)
为给定主机固定一组公钥。
CronetEngine.Builder
addQuicHint(String host, int port, int alternatePort)
添加 host 支持 QUIC 的提示。
CronetEngine
build()
使用此构建器的配置构建 CronetEngine
CronetEngine.Builder
enableBrotli(boolean value)
设置是否启用 Brotli 压缩。
CronetEngine.Builder
enableHttp2(boolean value)
设置是否启用 HTTP/2 协议。
CronetEngine.Builder
enableHttpCache(int cacheMode, long maxSize)
启用或禁用 HTTP 数据以及 QUIC 服务器信息等其他信息的缓存。
CronetEngine.Builder
enableNetworkQualityEstimator(boolean value)
启用网络质量估算器,该估算器收集并报告网络堆栈各个层面的往返时间 (RTT) 和下游吞吐量测量结果。
CronetEngine.Builder
enablePublicKeyPinningBypassForLocalTrustAnchors(boolean value)
启用或禁用本地信任锚的公钥固定绕过。
CronetEngine.Builder
enableQuic(boolean value)
设置是否启用 QUIC 协议。
String
getDefaultUserAgent()
构建一个 User-Agent 字符串,其中包括应用名称和版本、系统构建版本、型号和 ID 以及 Cronet 版本。
CronetEngine.Builder
setConnectionMigrationOptions(ConnectionMigrationOptions connectionMigrationOptions)
配置连接迁移的行为。
CronetEngine.Builder
CronetEngine.Builder
CronetEngine.Builder
setDnsOptions(DnsOptions dnsOptions)
配置主机名查找的行为。
CronetEngine.Builder
CronetEngine.Builder
setQuicOptions(QuicOptions.Builder quicOptionsBuilder)
CronetEngine.Builder
setQuicOptions(QuicOptions quicOptions)
配置 Cronet 使用 QUIC 时的行为。
CronetEngine.Builder
setStoragePath(String value)
设置 HTTP 缓存和 Cookie 存储的目录。
CronetEngine.Builder
setThreadPriority(int priority)
设置 Cronet 内部线程的线程优先级。
CronetEngine.Builder
setUserAgent(String userAgent)
覆盖所有请求的 User-Agent 标头。

继承方法摘要

常量

public static final int HTTP_CACHE_DISABLED

用于禁用 HTTP 缓存的设置。某些数据可能仍会临时存储在内存中。传递给 enableHttpCache(int, long)

常量值: 0

public static final int HTTP_CACHE_DISK

用于启用磁盘缓存(包括 HTTP 数据)的设置。在将此常量传递给 enableHttpCache(int, long) 之前,必须先调用 setStoragePath(String)

常量值: 3

public static final int HTTP_CACHE_DISK_NO_HTTP

用于启用磁盘缓存(不包括 HTTP 数据)的设置。在将此常量传递给 enableHttpCache(int, long) 之前,必须先调用 setStoragePath(String)

常量值: 2

public static final int HTTP_CACHE_IN_MEMORY

用于启用内存 HTTP 缓存(包括 HTTP 数据)的设置。传递给 enableHttpCache(int, long)

常量值: 1

公共构造函数

public Builder (Context context)

构造一个 CronetEngine.Builder 对象,该对象用于创建 CronetEngine。默认配置启用 HTTP/2 和 QUIC,但禁用 HTTP 缓存。

参数
context Android ContextCronetEngine.Builder 使用它来检索应用上下文。只会保留对应用上下文的引用,以避免不必要地延长 context 的生命周期。

公共方法

public CronetEngine.Builder addPublicKeyPins (String hostName, Set<byte[]> pinsSha256, boolean includeSubdomains, Date expirationDate)

为给定主机固定一组公钥。通过固定一组公钥 pinsSha256,与 hostName 的通信需要使用固定密钥集中的公钥证书进行身份验证。应用可以固定根证书、任何中间证书或最终证书的公钥。如果主机的证书链中不存在任何公钥,即使主机尝试使用设备可信证书存储允许的证书进行身份验证,身份验证也会失败,无法建立安全通信。

多次使用相同主机名调用此方法会覆盖之前为该主机设置的固定项。

有关公钥固定的更多信息,请参阅 RFC 7469

参数
hostName 应固定公钥的主机名。仅由数字和点字符组成的主机将被视为无效。
pinsSha256 一组固定项。每个固定项都是主机 X.509 证书的 Subject Public Key Info (SPKI) 的 DER 编码 ASN.1 表示的 SHA-256 加密哈希值。使用 Certificate.getPublicKey()Key.getEncoded() 获取 SPKI 的 DER 编码 ASN.1 表示。虽然该方法不强制要求提供可在失去主私钥控制时使用的备用固定项,但强烈建议提供一个。
includeSubdomains 指示固定策略是否应应用于 hostName 的子域。
expirationDate 指定固定项的到期日期。
返回
  • 构建器,以便进行链式调用。
抛出
NullPointerException 如果任何输入参数为 null
IllegalArgumentException 如果给定的主机名无效,或者 pinsSha256 包含的字节数组不表示有效的 SHA-256 哈希值。

public CronetEngine.Builder addQuicHint (String host, int port, int alternatePort)

添加 host 支持 QUIC 的提示。请注意,需要 enableHttpCacheHTTP_CACHE_DISK)才能利用会话之间的 0-RTT 连接建立。

参数
host 支持 QUIC 的服务器的主机名。
port 支持 QUIC 的服务器的端口。
alternatePort 用于 QUIC 的备用端口。
返回
  • 构建器,以便进行链式调用。

public CronetEngine build ()

使用此构建器的配置构建 CronetEngine

返回

public CronetEngine.Builder enableBrotli (boolean value)

设置是否启用 Brotli 压缩。如果启用,将在 Accept-Encoding 请求头中声明 Brotli。默认禁用。

参数
value 设为 true 以启用 Brotli,设为 false 以禁用。
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder enableHttp2 (boolean value)

设置是否启用 HTTP/2 协议。默认启用。

参数
value 设为 true 以启用 HTTP/2,设为 false 以禁用。
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder enableHttpCache (int cacheMode, long maxSize)

启用或禁用 HTTP 数据以及 QUIC 服务器信息等其他信息的缓存。

参数
cacheMode 控制缓存数据的位置和类型。必须是 HTTP_CACHE_* 之一。
maxSize 用于缓存数据的最大大小(字节)(建议值,有时可能会超出)。
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder enableNetworkQualityEstimator (boolean value)

启用网络质量估算器,该估算器收集并报告网络堆栈各个层面的往返时间 (RTT) 和下游吞吐量测量结果。启用估算器后,可以使用 CronetEngine.addRttListener(NetworkQualityRttListener)CronetEngine.addThroughputListener(NetworkQualityThroughputListener) 添加 RTT 和吞吐量监听器,并使用 CronetEngine.removeRttListener(NetworkQualityRttListener)CronetEngine.removeThroughputListener(NetworkQualityThroughputListener) 移除它们。估算器仅在启用时使用内存和 CPU。

参数
value 设为 true 以启用网络质量估算器,设为 false 以禁用。
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder enablePublicKeyPinningBypassForLocalTrustAnchors (boolean value)

启用或禁用本地信任锚的公钥固定绕过。强烈建议不要禁用本地信任锚的绕过,因为它可能会阻止应用与固定的主机通信。例如,用户可能希望通过更改设备代理设置并将代理证书添加到本地信任锚列表来通过启用了 SSL 的代理发送所有流量。禁用绕过很可能会阻止应用向固定的主机发送任何流量。有关更多信息,请参阅 https://www.chromium.org/Home/chromium-security/security-faq 中的“密钥固定如何与本地代理和过滤器交互?”

参数
value 设为 true 以启用绕过,设为 false 以禁用。
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder enableQuic (boolean value)

设置是否启用 QUIC 协议。默认启用。如果启用 QUIC,则会将包含应用名称和 Cronet 版本的 QUIC User Agent Id 发送到服务器。

参数
value 设为 true 以启用 QUIC,设为 false 以禁用。
返回
  • 构建器,以便进行链式调用。

public String getDefaultUserAgent ()

构建一个 User-Agent 字符串,其中包括应用名称和版本、系统构建版本、型号和 ID 以及 Cronet 版本。

返回
  • User-Agent 字符串。

public CronetEngine.Builder setConnectionMigrationOptions (ConnectionMigrationOptions connectionMigrationOptions)

配置连接迁移的行为。有关更多详细信息,请参阅 ConnectionMigrationOptions 的文档以及 ConnectionMigrationOptions.Builder 的各个方法。

仅当 enableQuic(boolean) 启用时才相关。

参数
connectionMigrationOptions
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder setConnectionMigrationOptions (ConnectionMigrationOptions.Builder connectionMigrationOptionsBuilder)

参数
connectionMigrationOptionsBuilder

public CronetEngine.Builder setDnsOptions (DnsOptions.Builder dnsOptions)

参数
dnsOptions

public CronetEngine.Builder setDnsOptions (DnsOptions dnsOptions)

配置主机名查找的行为。有关更多详细信息,请参阅 DnsOptions 的文档以及 DnsOptions.Builder 的各个方法。

仅当 enableQuic(boolean) 启用时才相关。

参数
dnsOptions
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder setLibraryLoader (CronetEngine.Builder.LibraryLoader loader)

设置一个 CronetEngine.Builder.LibraryLoader 用于加载原生库。如果未设置,则使用 System.loadLibrary(String) 加载该库。

参数
loader 用于加载原生库的 LibraryLoader
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder setQuicOptions (QuicOptions.Builder quicOptionsBuilder)

参数
quicOptionsBuilder

public CronetEngine.Builder setQuicOptions (QuicOptions quicOptions)

配置 Cronet 使用 QUIC 时的行为。有关更多详细信息,请参阅 QuicOptions 的文档以及 QuicOptions.Builder 的各个方法。

仅当 enableQuic(boolean) 启用时才相关。

参数
quicOptions
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder setStoragePath (String value)

设置 HTTP 缓存和 Cookie 存储的目录。该目录必须存在。

注意:不要同时将同一个存储目录用于多个 CronetEngine。对存储目录的访问不支持多个 CronetEngine 的并发访问。

参数
value 现有目录的路径。
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder setThreadPriority (int priority)

设置 Cronet 内部线程的线程优先级。

参数
priority Cronet 内部线程的线程优先级。一个 Linux 优先级级别,从最高调度优先级的 -20 到最低调度优先级的 19。有关值的更多信息,请参阅 Process.setThreadPriority(int, int)THREAD_PRIORITY_* 值。
返回
  • 构建器,以便进行链式调用。

public CronetEngine.Builder setUserAgent (String userAgent)

覆盖所有请求的 User-Agent 标头。显式设置的 User-Agent 标头(使用 UrlRequest.Builder.addHeader(String, String) 设置)将覆盖使用此函数设置的值。

参数
userAgent 用于所有请求的 User-Agent 字符串。
返回
  • 构建器,以便进行链式调用。