剩余87分钟读完

hQUIC Kit

剩余87分钟读完
Read mode

1. 介绍

简介

hQUIC Kit为您提供低时延,高吞吐量及安全可靠的通信能力,支持QUIC协议,提供多种网络环境敏感的拥塞处理算法,实现更快的启动速度,更强的抗丢包能力及更高的吞吐量。您可以在不稳定的移动网络环境下,使用hQUIC,提高网络通讯质量。通过示例工程和代码,您可以体验到:

  • 通过hQUIC,实现与后端服务通过QUIC协议进行交互。
  • 通过Android Studio集成hQUIC SDK,完成工程的编译和调试。

您将建立什么

在这个Codelab中,您将创建一个App,使用hQUIC Kit,使能Cronet并通过Cronet API实现HTTP/2和QUIC协议通讯。

您将会学到什么

  • 如何配置开发环境。
  • 如何调用hQUIC,发送网络请求。

2. 您需要什么

硬件要求

  • 一台计算机(需要安装好Android Studio,并且可以访问互联网)。
  • 预置了HMS Core(APK) 5.0.0.300或以上版本的HUAWEI手机一部,用于真机调试运行Demo。

软件要求

  • JDK 1.7或以上
  • Android API 19或以上
  • EMUI 3.0或以上
  • HMS Core(APK)5.0.0.300或以上版本

需要的知识点

  • Android基础开发能力
  • Java网络编程能力

3. 能力接入准备

集成HMS Core能力,需要完成以下准备工作:

  • 创建Android Studio工程
  • 添加Maven库及插件
  • 配置项目签名
    具体操作,请按照《HUAWEI HMS Core集成准备》中详细说明来完成。

4. 配置开发环境

配置HMS Core SDK的Maven仓地址

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"中配置HMS Core SDK的Maven仓地址。
    • 在"allprojects > repositories"中配置HMS Core SDK的Maven仓地址。
    • 如果App中添加了"agconnect-services.json"文件则需要在"buildscript > dependencies"中增加agcp插件配置。
    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"中配置HMS Core SDK的Maven仓地址。
    • 如果App中添加了"agconnect-services.json"文件则需要在"buildscript > dependencies"中增加agcp插件配置。
    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/' } } }

添加编译依赖

  1. 打开应用级的"build.gradle"文件。
  2. 在"dependencies"中添加如下编译依赖。
    dependencies { implementation 'com.huawei.hms:hquic-provider:{version}' }

同步工程

点击"File > Sync Project with Gradle Files"开始同步。

出现下图所示completed successfully即表示同步成功。

5. Demo开发

上一小节,您已经成功集成了hQUIC SDK。
本小节您将尝试编写一个Demo,学会如何使用hQUIC SDK的接口,您只需要按照下文的每一步提示,就可以边学边做,一起构建出这个Demo。

创建Service

选择"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"); } }); }

创建Cronet引擎

/** * 构造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; }

构建Request

/** * 构造请求对象 */ 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,安装到测试手机上运行。

6. 成果展示

点击"hQUICTest",将会显示接口返回信息。

7. 恭喜您

干得好,您已经完成Codelab并学习到了:

  • 如何集成hQUIC Kit。
  • 如何使用hQUIC Kit接口发起网络请求。
如果需要了解更多hQUIC Kit相关的信息,请关注我们的官方网站。开发过程中遇到问题,请参见我们的FAQ

8. 参考

您可以阅读链接,了解更多相关信息:API参考示例代码
您也可以点击下方按钮下载源码:

源码下载

已复制代码