文档管理中心
我的

开发准备

1. AppGallery Connect配置

在开始开发应用前,需要在AppGallery Connect中配置相关信息。

注册成为开发者

在开发应用前需要在华为开发者联盟网站上注册成为开发者并完成实名认证,具体方法可参考“帐号注册认证”。

创建应用

参见创建项目和在项目中添加应用完成应用的创建,特殊配置如下:

  • “选择平台”:必须选择“Android”。

  • “支持设备”:必须选择“手机”。

  • “应用分类”:选择“应用”。

注意:

如需集成HMS SDK中的支付能力进行应用内收费,应用包名必须以“.HUAWEI”或者“.huawei”结尾,否则会导致审核不通过。

生成签名证书指纹

签名证书指纹用于在通过华为HMS SDK调用HMS Core(APK)时,校验应用的真实性。开发者在使用HMS Core(APK)前必须将签名证书指纹配置到华为开发者联盟,在配置前需要根据签名证书在本地生成签名证书指纹。

在申请前需要满足以下2个条件:

  • 已创建应用程序的签名文件,签名证书创建属于通用技术,此处不详细描述。

  • 当前开发的PC已经安装JDK。

操作步骤如下:

1. 打开命令行工具(使用CMD命令),执行cd命令进入keytool.exe所在的目录(图中样例为PC上java程序安装在C盘的Program Files 目录)。

        

2. 执行命令keytool -list -v -keystore <keystore-file>,按命令行提示进行操作。<keystore-file>为应用签名文件的完整路径。

例如:

  1. >keytool -list -v -keystore E:\HmsSample\android.keystore

3. 根据结果获取对应的SHA256指纹。

配置签名证书指纹

1. 登录AppGallery Connect网站,单击“我的项目”。

2. 在项目列表中找到您的项目,在项目中单击需要配置签名证书指纹的应用。

3. 在“项目设置”页面的“应用”区域,单击“SHA256证书指纹”后的图标,输入生成的SHA256指纹。

4. 配置完成后单击,大约15分钟后生效。

打开相关服务

  • 在获取agconnect-services.json文件前,请确保已经完成高级分析服务的开通(开通步骤参见开发高级分析服务)。

  • 如果您进行过任何修改动作,包括但不限于:设置数据存储的位置、开启或管理某些API等,您需要下载最新的agconnect-services.json,并替换Android应用模块app的根目录下已有的文件。


2. 集成SDK

2.1 在Android Studio项目中集成SDK

针对AndroidStudio开发环境,华为提供了maven仓集成方式的HMS SDK包。在开始开发前,您需要将HMS SDK集成到您的AndroidStudio开发环境中。

远程maven仓集成SDK

1. 在Android Studio开发环境中添加当前应用的AppGallery Connect配置文件。

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

b. 在项目列表中找到您的项目,在项目中点击需要集成HMS SDK的应用。

c. 在“项目设置”页面中,单击“应用”栏下的“agconnect-services.json”下载配置文件。

d. 将“agconnect-services.json”文件拷贝到应用级根目录下。

2. 在主工程gradle中添加maven仓地址和agconnect服务依赖。

  1. maven {url 'https://developer.huawei.com/repo/'}
  2. classpath 'com.huawei.agconnect:agcp:1.2.1.300'

3. 在app模块gradle中添加插件配置和SDK的版本集成。

a. 打开应用级的build.gradle文件。

b. 在“dependencies”中添加如下编译依赖,{version} 需要替换为实际的SDK版本号,如:implementation 'com.huawei.hms:hianalytics:4.0.2.300'和'com.huawei.hms:dtm-api:4.0.4.300' 。

  1. implementation 'com.huawei.hms:hianalytics:{version}'
  2. implementation 'com.huawei.hms:dtm-api:{version}'

c. 在文件结尾添加配置。

  1. apply plugin: 'com.huawei.agconnect'

 4. 点击“Sync now”或“Sync Project with Gradle Files”,开始构建工程。如果出现错误,请检查网络连接是否正常,以及检查gradle文件是否正确。

2.2 在Eclipse项目中集成HMS SDK

针对Eclipse开发环境,华为提供了下载HMS SDK包本地集成的方式。在开始开发前,您需要将HMS SDK集成到您的Eclipse开发环境中。

下载SDK

1. 在集成DTM SDK前,请先确认已经完成HiAnalytics SDK的集成。关于如何集成HiAnalytics SDK请参阅:华为分析服务开发指南       

2. 下载HMS Base SDK和DTM SDK,并解压zip包。

a. HMS Base SDK下载参见:HMS Base SDK

b. DTM Eclipse SDK下载参见:Eclipse SDK下载

3. 选择菜单“File > Import”,将所有SDK工程导入到您的工作空间。

a. 选择“Android > Existing Android Code Into Workspace”,单击“Next”。3. 选择菜单“File > Import”,将所有SDK工程导入到您的工作空间。

        

b. 单击“Browse”,选择工程所在的文件夹目录。在“Projects”下显示待导入的工程,默认全部勾选,单击“Finish”。

        


        

注意:

待导入的工程必须和工作空间在相同的磁盘空间里,例如都在“D:\”。如果不在,您可以选择“Copy projects into workspace”,将工程文件复制到工作空间。

添加工程依赖关系

1. 右键单击您的工程,选择“Properties”。

2. 在左侧选择“Android”,单击“Add”,选择已导入空间的工程,单击“Apply and Close”。

        

3. 由于Eclipse的xml文件不支持$符号,将dtm-api工程下AndroidManifest.xml文件中的“${applicationId}”替换成您的应用包名。

  1. <application>
  2.    <activity
  3.        android:name="com.huawei.hms.dtm.PreviewActivity"
  4.        android:exported="true"
  5.        android:noHistory="true" >
  6.        <meta-data
  7.            android:name="hwc-theme"
  8.            android:value="androidhwext:style/Theme.Emui" />
  9.        <intent-filter>
  10.            <data android:scheme="dtm.configuration.${applicationId}" />
  11.            <action android:name="android.intent.action.VIEW" />
  12.            <category android:name="android.intent.category.DEFAULT" />
  13.            <category android:name="android.intent.category.BROWSABLE" />
  14.        </intent-filter>
  15.    </activity>
  16. </application>

拷贝DTM SDK资源文件到您的工程目录

将dtm-core工程中assets目录下的资源文件拷贝到您的工程中assets目录下。

注意:

如果依赖其他的kit资源,还需要复制对应kit的资源文件到您的工程目录下。

3. 配置混淆脚本

编译APK前需要配置不要混淆Huawei Analytics Kit和DTM,避免功能异常。

1. 打开安卓工程的混淆配置文件。Android Studio开发环境里的配置文件是“proguard-rules.pro”,Eclipse开发环境里的配置文件是“proguard-project.txt”。

2. 加入排除Analytics Kit和DTM的混淆配置。

  1. -dontwarn com.huawei.hms.**
  2. -keep interface com.huawei.hms.analytics.type.HAEventType{*;}
  3. -keep interface com.huawei.hms.analytics.type.HAParamType{*;}
  4. -keep class com.huawei.hms.analytics.HiAnalyticsTools{
  5. public static void enableLog();
  6. public static void enableLog(int);
  7. }
  8. -keep class com.huawei.hms.analytics.HiAnalyticsInstance{*;}
  9. -keep class com.huawei.hms.analytics.HiAnalytics{*;}
  10. -keep class com.huawei.hms.feature.** {public *;}
  11. -keep public class com.huawei.hms.common.** {public *;}
  12. -keep class com.huawei.hms.analytics.internal.filter.EventFilter{
  13. public void logFilteredEvent(java.lang.String, android.os.Bundle);
  14. public java.lang.String getUserProfile(java.lang.String);
  15. }
  16. -keep public class com.huawei.hms.dtm.EventFilter {
  17. public <fields>;
  18. public <methods>;
  19. }

3. 如果开发者使用了AndResGuard,需要在混淆配置文件中加入AndResGuard白名单。

  1. "R.string.hms*",
  2. "R.string.connect_server_fail_prompt_toast",
  3. "R.string.getting_message_fail_prompt_toast",
  4. "R.string.no_available_network_prompt_toast",
  5. "R.string.third_app_*",
  6. "R.string.upsdk_*",
  7. "R.layout.hms*",
  8. "R.layout.upsdk_*",
  9. "R.drawable.upsdk*",
  10. "R.color.upsdk*",
  11. "R.dimen.upsdk*",
  12. "R.style.upsdk*",
  13. "R.string.agc*"


本页面可能包含由第三方许可的内容,请参考具体描述。