前言
OpenHarmony系统应用是指预装在OpenHarmony操作系统中的应用程序,也称为系统应用。这些应用程序通常由操作系统开发者开发,包括系统设置、电话、短信、浏览器、相机、音乐、视频等常用应用程序。这些应用程序通常具有更高的权限和更深入的系统集成,可以访问更多的系统资源和功能。
自定义系统应用是指用户自己开发或定制的OpenHarmony系统应用程序。用户可以根据自己的需求和喜好,开发或定制自己的系统应用程序,如主题、锁屏、桌面、通知栏等。这些应用程序通常具有更高的个性化和定制化,可以满足用户更多的需求和偏好。
本文从文件准备、生成签名包、系统集成几个方面,介绍如何在OpenHarmony系统上开发自定义的系统应用,供开发者学习参考。
1.文件准备
1.1 未签名应用包
选模板
在DevEco Studio中选择自定义应用所需的模板。
然后选择自定义应用所需的应用模型、SDK。
最后按照模板引导创建ArkTS工程。
编译包
工程创建成功后,启动编译选项,生成未签名的hap包。
编译成功后,在工程目录\entry\build\default\outputs\default路径下,可见生成的未签名hap包。
1.2 签名所需文件
为了保证OpenHarmony应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。
本文介绍的是使用签名工具以命令行方式进行Hap包签名的方法,签名所需文件如下:
签名密钥库文件:OpenHarmony.p12
Profile签名证书:OpenHarmonyProfileRelease.pem、OpenHarmonyProfileDebug.pem
Profile模板文件:UnsgnedReleasedProfileTemplate.json、UnsgnedDebugProfileTemplate.json
签名工具:hap-sign-tool.jar
以上文件可在SDK中会获得
2. 生成签名应用包
2.1 修改profile
app1-profile-release.json中会定义当前应用名称"bundle-name"、应用的权限等级"apl"。
权限等级有normal、system_basic、system_core三种,默认等级为normal,对于系统应用的话,需要修改权限,此处改为system_core。
应用名称改为用户自定义的包名即可,此处改为com.example.zjxapp。
{"version-name": "2.0.0","version-code": 2,"app-distribution-type": "os_integration","uuid": "5027b99e-5f9e-465d-9508-a9e0134ffe18","validity": {"not-before": 1594865258,"not-after": 1689473258},"type": "release","bundle-info": {"developer-id": "OpenHarmony","distribution-certificate": "-----BEGIN CERTIFICATE-----\nMIICFTCCAZmgAwIBAgIEFRGSbjAMBggqhkjOPQQDAwUAMGMxCzAJBgNVBAYTAkNO\nMRQwEgYDVQQKEwtPcGVuSGFybW9ueTEZMBcGA1UECxMQT3Blbkhhcm1vbnkgVGVh\nbTEjMCEGA1UEAxMaT3Blbkhhcm1vbnkgQXBwbGljYXRpb24gQ0EwHhcNMjIwNDAy\nMDY1OTA4WhcNMzIwMzMwMDY1OTA4WjBKMRUwEwYDVQQDDAxpZGVfZGVtb19hcHAx\nDTALBgNVBAsTBFVuaXQxFTATBgNVBAoTDE9yZ2FuaXphdGlvbjELMAkGA1UEBhMC\nQ04wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARGc9ftjM6ncln8AqF0AhTsyphc\nhmKWktwgsZwisqy7X+clViYnbw9WpRRoxJYeZ6GL3MUiOHiM9UDpwOmjdYPOo1Iw\nUDAdBgNVHQ4EFgQUG91q9tKNxBRQgQFzfuSnhrP/mKcwDgYDVR0PAQH/BAQDAgeA\nMB8GA1UdIwQYMBaAFNuGtyIW1QuhS7fdJXu58QV9oi1HMAwGCCqGSM49BAMDBQAD\naAAwZQIweNK78cfmJdBVSMowMukZoIevBFNRNVYaUxxWpbn+X2Y9x8STmxqHhPj6\np0wKd9qnAjEAuU/AuW9NO04joHCJnM0I2PkDWJKw+eJiVc3ggLAOJTE9TfXyN0JM\nUdjqqzpQQj4u\n-----END CERTIFICATE-----\n","bundle-name": "com.example.zjxapp","apl": "system_core","app-feature": "hos_system_app"},"acls": {"allowed-acls": [""]},"permissions": {"restricted-permissions": []},"issuer": "pki_internal"
}
2.2 签名Profile
Profile签名流程如下图:
由图可见,根据sdk中的p12文件、2.1章节的profile文件,可以生成签名的Profile文件,文件格式为*.p7b;命令如下
java -jar hap-sign-tool.jar sign-profile -keyAlias "OpenHarmony Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile "OpenHarmonyApplication.pem" -inFile "app1-profile-release.json" -keystoreFile "OpenHarmony.p12" -outFile "profile.p7b" -keyPwd "123456" -keystorePwd "123456"
2.3 签名应用
应用签名流程如下图:
由图可见,根据1.1中未签名的应用包以及2.2签名的Profile文件,可以生成签名的应用,命令如下
java -jar hap-sign-tool.jar sign-app -keyAlias "OpenHarmony Application Release" -signAlg "SHA256withECDSA" -mode "localSign" -appCertFile "OpenHarmonyApplication.pem" -profileFile "profile.p7b" -inFile "entry-default-unsigned.hap" -keystoreFile "OpenHarmony.p12" -outFile "zjxapp.hap" -keyPwd "123456" -keystorePwd "123456"
- 1.
注意:entry-default-unsigned.hap为你未签名的hap包,zjxapp.hap为签名后生成的包
3. 系统集成
3.1 增加hap包
将2.3生成的包拷贝到applications\standard\hap路径下
3.2 修改gn文件
gn文件路径为:\applications\standard\hap\BUILD.gn,在文件中增加如下代码:
ohos_prebuilt_etc("zjxapp_hap") {source = "zjxapp.hap"module_install_dir = "app/com.ohos.zjxapp"part_name = "prebuilt_hap"subsystem_name = "applications"
}
.
修改依赖项deps,增加zjxapp_hap:
group("hap") {
deps = [
"//applications/standard/hap:calc_demo_hap",
"//applications/standard/hap:zjxapp_hap",
]
3.3 修改预安装配置
3.3.1 获取app_signature
app_signature信息需要在系统预安装配置中使用,故需要优先生成app_signature。
3.3.1.1 新建profiler.cer文件
任意路径下新建一文件,命名为profiler.cer
3.3.1.2 添加profiler.cer内容
根据2.2生成的p7b文件中distribution-certificate字段的值到profiler.cer文件中,去掉回车符,示例如图:
3.3.1.3 获取app_signature
到profiler.cer路径下,在命令行终端中根据证书文件获取签名信息,命令如下:
keytool -printcert -file .\profiler.cer
命令执行后结果如图所示:
将SHA256值去掉冒号即可得到app_signature
3.3.2 修改权限配置文件
3.3.2.1 修改install_list
根据包名修改vendor\hihope\rk3568\preinstall-config\install_list.json
3.3.2.2 修改install_list_capability
根据包名、app_signature修改vendor\hihope\rk3568\preinstall-config\install_list_capability.json
3.3.2.3 修改install_list_permissions
根据包名、app_signature、以及需要的权限修改vendor\hihope\rk3568\preinstall-config\install_list_permissions.json
3.4 编译烧录
以上修改完成后,编译成功,进行烧录。烧录成功后,预置的系统应用显示在桌面上。
4.总结
本文介绍如何在OpenHarmony系统上开发自定义的系统应用,重点介绍了如何使用打包工具命令行方式生成应用签名包的方法,以及如何修改预置应用配置的步骤,开发者在此基础上即可开发自定义的系统应用程序,以便更好地提高系统的定制化和个性化、增强系统的功能和竞争力、满足用户需求等。
最后
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
鸿蒙HarmonyOS Next全套学习资料←点击领取!(安全链接,放心点击)
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
鸿蒙(HarmonyOS NEXT)最新学习路线
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
HarmonyOS Next 最新全套视频教程
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
- ArkTS语言
- 安装DevEco Studio
- 运用你的第一个ArkTS应用
- ArkUI声明式UI开发
- .……
《鸿蒙开发进阶》
- Stage模型入门
- 网络管理
- 数据管理
- 电话服务
- 分布式应用开发
- 通知与窗口管理
- 多媒体技术
- 安全技能
- 任务管理
- WebGL
- 国际化开发
- 应用测试
- DFX面向未来设计
- 鸿蒙系统移植和裁剪定制
- ……
《鸿蒙进阶实战》
- ArkTS实践
- UIAbility应用
- 网络案例
- ……
大厂面试必问面试题
鸿蒙南向开发技术
鸿蒙APP开发必备
鸿蒙生态应用开发白皮书V2.0PDF
获取以上完整鸿蒙HarmonyOS学习资料,请点击→
纯血版全套鸿蒙HarmonyOS学习资料
总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。