HarmonyOS鸿蒙App开发真机测试以及那些坑儿

5,583 阅读8分钟

HarmonyOS鸿蒙App开发真机测试以及那些坑儿

作者:韩茹

公司:程序咖(北京)科技有限公司

程序咖:IT职业技能评测平台

网址:www.chengxuka.com

6月2号看HarmonyOS的发布会,激情澎湃,跃跃欲试。我有一个华为手机,6月3号,上午备份数据,中午升级HarmonyOS系统,下午就开始鼓捣真机跑程序了,也遇到了很多坑,也曾经一度要吐血。。今天我把这些整理一下,记录下来,和大家共享。

一、前提

如果想在真机上运行一个HarmonyOS的应用,首先你要先搭建好HarmonyOS的开发环境,之前的文章有过。

  • 搭建好HarmonyOS的开发环境
  • DevEco Studio开发工具上,创建好一个HarmonyOS的应用

二、生成密钥和证书请求文件

2.1 生成密钥

1、首先,在DevEco Studio开发工具上,选择Build-->Generate Key and CSR。

WX20210604-101429@2x

2、我们先来生成Key,就是密钥文件。这里要注意密钥文件的后缀必须是.p12,选择好存储位置即可。

WX20210604-104030@2x

  • Key Store Path:选择密钥库文件存储路径。
  • Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
  • Confirm Password:再次输入密钥库密码。

2.2 生成证书请求文件

1、接上面,继续填入信息。

WX20210604-104449@2x

  • Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。

  • Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。

  • Validity:证书有效期,建议设置为25年及以上,覆盖应用的完整生命周期。

  • Certificate:输入证书基本信息,如组织、城市或地区、国家码等。

2、然后生成证书请求文件,也就是CSR文件。这里要注意密钥文件的后缀必须是.csr,选择好存储位置即可。

WX20210604-104905@2x

3、然后,我们就会在刚刚所指定的目录下,生成了两个文件。一个是密钥文件demo1.p12,以及证书请求文件demo1.csr。

WX20210604-105410@2x

三、申请证书和Profile

我们需要打开AppGallery Connect网站,这里需要登陆。

WX20210604-105843@2x

3.1 申请应用调试证书

登陆后,选择用户与访问。

WX20210604-112018@2x

在左侧导航栏选择“证书管理”,进入证书管理页面,点击“新增证书”。

WX20210604-112327@2x

在弹出的“新增证书”窗口,填写要申请的证书信息,点击“提交”。

WX20210604-112543@2x

然后在证书管理页面,我们就可以看到刚刚添加好的调试证书了。还展示了证书名称、证书类型和失效日期。我们得下载这个证书,到本地。

  • 点击“下载”,可下载证书。
  • 点击“废除”,在确认框中点击“确认”,可废除证书。

WX20210604-112631@2x

3.2 注册调试设备

还是刚刚到页面,我们点击设备管理。进入设备管理页面,点击右上角的“添加设备”。

WX20210604-112949@2x

在弹出窗口填写设备信息,点击“提交”。

WX20210604-113154@2x

设备添加成功后,展示在设备管理页面。如您需删除调试设备,点击“操作”列的“删除”即可。

WX20210604-113213@2x

踩个大坑儿

我之前为了获取我那部华为Mate30手机的UDID。刚刚升级了HarmonyOS 2.0系统,根据官方文档给的命令,就是获取不到,用Mac系统连接,用Windows系统,来来回回各种折腾,后来还是联系了华为的一个工程师,才取到了UDID。

这里我先写Mac版的,Windows的在下面。

UDID:设备唯一标识符,是由字母和数字组成的64位字符串。可在对应的调试设备上获取其UDID,调试设备要求运行HarmonyOS系统

原理就是根据toolchains中的hdc命令来获取设备的UDID。

首先要知道你的SDK安装在哪里了,不知道的话,可以打开DevEco Studio,打开设置页面里的HarmonyOS SDK,这个我们之前配置环境变量的时候用过。

WX20210604-114136@2x

其实主要是用到这里toolchains下的hdc命令。

WX20210604-114346@2x

所以我们需要配置环境变量。

1、打开Mac下的终端,输入以下命令,打开bash_profile文件。

sudo vim ~/.bash_profile

2、输入i进入vim编辑模式:

WX20210604-115005@2x

3、然后我们输入下面数据:

export PATH=/Users/hanru/Library/Huawei/Sdk/toolchains:$PATH

WX20210604-115227@2x

4、然后按esc键退出编辑模式。并输入 :wq 然后回车,保存并退出编辑。可输入vim .bash_profile 查看是否保存成功。

5、输入source ~/.bash_profile ,让刚刚的配置生效。

6、然后输入hdc help,发现hdc命令可以使用了。

WX20210604-115603@2x

到此我们配置完了,然后将你的华为手机连入电脑。在弹出的窗口中选择传输文件。

Wechathttps://img.chengxuka.com2771

踩坑儿:

这里一定要允许USB调试。否则一会儿命令会读不到设备。error: no devices/emulators found

Wechathttps://img.chengxuka.com2772

然后我们在终端先输入:

hdc shell

再输入:

bm get --udid

就可以看到这台手机的UDID了。

WX20210604-124107@2x

Windows版:

首先也是要知道你的toolchains下载到哪了,我的hdc.exe命令位置:

WX20210604-170840@2x

然后配置环境变量,这个简单。就和你配置Java,Golang等编程语言差不多。我的电脑右键,选择属性。然后选择高级系统设置--选择高级--环境变量--系统变量--Path--点击编辑,然后把hdc.exe所在的toolchains目录,配置到path路径下。

aaaa

然后打开快捷键win+R,输入cmd,然后回车,打开命令行窗口,输入:

hdc help

WX20210604-171115@2x

然后输入:

hdc shell

再输入:

bm get --udid

就可以看到设备的UDID了。

WX20210604-171316@2x

切记切记,也和上面一样,一定要确保手机连入了电脑,并且允许USB调试。否则会读不到设备。error: no devices/emulators found

3.3 获取Profile

1、我们首先要创建一个项目。

然后选择我的项目:

WX20210604-133759@2x

添加项目:

WX20210604-111327@2x

填写项目名称:

WX20210604-111517@2x

2、该项目下创建一个应用。

WX20210604-134515@2x

填入应用信息:

WX20210604-135018@2x

  • 选择平台:选择APP(HarmonyOS应用)。
  • 支持设备:选择调试的设备类型。
  • 应用包名:必须与config.json文件中的“bundleName”取值保持一致。
  • 应用名称、应用分类、默认语言请根据实际需要进行设置。

3、选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击右上角“添加”。

WX20210604-135250@2x

在弹出的“HarmonyAppProvision信息”窗口添加调试Profile,填入信息:

WX20210604-135351@2x

调试Profile申请成功后,“管理HAP Provision Profile”页面展示Profile名称、Profile类型、添加的证书和失效日期。这里,我们得下载下来。

  • 点击“下载”,可下载Profile文件。
  • 点击“删除”,在确认框中点击“确认”,可删除Profile文件。
  • 点击“查看设备”,可查看Profile绑定的调试设备。

WX20210604-135434@2x

到此,我们有了应用调试证书:RubyHanMate30.cer,和Profile文件:HelloWorldDebug.p7b。

WX20210604-135825@2x

四、签名

接下来,我们要进行签名。打开File下的Project Structure。

WX20210604-142444@2x

进行签名:

WX20210604-142950@2x

签完后,可以在build.gradle文件下可以查看签名信息:

WX20210604-143258@2x

五、运行

然后运行程序即可。WX20210604-143716@2x

我们就能够看到手机上多了一个App。

Wechathttps://img.chengxuka.com2775

点进去查看一下运行效果:

Wechathttps://img.chengxuka.com2776

六、原理

HarmonyOS应用通过数字证书(.cer文件)和HarmonyAppProvision文件(.p7b文件)来保证应用的完整性,需要通过DevEco Studio来生成密钥文件(.p12文件)和证书请求文件(.csr文件)。同时,也可以使用命令行工具的方式来生成密钥文件和证书请求文件。

基本概念

  • 密钥:包含非对称加密中使用的公钥和私钥,存储在密钥库文件中,格式为.p12。其中公钥用于内容的加密,私钥用于解密;在数字签名过程中,私钥用于数字签名,公钥用于解密。
  • 证书请求文件:格式为.csr,全称为Cerificate Signing Request,包含密钥对中的公钥和公共名称、组织名称、组织单位等信息,用于向AppGallery Connect申请数字证书。
  • 数字证书:格式为.cer,由华为AppGallery Connect颁发。
  • HarmonyAppProvision文件:格式为.p7b,包含HarmonyOS应用的包名、数字证书信息、描述应用允许申请的证书权限列表,以及允许应用调试的设备列表(如果应用类型为Release类型,则设备列表为空)等内容,每个应用包中均必须包含一个HarmonyAppProvision文件。

所以,我们用DevEco Studio先生成了密钥文件:DevEco Studio生成

WX20210604-144351@2x

第二步,我们生成了证书请求文件:DevEco Studio生成

WX20210604-144452@2x

第三步,我们获取了应用调试的数字证书:由华为AppGallery Connect颁发。

WX20210604-144604@2x

第四步,我们获取了Profile文件(HarmonyAppProvision文件):从华为AppGallery Connect生成并下载获取。

WX20210604-144727@2x

第五步,到此准备结束,然后去给程序签名,然后运行即可。

如果我们想在手机上执行第二个应用程序,需要重新获取Profile文件。也就是说在AppGallery Connect网站上添加一个新的应用,添加新的Profile,并下载。然后给程序签名,然后运行即可。