【HarmonyOS鸿蒙开发】HarmonyOS鸿蒙App开发真机测试以及那些坑儿
HarmonyOS鸿蒙App开发真机测试以及那些坑儿
6月2号看HarmonyOS的发布会,激情澎湃,跃跃欲试。6月3号上午备份数据,中午升级HarmonyOS系统,下午就开始鼓捣真机跑程序了,也遇到了很多坑,也曾经一度要吐血。。今天我把这些整理一下,记录下来,和大家共享。
一、前提
如果想在真机上运行一个HarmonyOS的应用,首先你要先搭建好HarmonyOS的开发环境,之前的文章有过。
- 搭建好HarmonyOS的开发环境
- DevEco Studio开发工具上,创建好一个HarmonyOS的应用
二、生成密钥和证书请求文件
2.1 生成密钥
1、首先,在DevEco Studio开发工具上,选择Build-->Generate Key and CSR。
2、我们先来生成Key,就是密钥文件。这里要注意密钥文件的后缀必须是.p12,选择好存储位置即可。
- Key Store Path:选择密钥库文件存储路径。
- Password:设置密钥库密码,必须由大写字母、小写字母、数字和特殊符号中的两种以上字符的组合,长度至少为8位。请记住该密码,后续签名配置需要使用。
- Confirm Password:再次输入密钥库密码。
2.2 生成证书请求文件
1、接上面,继续填入信息。
-
Alias:密钥的别名信息,用于标识密钥名称。请记住该别名,后续签名配置需要使用。
-
Password:密钥对应的密码,与密钥库密码保持一致,无需手动输入。
-
Validity:证书有效期,建议设置为25年及以上,覆盖应用的完整生命周期。
-
Certificate:输入证书基本信息,如组织、城市或地区、国家码等。
2、然后生成证书请求文件,也就是CSR文件。这里要注意密钥文件的后缀必须是.csr,选择好存储位置即可。
3、然后,我们就会在刚刚所指定的目录下,生成了两个文件。一个是密钥文件demo1.p12,以及证书请求文件demo1.csr。
三、申请证书和Profile
我们需要打开AppGallery Connect网站,这里需要登陆。
3.1 申请应用调试证书
登陆后,选择用户与访问。
在左侧导航栏选择“证书管理”,进入证书管理页面,点击“新增证书”。
在弹出的“新增证书”窗口,填写要申请的证书信息,点击“提交”。
然后在证书管理页面,我们就可以看到刚刚添加好的调试证书了。还展示了证书名称、证书类型和失效日期。我们得下载这个证书,到本地。
- 点击“下载”,可下载证书。
- 点击“废除”,在确认框中点击“确认”,可废除证书。
3.2 注册调试设备
还是刚刚到页面,我们点击设备管理。进入设备管理页面,点击右上角的“添加设备”。
在弹出窗口填写设备信息,点击“提交”。
设备添加成功后,展示在设备管理页面。如您需删除调试设备,点击“操作”列的“删除”即可。
踩个大坑儿
我之前为了获取我那部华为Mate30手机的UDID。刚刚升级了HarmonyOS 2.0系统,根据官方文档给的命令,就是获取不到,用Mac系统连接,用Windows系统,来来回回各种折腾,后来还是联系了华为的一个工程师,才取到了UDID。
这里我先写Mac版的,Windows的在下面。
UDID:设备唯一标识符,是由字母和数字组成的64位字符串。可在对应的调试设备上获取其UDID,调试设备要求运行HarmonyOS系统。
原理就是根据toolchains中的hdc命令来获取设备的UDID。
首先要知道你的SDK安装在哪里了,不知道的话,可以打开DevEco Studio,打开设置页面里的HarmonyOS SDK,这个我们之前配置环境变量的时候用过。
其实主要是用到这里toolchains下的hdc命令。
所以我们需要配置环境变量。
1、打开Mac下的终端,输入以下命令,打开bash_profile文件。
sudo vim ~/.bash_profile
2、输入i进入vim编辑模式:
3、然后我们输入下面数据:
export PATH=/Users/hanru/Library/Huawei/Sdk/toolchains:$PATH
4、然后按esc键退出编辑模式。并输入 :wq 然后回车,保存并退出编辑。可输入vim .bash_profile 查看是否保存成功。
5、输入source ~/.bash_profile ,让刚刚的配置生效。
6、然后输入hdc help,发现hdc命令可以使用了。
到此我们配置完了,然后将你的华为手机连入电脑。在弹出的窗口中选择传输文件。

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

然后我们在终端先输入:
hdc shell
再输入:
bm get --udid
就可以看到这台手机的UDID了。
Windows版:
首先也是要知道你的toolchains下载到哪了,我的hdc.exe命令位置:
然后配置环境变量,这个简单。就和你配置Java,Golang等编程语言差不多。我的电脑右键,选择属性。然后选择高级系统设置--选择高级--环境变量--系统变量--Path--点击编辑,然后把hdc.exe所在的toolchains目录,配置到path路径下。
然后打开快捷键win+R,输入cmd,然后回车,打开命令行窗口,输入:
hdc help
然后输入:
hdc shell
再输入:
bm get --udid
就可以看到设备的UDID了。
切记切记,也和上面一样,一定要确保手机连入了电脑,并且允许USB调试。否则会读不到设备。error: no devices/emulators found
3.3 获取Profile
1、我们首先要创建一个项目。
然后选择我的项目:
添加项目:
填写项目名称:
2、该项目下创建一个应用。
填入应用信息:
- 选择平台:选择APP(HarmonyOS应用)。
- 支持设备:选择调试的设备类型。
- 应用包名:必须与config.json文件中的“bundleName”取值保持一致。
- 应用名称、应用分类、默认语言请根据实际需要进行设置。
3、选择“HarmonyOS应用 > HAP Provision Profile管理”,进入“管理HAP Provision Profile”页面,点击右上角“添加”。
在弹出的“HarmonyAppProvision信息”窗口添加调试Profile,填入信息:
调试Profile申请成功后,“管理HAP Provision Profile”页面展示Profile名称、Profile类型、添加的证书和失效日期。这里,我们得下载下来。
- 点击“下载”,可下载Profile文件。
- 点击“删除”,在确认框中点击“确认”,可删除Profile文件。
- 点击“查看设备”,可查看Profile绑定的调试设备。
到此,我们有了应用调试证书:RubyHanMate30.cer,和Profile文件:HelloWorldDebug.p7b。
四、签名
接下来,我们要进行签名。打开File下的Project Structure。
进行签名:
签完后,可以在build.gradle文件下可以查看签名信息:
五、运行
然后运行程序即可。
我们就能够看到手机上多了一个App。

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

六、原理
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生成
第二步,我们生成了证书请求文件:DevEco Studio生成
第三步,我们获取了应用调试的数字证书:由华为AppGallery Connect颁发。
第四步,我们获取了Profile文件(HarmonyAppProvision文件):从华为AppGallery Connect生成并下载获取。
第五步,到此准备结束,然后去给程序签名,然后运行即可。
如果我们想在手机上执行第二个应用程序,需要重新获取Profile文件。也就是说在AppGallery Connect网站上添加一个新的应用,添加新的Profile,并下载。然后给程序签名,然后运行即可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)