OpenHarmony自定义系统应用之实践介绍 原创 精华

深开鸿
发布于 2023-6-26 13:53
浏览
3收藏

作者:赵军霞

前言

OpenHarmony系统应用是指预装在OpenHarmony操作系统中的应用程序,也称为系统应用。这些应用程序通常由操作系统开发者开发,包括系统设置、电话、短信、浏览器、相机、音乐、视频等常用应用程序。这些应用程序通常具有更高的权限和更深入的系统集成,可以访问更多的系统资源和功能。
自定义系统应用是指用户自己开发或定制的OpenHarmony系统应用程序。用户可以根据自己的需求和喜好,开发或定制自己的系统应用程序,如主题、锁屏、桌面、通知栏等。这些应用程序通常具有更高的个性化和定制化,可以满足用户更多的需求和偏好。

本文从文件准备、生成签名包、系统集成几个方面,介绍如何在OpenHarmony系统上开发自定义的系统应用,供开发者学习参考。

1.文件准备

1.1 未签名应用包

选模板

在DevEco Studio中选择自定义应用所需的模板。
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

然后选择自定义应用所需的应用模型、SDK。
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

最后按照模板引导创建ArkTS工程。

编译包

工程创建成功后,启动编译选项,生成未签名的hap包。

OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

编译成功后,在工程目录\entry\build\default\outputs\default路径下,可见生成的未签名hap包。
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

1.2 签名所需文件

为了保证OpenHarmony应用的完整性和来源可靠,在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。
本文介绍的是使用签名工具以命令行方式进行Hap包签名的方法,签名所需文件如下:

签名密钥库文件:OpenHarmony.p12

Profile签名证书:OpenHarmonyProfileRelease.pem、OpenHarmonyProfileDebug.pem

Profile模板文件:UnsgnedReleasedProfileTemplate.json、UnsgnedDebugProfileTemplate.json

签名工具:hap-sign-tool.jar

以上文件可在SDK中会获得
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

签名工具工具详细说明

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签名流程如下图:
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

由图可见,根据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 签名应用

应用签名流程如下图:
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

由图可见,根据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"

注意:entry-default-unsigned.hap为你未签名的hap包,zjxapp.hap为签名后生成的包

3. 系统集成

3.1 增加hap包

将2.3生成的包拷贝到applications\standard\hap路径下

OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

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文件中,去掉回车符,示例如图:
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

3.3.1.3 获取app_signature

到profiler.cer路径下,在命令行终端中根据证书文件获取签名信息,命令如下:

keytool -printcert -file .\profiler.cer

命令执行后结果如图所示:
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

将SHA256值去掉冒号即可得到app_signature

3.3.2 修改权限配置文件

3.3.2.1 修改install_list

根据包名修改vendor\hihope\rk3568\preinstall-config\install_list.json
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

3.3.2.2 修改install_list_capability

根据包名、app_signature修改vendor\hihope\rk3568\preinstall-config\install_list_capability.json
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

3.3.2.3 修改install_list_permissions

根据包名、app_signature、以及需要的权限修改vendor\hihope\rk3568\preinstall-config\install_list_permissions.json
OpenHarmony自定义系统应用之实践介绍-鸿蒙开发者社区

3.4 编译烧录

以上修改完成后,编译成功,进行烧录。烧录成功后,预置的系统应用显示在桌面上。

4.总结

本文介绍如何在OpenHarmony系统上开发自定义的系统应用,重点介绍了如何使用打包工具命令行方式生成应用签名包的方法,以及如何修改预置应用配置的步骤,开发者在此基础上即可开发自定义的系统应用程序,以便更好地提高系统的定制化和个性化、增强系统的功能和竞争力、满足用户需求等。

更多原创内容请关注:深开鸿技术团队

入门到精通、技巧到案例,系统化分享OpenHarmony开发技术,欢迎投稿和订阅,让我们一起携手前行共建生态。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2023-6-26 13:54:43修改
8
收藏 3
回复
举报
7条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

能自定义的系统应用,就不用每次换系统重新安装了!

回复
2023-6-26 13:57:31
诺舒华吃西瓜
诺舒华吃西瓜

现在手机厂商对修改系统应用确实都放开了

回复
2023-6-28 16:24:37
带带小老弟
带带小老弟

自己开发系统应用做主题还是有不少商业前景

回复
2023-6-29 11:25:51
冰淇淋爱我
冰淇淋爱我

如何想上架的话,系统应用审核会更严格吗

回复
2023-6-29 18:33:10
0aaron
0aaron

未来系统定制可能成为热门生意

回复
2023-6-30 18:46:29
殇时云起
殇时云起

有烧录成功的视频吗,想看看效果

回复
2023-7-3 10:17:37
wx65236c8659ae1
wx65236c8659ae1

/system/app中的系统应用有什么比较好的升级方案吗?直接替换hap没有效果,必须删除/data目录重启设备才生效,但是这样又会清除应用数据

回复
2023-11-21 10:24:53
回复
    相关推荐