鸿蒙应用前景
随着鸿蒙生态的逐步发展,鸿蒙应用数量也在持续增长,支持了手机、平板等多种设备,覆盖了生活、办公、娱乐等多个领域,开发者可以创造出更多的应用场景,用于促进鸿蒙生态的完善。
当应用开发完成后,可在AppGallery Connect
平台上申请上架,程序上架成功后在鸿蒙应用市场中显示,用户在应用市场中可直接搜索、下载、安装和使用。
相对于开发者而言,开发的过程或许不难,难的是开发完成后应用的上架,这个上架流程相对比较复杂,所以文章内总结了鸿蒙应用(Harmony OS)上架过程中的重要操作,可供开发者参考。
鸿蒙应用上架流程
鸿蒙应用上架需严格遵循 AGC流程(注册→调试→签名→提审)。
前置条件
创建鸿蒙应用
- 登录
AppGallery Connect
(AGC)平台,在我的项目-》添加项目-》创建项目。

- 在创建的项目中的
APP ID
界面创建HarmonyOS应用,根据界面提示选择应用类型,填写应用名称、包名等信息。

包名要求:
1)全网唯一,不与安卓包名重复;
2)需与
DevEco Studio
中app.json5
文件中的bundleName字段完全一致。
编译打包鸿蒙应用
Harmony OS应用/元服务通过数字证书(.cer)和Profile文件(.p7b)来保证应用/元服务的完整性,所以在申请数字证书和Profile文件前需要进行下述操作:
- 首先,需要通过
DevEco Studio
来生成密钥(.p12)和证书请求文件(.csr); - 然后,申请发布数字证书和Profile文件;
- 最后,将密钥(.p12)文件、数字证书(.cer)文件和Profile(.p7b)文件配置到工程中。
创建签名文件
在IDE生成密钥(.p12)和证书请求文件(.csr)
- 在
DevEco Studio
工具中,点击Build-》Generate Key and CSR界面创建p12密钥库文件; - 在Generate Key and CSR界面,设置CSR文件存储路径和CSR文件名;

申请发布证书
在AGC申请发布证书(.cer)和发布Profile(.p7b)
- 在AGC平台申请发布证书(仅支持1个发布证书),在弹出的”新增证书窗口”填写要申请的证书信息,点击”提交”;

- 绑定发布证书,包名与应用一致,申请发布Profile;

IDE配置签名
- 申请发布证书和发布Profile文件后,在IDE工具里进行配置;
- 在
File-》Project Structure-》Project-》Signing Configs
窗口中,取消勾选Automatically generate signature
; - 如果是HarmonyOS应用,勾选
Support HarmonyOS
,然后配置工程的签名信息。
打包应用
在DevEco Studio配置完成后,编译生成.app
格式包;

提交上架
- 应用必须满足华为应用市场的审核要求,具体请参见应用审核指南;
- 登录AppGallery Connect,选择”我的应用”;
- 点击待发布的应用/元服务,在左侧导航栏选择”应用信息”菜单,开始配置应用信息,如应用名称、应用介绍、隐私声明等,所有配置完成后点击”提交审核”。
安全防范措施
应用在提交上架后,可能面临着代码安全的问题,Virbox Protector
工具支持对Harmony so库文件的保护,可以实现代码虚拟化、代码混淆、反调试、完整性校验等功能,可以有效的代码的泄露。
SO库的特点
- so库一般是c/c++语言开发,可一套代码编译成多个应用平台(比如Android、Linux、Harmony),故大部分开发者将核心功能或算法等封装在so库中,可以在多个应用和平台中复用,提高开发效率 ;
- so库是直接与操作系统交互执行,可提高执行效率,所以它更适合底层的控制(比如传感器、摄像头等),也适合处理计算型任务(如图像处理、音视频编解码等);
- 开发过程中可能需要集成第三方的功能模块,而很多模块都是以so库提供,所以重要功能放在so库也更方便的去集成第三方库;
- 另外so库是二进制文件,比高级语言代码更难反编译和逆向工程,可以更好地保护核心算法和逻辑。
综上所述,Virbox Protector
从开发者反馈使用的场景和代码安全层面考虑,直接支持Harmony so库的保护。
SO库的安全性问题
- 程序被反编译虽然编译生成的二进制文件逆向分析难度较高,但由于相应的反编译工具(比如ida、Ghidra)也成熟强大,依然可以反编译为类C伪代码,再加上特征库、符号信息、模块交叉引用等方式,进而更容易去读取核心逻辑和算法;
- 被调试风险攻击者可通过调试工具比如(DevEco Studio)附加应用进程进行调试,在调试过程中可能暴露敏感信息(如密钥、算法逻辑);
- 程序被篡改攻击者可以通过修改应用内存改变程序行为,绕过安全检查或实现恶意功能,导致数据泄露;
- 调试符号暴漏so库中包含调试符号(如函数名、变量名、函数地址),可能暴露敏感信息,则攻击者可以更容易地理解代码逻辑,对代码进行分析。
SO库的加固
对SO库的加固的加固一般有两种方式:
- 第一种方式
- 先打包hap或app,然后解压包;
- 拿出lib目录下的so库,对so库直接进行加固;
- so库加固后再替换到hap或app包中,然后再进行重签名。
- 第二种方式
- 在IDE工具中直接集成调用
Virbox Protector
工具,在编译so库的时候在CMakeLists.txt
中添加配置,如图所示: - 可以使编译过程中对so库进行加固,这样打包后的hap或app包中的so库就是保护过后的。
- 在IDE工具中直接集成调用

参数介绍
set:设置
Virbox Protector
工具的路径;TARGET:指要添加自定义命令的目标,命令会在构建目标时执行;
TARGET_FILE:entry:指待保护的so库文件;
COMMAND:指要执行的命令。