hQUIC Kit为您提供低时延,高吞吐量及安全可靠的通信能力,支持QUIC协议,提供多种网络环境敏感的拥塞处理算法,实现更快的启动速度,更强的抗丢包能力及更高的吞吐量。您可以在不稳定的移动网络环境下,使用hQUIC,提高网络通讯质量。通过示例工程和代码,您可以体验到:
在这个Codelab中,您将创建一个App,使用hQUIC Kit,使能Cronet并通过Cronet API实现HTTP/2和QUIC协议通讯。
集成HMS Core能力,需要完成以下准备工作:
Android Studio的代码库配置在Gradle 插件7.0以下版本、7.0版本和7.1及以上版本有所不同。请根据您当前的Gradle 插件版本,选择对应的配置过程。
7.0以下版本 | 7.0版本 | 7.1及以上版本 |
7.0以下版本
a. 打开Android Studio项目级"build.gradle"文件。
b. 添加HUAWEI agcp插件以及Maven代码库。
buildscript {
repositories {
google()
jcenter()
// 配置HMS Core SDK的Maven仓地址。
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
...
// 增加agcp插件配置,推荐您使用最新版本的agcp插件。
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
allprojects {
repositories {
google()
jcenter()
// 配置HMS Core SDK的Maven仓地址。
maven {url 'https://developer.huawei.com/repo/'}
}
}
7.0版本
a. 打开Android Studio项目级"build.gradle"文件。
b. 添加HUAWEI agcp插件以及Maven代码库。
buildscript {
repositories {
google()
jcenter()
// 配置HMS Core SDK的Maven仓地址。
maven {url 'https://developer.huawei.com/repo/'}
}
dependencies {
...
// 增加agcp插件配置,推荐您使用最新版本的agcp插件。
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
c. 打开项目级"settings.gradle"文件,配置HMS Core SDK的Maven仓地址。
dependencyResolutionManagement {
...
repositories {
google()
jcenter()
// 配置HMS Core SDK的Maven仓地址。
maven {url 'https://developer.huawei.com/repo/'}
}
}
7.1及以上版本
a. 打开Android Studio项目级"build.gradle"文件。
b. 如果App中添加了"agconnect-services.json"文件则需要在"buildscript > dependencies"中增加agcp插件配置。
buildscript {
dependencies {
...
// 增加agcp插件配置,推荐您使用最新版本的agcp插件。
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
c. 打开项目级"settings.gradle"文件,配置HMS Core SDK的Maven仓地址。
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
// 配置HMS Core SDK的Maven仓地址。
maven { url 'https://developer.huawei.com/repo/' }
}
}
dependencyResolutionManagement {
...
repositories {
google()
mavenCentral()
// 配置HMS Core SDK的Maven仓地址。
maven { url 'https://developer.huawei.com/repo/' }
}
}
dependencies {
implementation 'com.huawei.hms:hquic-provider:{version}'
}
点击"File > Sync Project with Gradle Files"开始同步。
出现下图所示completed successfully即表示同步成功。
上一小节,您已经成功集成了hQUIC SDK。
本小节您将尝试编写一个Demo,学会如何使用hQUIC SDK的接口,您只需要按照下文的每一步提示,就可以边学边做,一起构建出这个Demo。
选择"app"下的"src"目录,单击鼠标右键,创建HQUICService类。
异步初始化不是必需操作,如果需要提前加载Cronet服务,可以使用异步初始化接口进行预加载。
/**
* 异步初始化HQUICManager
*/
public void init(){
HQUICManager.asyncInit(context, new HQUICManager.HQUICInitCallback() {
@Override
public void onSuccess() {
Log.i(TAG, "HQUICManager asyncInit success");
}
@Override
public void onFail(Exception e) {
Log.w(TAG, "HQUICManager asyncInit fail");
}
});
}
/**
* 构造CronetEngine对象
*/
private CronetEngine createCronetEngine(String url) {
if (cronetEngine != null) {
return cronetEngine;
}
CronetEngine.Builder builder = new CronetEngine.Builder(context);
// 设置开启支持QUIC协议
builder.enableQuic(true);
// 添加全局支持QUIC协议的域名
builder.addQuicHint(getHost(url), DEFAULT_PORT, DEFAULT_ALTERNATEPORT);
cronetEngine = builder.build();
return cronetEngine;
}
/**
* 构造请求对象
*/
private UrlRequest builRequest(String url, String method) {
CronetEngine cronetEngine = createCronetEngine(url);
UrlRequest.Builder requestBuilder =
cronetEngine.newUrlRequestBuilder(url, callback, executor).setHttpMethod(method);
UrlRequest request = requestBuilder.build();
return request;
}
/**
* 发送网络请求
*/
private void sendRequest(String url, String method) {
Log.i(TAG, "callURL: url is " + url + "and method is " + method);
UrlRequest urlRequest = builRequest(url, method);
if (urlRequest != null) {
urlRequest.start();
}
}
当您完成上述业务代码的补全后,就可以进行编译。完成编译后,生成APK,安装到测试手机上运行。
点击"hQUICTest",将会显示接口返回信息。
干得好,您已经完成Codelab并学习到了: