目录

1 注册认证成为开发者

    如果开发者还没有华为开发者帐号,请访问华为开发者联盟进行帐号注册认证。

    详细开发者网站帐号注册流程请参考:

    https://developer.huawei.com/consumer/cn/devservice/doc/20300

2 配置应用签名

    说明:

    如果开发者的应用此前已接入过其他HMS Core的服务并且配置过应用签名,请跳过此章节。

    在申请华为支付服务前,请开发者先确定自己的应用包名,并创建开发工程,同时请确保开发环境已安装jdk。

    步骤:

1. 请在开发环境生成keystore签名证书,该配置属于通用技术,此处不详细描述,假设开发者生成的证书名为mykeystore.keystore。

2. 打开命令行工具(使用CMD命令),执行cd命令进入keytool.exe所在的目录。

cd %JAVA_HOME%/bin

3. 执行命令keytool -list -v -keystore <keystore-file>,按命令行提示进行操作。

其中 <keystore-file>是应用签名文件的完整路径。

    例如:C:\Program Files (x86)\Java\jdk1.7.0_25\bin>keytool -list -v -keystore E:\HMS_SDK_2.5.1.300\Sample\HMSSdkSample_2.5.1.300_AS\HmsSample\mykeystore.keystore

4. 获取对应的SHA256指纹,如图2-4所示。

    图2-4 SHA256指纹 

3 创建项目和应用

    步骤1:创建项目

 项目是您在AGC中资源的组织实体,您可以将您的一个应用的不同平台版本添加到同一个项目中。在创建您的应用前,您需要先在AGC中创建您的项目。

  1. 录AppGallery Connect 网站,选择“我的项目”。

  2. 在我的项目页面点击“添加项目”。

  3. 输入您预先规划的项目名称,点击“确定”。

  4. 项目创建成功后,会自动进入“项目设置”页面。

此时该项目中还没有应用,您下一步需要在该项目中添加应用。

    步骤2:创建应用

    AGC服务主要在应用开发过程中提供各种开发能力,如果您还没有在您的AGC项目中添加应用,请先完成应用的添加。

  1. 在AppGallery Connect 网站首页选择“我的项目”。

  2. 在项目列表中点击您的项目。

  3. 在页面顶部的项目名称右边,选择“添加应用”。

  4. 在“添加应用”页面填写应用信息并确认。

参数 说明
选择平台
选择Android
支持设备
选择大屏
应用名称
当前产品下第1个应用的应用名称,要求4-64个字符即可,创建后支持修改。
应用包名

当前产品下第1个应用的应用包名,必须与最终发布的应用包名保持一致。

注意:

应用包名必须与最终发布的APK包名一致,如需集成HMS Core SDK中的支付能力进行应用内收费,必须以.HUAWEI或者.huawei结尾,配置后不可修改,请谨慎填写。

应用分类

● 应用:普通应用。
● 游戏:游戏类应用。

默认语言
应用的默认语言,根据实际情况选择。

    

4 开通支付服务

    开发者如果接入华为支付服务,需要在开发者联盟网站创建应用并开通支付服务,本章节指导开发者如何创建应用并完成支付服务的开通。

    步骤1:

    以华为开发者帐号登录“华为开发者联盟”,点击右上角“管理中心”,进入管理中心。

    点击“应用服务-开发服务-配置”,将华为支付服务的入口显示于管理中心,如图2-5所示。

    图2-5配置开发服务

 

    步骤2:

    在弹出的选择框内选择"支付", 勾选完毕后点击"关闭",如图2-6所示。

    图2-6 配置支付服务

 

    回到“管理中心”,在开发服务页面下会显示“支付”,如图2-7所示。

    图2-7 完成配置支付服务

 

    步骤3:

    点击图2-7中的"支付",进入支付管理页面,点击"申请支付服务"。如图2-8所示。

    图2-8 申请支付服务

  

    步骤4:

    设置应用类型,选择“电视应用”。如图2-9所示。

    图2-9设置支付服务信息

    步骤5:

    完善应用信息。如图2-11所示。

    ●  产品选择上一章节已经创建的产品“示例支付服务”。

●  应用包名必须和APK包名保持一致,且不可更改,请谨慎填写。

●  回调地址是应用开发者侧配置的服务器地址,用于在支付成功后接收华为支付服务器的回调订单信息,如果开发者接入的应用是没有应用服务器的单机应用,可以不配置。此内容配置后可修改。
    ●  SHA256证书指纹:《配置应用签名》章节获取的指纹信息(一般只要配置一个,如果该应用存在多个证书指纹,可以配置多个)。

图2-11 完善应用信息 

 

步骤6:

点击“提交”后开发者已经完成为这个应用申请支付服务的操作。

步骤7:

获取支付服务参数

开发者为“示例支付服务”APP开通支付服务后,开发者联盟会分配服务参数,包括APPID和APP SECRET,用于开发者集成HMS Core SDK时使用。获取服务参数操作如下:

点击需要查询的产品,如图2-12所示,产品服务参数如图2-13所示。

图2-12支付产品列表

 

图2-13服务参数详情

 

    页面各参数含义如表3-1所示。   

    表3-1 服务参数说明

参数名

对应HMS Core SDK参数

说明

APP ID

applicationID

华为开发者联盟为APP分配的唯一标识。

APP SECRET

应用秘钥

华为开发者联盟为APP分配的唯一秘钥。

支付ID

merchantId

华为开发者联盟为开发者分配的唯一标识。

CPID

merchantId

华为开发者联盟为开发者分配的唯一标识。

支付私钥

无

RSA私钥,用于开发者APP调用HMS Core SDK支付接口时,对请求参数进行签名。

支付公钥

无

RSA公钥,用于开发者APP收到HMS Core SDK返回的支付结果时,对响应参数进行验签。

5 下载SDK

    开发者接入HMS Core服务时需要同时集成HMS Core SDK Agent(简称Agent)和HMS Core SDK,HMS Core SDK提供了原生的接口,HMS Core SDK Agent是对HMS Core SDK原生接口的二次封装,处理了部分必要的接入逻辑而不再将它们暴露给开发者。

    开发者仅需要了解并调用HMS Core SDK Agent接口即可,大大提升接入效率,降低出错几率。

    APP->HMS Core SDK Agent->HMS Core SDK的关系如图所示。 

    

下载HMS Core SDK Agent套件(必选)

版本

获取方法

HMS-TV SDK Agent 2.7.1.302

此SDK已下架,请在线咨询客服。

针对不同的开发环境,华为提供了2种HMS Core SDK的集成方式,请开发者自行选择其中一个接入。

下载匹配的HMS Core SDK(二选一)

版本                 获取方法
HMS-TV SDK 2.7.1.302      此SDK已下架,请在线咨询客服。

6 集成工程

6.1 集成SDK

       AndroidStudio开发环境

       Gradle+maven集成方式

       步骤 1  配置maven仓。
       1. 打开项目的build.gradle文件,如图3-1框中的文件。
       图3-1 项目的build.gradle位置
              

    2. 在allprojects->repositories 里面配置HMS Core SDK的maven仓。

  allprojects {
            repositories {
                jcenter()
                maven {url 'https://developer.huawei.com/repo/'}
            }
        }

 步骤 2  配置项目依赖。
       1. 打开子工程app下的build.gradle文件,如图3-2框中的文件。
       图3-2 子工程的build.gradle位置在示例图
       

       2. 配置编译依赖。

  dependencies {
    implementation 'com.huawei.android.hms:iap-tv:{version}'   
  }

说明:{version} 替换为实际的版本号,如:implementation 'com.huawei.android.hms:iap-tv:2.7.1.302'    。

    步骤 3  同步修改的文件。
    1. 重新打开修改完的gradle文件,右上方出现Sync Now链接。

    2. 点击“Sync Now”等待同步完成。

    说明:

    如果出现错误,请检查网络连接是否正常,以及检查gradle文件是否正确。    

    步骤 4  多语言设置。
     HMS Core SDK支持全球多种语言(后续将逐步增加对新语言的支持)。
     ●  如果您的应用不需要设置只支持某些特定语言,则请忽略此步骤。
     ●  如果您的应用需要设置只支持某些特定语言,请最少要支持en(英文) 和 zh-rCN(简体中文)两种语言。在Android Studio工程的build.gradle中配置resConfigs,配置样例如下:

android {
        defaultConfig {
                ...
                resConfigs "en", "zh-rCN","其他应用需要支持的语言"
        }
}

通用包集成方式

解压HMS_SDK_{version}.zip

       推荐使用“Gradle+maven集成方式”,如果此方式无法正常接入HMS Core SDK,请参考本章节的方式接入。
       解压hmssdk_gradle_{version}.zip目录如表3-2所示。

 表3-2 通用包目录说明

目录 说明 使用方式
libs/hmssdk-tv-{version}.jar 包含HMS所有功能的jar包。通用包不再按照业务功能分成多个jar包,hmssdk-tv-{version}.jar包含帐号、支付服务。 请直接将libs目录拷贝到应用工程根目录。
res/ HMS Core SDK需要使用的资源目录,包含多国语言。应用如果不需要集成多种语言的,可以适当裁剪。但是必须保留默认语言和简体中文。 请直接将res目录拷贝到应用工程根目录。
assets/ HMS Core SDK请求华为服务器需要使用的证书文件 请直接将assets目录拷贝到应用工程根目录。

集成工程

集成HMS Core SDK Agent

    步骤 1  解压HMSAgent_tv_{version}.zip包,生成目录和文件,包括HMSAgent的示例工程和脚本文件。

脚本文件

说明

备注

GetHMSAgent_cn.bat

windows批处理脚本,用于从示例代码中提取所需要模块的HMSAgent代码(只包含)需要的模块。请直接运行,根据提示操作即可。如果由于PC环境问题导致脚本无法运行,请手动拷贝hmsagents\src\main\到 copysrc\。

中文脚本,适用于发行区域为中国大陆地区的应用和游戏使用。

GetHMSAgent_oversea.bat

windows批处理脚本,用于从示例代码中提取所需要模块的HMSAgent代码(只包含)需要的模块。请直接运行,根据提示操作即可。如果由于PC环境问题导致脚本无法运行,请手动拷贝hmsagents\src\main\到 copysrc\。

英文脚本,适用于发行区域为非中国大陆地区的应用和游戏使用。

    步骤 2  执行GetHMSAgent_xx.bat生成copysrc的文件夹,里面是根据您选择需要集成HMS服务,抽取后的HMSAgent代码(java 文件夹)和manifest文件(AndroidManifest.xml)。

    步骤 3  拷贝copysrc/java里面的代码到您现有的工程src目录下。请保持HMSAgent代码的包的路径和结构不变。AndroidManifest.xml仅供配置参考。

6.2 配置manifest文件

    步骤 1  (必选)在application节点下增加APPID。

 <meta-data  
    android:name="com.huawei.hms.client.appid"  
    <!-- value的值“xxx”用实际申请的应用ID替换,来源于开发者联盟网站应用的服务详情。-->  
    android:value="appid=xxx">  
  </meta-data>

 步骤 2  (必选)配置application的name属性。

    ●  用于在application启动的时候调用HMSAgent.init()接口初始化HMS Agent套件,开发者需自己实现应用的MyApplication类。

<application
    <!-- “xxx”用实际的应用包名替换-->
    android:name="xxx.xxx.xxx.MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

 步骤 3  在application节点下增加activity。

    ● (必选)BridgeActivity定义了HMS Core SDK中一些跳转所需要的透明页面。

 <activity  
    android:name="com.huawei.hms.activity.BridgeActivity"  
    android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"  
    android:excludeFromRecents="true"  
    android:exported="false"  
    android:hardwareAccelerated="true"  
    android:theme="@android:style/Theme.Translucent" >  
    <meta-data  
        android:name="hwc-theme"  
        android:value="androidhwext:style/Theme.Emui.Translucent" />  
  </activity>

    ●(必选) AppUpdateActivity和PackageInstallActivity是应用自升级接口所需要使用的页面。

  <activity
    android:name="com.huawei.updatesdk.service.otaupdate.AppUpdateActivity"
    android:configChanges="orientation|screenSize"
    android:exported="false"
    android:theme="@style/upsdkDlDialog" >
    <meta-data
        android:name="hwc-theme"
        android:value="androidhwext:style/Theme.Emui.Translucent.NoTitleBar" />
  </activity>
<activity
    android:name="com.huawei.updatesdk.support.pm.PackageInstallerActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:exported="false"
    android:theme="@style/upsdkDlDialog" >
    <meta-data
        android:name="hwc-theme"
        android:value="androidhwext:style/Theme.Emui.Translucent" />
  </activity>

  ● (必选)解决HMS Core升级问题的透明界面。

<activity
    android:name="com.huawei.android.hms.agent.common.HMSAgentActivity"
    android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"
    android:excludeFromRecents="true"
    android:exported="false"
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.Translucent" >
    <meta-data
        android:name="hwc-theme"
        android:value="androidhwext:style/Theme.Emui.Translucent" />
  </activity>

     ● (必选) 处理拉起帐号登录界面,并处理登录结果的透明界面,由于支付必须集成帐号服务所以此步骤必选。 

 <activity
    android:name="com.huawei.android.hms.agent.hwid.HMSSignInAgentActivity"
    android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"
    android:excludeFromRecents="true"
    android:exported="false"
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.Translucent" >
    <meta-data
        android:name="hwc-theme"
        android:value="androidhwext:style/Theme.Emui.Translucent" />
  </activity>

    ●(可选) 处理拉起支付界面,并处理支付结果的透明界面,开发者如果使用pay接口支付则必选。

  <activity
    android:name="com.huawei.android.hms.agent.pay.HMSPayAgentActivity"
    android:configChanges="orientation|locale|screenSize|layoutDirection|fontScale"
    android:excludeFromRecents="true"
    android:exported="false"
    android:hardwareAccelerated="true"
    android:theme="@android:style/Theme.Translucent" >
    <meta-data
        android:name="hwc-theme"
        android:value="androidhwext:style/Theme.Emui.Translucent" />
  </activity>

    步骤 4 (必选)在application节点下增加UpdateProvider。

    用于HMS Core SDK引导升级HMS Core(APK),提供给系统安装器读取升级文件。

 <provider  
    android:name="com.huawei.hms.update.provider.UpdateProvider"  
    <!--“xxx.xxx.xxx”用实际的应用包名替换-->  
    android:authorities="xxx.xxx.xxx.hms.update.provider"  
    android:exported="false"  
    android:grantUriPermissions="true" >  
  </provider>

    步骤 5  (必选)在manifest节点下增加所需权限。

  <!--HMS-SDK引导升级HMS Core(APK)功能,访问OTA服务器需要网络权限-->    
  <uses-permission android:name="android.permission.INTERNET" />    
  <!--HMS-SDK引导升级HMS Core(APK)功能,保存下载的升级包需要SD卡写权限-->    
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    
  <!--检测网络状态-->  
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  
  <!--检测wifi状态-->  
  <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
  <!--为了获取用户手机的IMEI,用来唯一的标识用户。-->  
  <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
  <!--如果是安卓8.0,应用编译配置的targetSdkVersion>=26,请务必添加以下权限 -->
  <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

6.3 配置混淆脚本(必选)

    开发者编译APK时请不要混淆HMS Core SDK以及HMS Core SDK的相关资源文件,避免功能异常。

    步骤 1  打开android工程的混淆配置文件。

    步骤 2  加入排除hms的混淆配置。

  -ignorewarning
  -keepattributes *Annotation*
  -keepattributes Exceptions
  -keepattributes InnerClasses
  -keepattributes Signature
  -keepattributes SourceFile,LineNumberTable
  -keep class com.hianalytics.android.**{*;}
  -keep class com.huawei.updatesdk.**{*;}
  -keep class com.huawei.hms.**{*;}
  -keep class com.huawei.android.hms.agent.**{*;}

   步骤 3 如果开发者使用了AndResGuard,需要在混淆配置文件中加入AndResGuard允许清单。

  "R.string.hms*", 
  "R.string.connect_server_fail_prompt_toast", 
  "R.string.getting_message_fail_prompt_toast", 
  "R.string.no_available_network_prompt_toast", 
  "R.string.third_app_*", 
  "R.string.upsdk_*", 
  "R.layout.hms*", 
  "R.layout.upsdk_*", 
  "R.drawable.upsdk*", 
  "R.color.upsdk*", 
  "R.dimen.upsdk*", 
  "R.style.upsdk*"