1.7 在真机上运行HarmonyOS App
到现在为止,相信大家已经基本了解了开发一款HarmonyOS App的流程,但我们一直是在HarmonyOS模拟器上运行App。在实际开发过程中,需要在真机上测试后才能对外发布,而且有很多功能(如蓝牙、NFC、传感器等)在HarmonyOS模拟器上是无法测试的。所以本节会讲解如何在手机上安装并测试HarmonyOS App。
1.7.1 生成签名文件
在真机上运行App与在模拟器上运行App不同。在真机上不管是调试还是发布,都需要对hap文件进行签名。签名一个hap文件需要4类文件,即p12、csr、cer和p7b文件。其中p12和csr文件可以自助生成,cer和p7b文件需要到App Grallery Connect去申请,然后下载。
生成这4类文件,需要7个步骤,下面就具体介绍一下这7个步骤。
1.生成p12文件
执行下面的命令,会在当前目录下生成一个名为demo.p12的文件。
keytool -genkeypair -alias "myalias" -keyalg EC -sigalg SHA256withECDSA -dname "C=CN,O=Huawei CBG,OU=HOS Development IDE Team,CN=ide_demo_pk Debug" -keystore demo.p12 -storetype
pkcs12 -storepass 1234abc
在执行上面的命令之前,需要将如下3个信息修改成自己的内容(其他内容不需要改):
● -alias命令行参数后面的别名,本例是myalias;
● -keystore命令行参数后面的文件名,本例是demo.p12;
● -storepass命令行参数后面的密码,本例是1234abcd。
2.生成csr文件
执行下面的命令,会在当前目录下生成一个名为demo.csr的文件。
keytool -certreq -alias "myalias" -keystore demo.p12 -file demo.csr
其中,-alias命令行参数指定的别名要与生成demo.p12文件时指定的别名相同,demo.csr文件可以改成其他文件名。
注意,在执行上面的命令之前,要先生成demo.p12文件。在生成demo.csr文件的过程中,会要求输入生成demo.p12文件时指定的密码,本例是1234abcd。一定要记住这个密码,因为在后面配置App签名时还要用到。
3.创建项目
通过下面的URL打开页面,并单击“我的项目”按钮:https://developer.huawei.com/consumer/ cn/service/josp/agc/index.html进入创建项目页面,如图1-25所示。可以在该页面创建一个或多个项目,每一个项目可以包含0到多个安装包。
图1-25 创建项目页面
单击左侧的“添加项目”链接,会弹出图1-26所示的页面,输入项目名,单击“确定”按钮就可以创建新项目。
图1-26 创建新项目
4.通过csr文件在线申请cer文件(调试证书文件)
通过下面的URL打开页面,并单击“用户与访问”按钮:
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
进入该页面后,在左侧导航栏选择“证书管理”选项,进入证书管理页面,单击“新增证书”按钮弹出新增证书窗口,并按要求输入相应的内容,如图1-27所示。
图1-27 创建证书
创建完证书后,会在证书列表中看到新创建的证书,如图1-28所示。单击右侧的“下载”链接,下载对应的cer文件,本例是“我的证书.cer”文件。
图1-28 下载cer文件
5.添加设备
通过下面的URL打开页面,并单击“用户与访问”按钮:
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
进入该页面后,在左侧导航栏选择“设备管理”,进入设备管理页面。然后单击右侧的“添加设备”按钮,会弹出图1-29所示的窗口。这里需要选择设备类型,输入设备名称和UDID,然后单击“提交”按钮添加设备。只有在这里添加的设备才能使用前面申请的证书安装HarmonyOS App。
图1-29 添加设备
要想获得设备的UDID,需要用USB数据线连接HarmonyOS设备,然后执行下面的命令:
adb shell dumpsys DdmpDeviceMonitorService
成功执行命令后,在输出结果中的Local device info部分找到dev_udid,后面的字符串就是该设备的UDID。
如果有多部设备连接到了计算机上,需要使用-s命令行参数指定设备标识。
6.创建鸿蒙应用
通过下面的URL打开页面,并单击“我的项目”按钮:
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html
进入该页面后,其中会列出在该项目下创建的应用,如图1-30所示,读者可以单击“添加应用”链接创建新的应用。
图1-30 应用列表
添加应用页面如图1-31所示。读者需要在该页面按图1-31所示填写必要的信息(需要按自己App的情况填写相应的内容),其中“支持设备”保持默认值就可以在HarmonyOS手机上运行。
注意,如果App的包变了,需要重新按这一步添加应用,否则App将无法部署在HarmonyOS手机上。
7.获得p7b文件
进入上一步创建的应用的页面,单击右上角的“添加”按钮,添加一个HAP Provision Profile。这一步是一个总绑定,将App的包、证书和设备绑定在一起。也就是说,只有特定包的App,使用特定的证书,才能在特定的设备上部署。进入页面后,可以仿照图1-32所示填写这个页面的内容。
图1-31 添加应用页面
图1-32 添加HAP Provision Profile
成功添加HAP Provision Profile后,会在列表中显示刚才创建的HAP Provision Profile,如图1-33所示。单击右侧“下载”链接,就会下载一个名为“网盘p7bDebug.p7b”的文件。
图1-33 下载p7b文件
到目前为止,所有必要的文件都已经备齐,通过这7个步骤获得了图1-34所示的4个文件,其中demo.csr文件只是一个中间文件,在签名时并不需要它。
图1-34 用于签名的文件
注意,有的读者可能会感到生成证书比较麻烦,需要这么多步骤。其实只有第一次签名要这么多步骤,再创建新的应用时,只需要做第6步和第7步就可以了。也就是说,如果设备不变,在签名时只需要更换p7b文件就可以了。
1.7.2 签名HarmonyOS App
将HarmonyOS App在手机上部署,需要对hap文件签名。首先通过Create HarmonyOS Project窗口创建一个Phone工程,如图1-35所示。这里选择Empty Feature Ability(Java)模板。
在配置工程时,工程名可以任意输入,但Package Name必须输入创建应用时指定的包的名称,即com.harmonyos.netdisk,如图1-36所示。最后单击Finish按钮创建工程。
创建完工程后,选择File→Project Structure菜单项,打开Project Structure窗口,单击左侧的Modules,选择Signing Configs选项卡,进入配置页面,并按图1-37所示对签名文件进行配置。其中,Store Password和Key Password使用1.7.1节中生成demo.p12文件时使用的密码,本例是1234abcd。配置完后,单击OK按钮保存配置。
图1-35 创建Phone工程
图1-36 配置工程
图1-37 配置签名文件
到这里,签名的工作就已经完成了,现在运行程序,会弹出一个图1-38所示的选择设备对话框。列表中显示连接了两部HarmonyOS手机(通过USB数据线连接),可以选择其中一部用于运行程序。
运行效果如图1-39所示。
图1-38 选择设备对话框
图1-39 App在手机上的运行效果
1.7.3 网络部署App
通常在真机上运行HarmonyOS App时要用USB数据线将手机和计算机连接起来,这种方式比较复杂,而且如果使用的是USB接口并不富余的计算机,如苹果的Mac,还需要连接USB Hub等设备,所以本节介绍另外一种部署App的方式——网络部署。
其实网络部署与通过USB数据线部署在本质上是一样的,只是这种方式不需要通过USB数据线将手机与计算机进行连接,只需要手机与计算机在同一个网段即可。
在默认情况下,手机的网络调试功能是关闭的,所以需要使用adb或hdc命令打开手机的网络调试功能。adb是Android的命令,hdc是HarmonyOS的命令,这两个命令的功能类似。这两个命令的使用方法如下(执行其中一个即可):
adb tcpip 5555
hdc tmode port 5555
注意,在执行上面的命令之前,手机必须先用USB数据线与计算机相连,等打开手机的网络调试服务后,就可以断开USB数据线的连接了。如果计算机连接了多部手机,使用adb命令需要添加-s命令行参数指定特定手机的标识,使用hdc命令需要添加-t命令行参数指定特定手机的标识,命令如下:
adb -s 017MXC19AS000544 tcpip 5555
hdc -t -t 017MXC19AS000544 tmode port 5555
其中,5555是端口号,可以指定任何端口号。计算机需要通过这个端口号连接手机。如果成功打开手机的网络调试服务,可以使用下面的命令连接HarmonyOS手机。
● adb方式:
adb connect 192.168.31.220:5555
● hdc方式:
hdc tconn 192.168.31.220:5555
成功连接HarmonyOS手机后,就可以运行程序了。这时会在图1-38所示的列表中看到通过网络连接的HarmonyOS设备,选择设备并单击OK按钮运行即可,效果与通过USB数据线部署App是一样的。