OpenHarmony自定义系统应用之实践介绍

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

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

前言

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

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

1、文件准备

(1)未签名应用包

选模板

在DevEco Studio中选择自定义应用所需的模板。

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

然后选择自定义应用所需的应用模型、SDK。

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

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

编译包

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

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

编译成功后,在工程目录\entry\build\default\outputs\default路径下,可见生成的未签名hap包。

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

(2)签名所需文件

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

  • 签名密钥库文件:OpenHarmony.p12
  • Profile签名证书:OpenHarmonyProfileRelease.pem、OpenHarmonyProfileDebug.pem
  • Profile模板文件:UnsgnedReleasedProfileTemplate.json、UnsgnedDebugProfileTemplate.json
  • 签名工具:hap-sign-tool.jar

以上文件可在SDK中会获得。

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

签名工具工具详细说明。

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)签名Profile

Profile签名流程如下图:

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区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"

(3)签名应用

应用签名流程如下图:

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区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、系统集成

(1)增加hap包

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

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

(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)修改预安装配置

获取app_signature

app_signature信息需要在系统预安装配置中使用,故需要优先生成app_signature。

新建profiler.cer文件

任意路径下新建一文件,命名为profiler.cer

添加profiler.cer内容

根据2.2生成的p7b文件中distribution-certificate字段的值到profiler.cer文件中,去掉回车符,示例如图:

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

获取app_signature

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

keytool -printcert -file .\profiler.cer

命令执行后结果如图所示:

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

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

修改权限配置文件

修改install_list

根据包名修改vendor\hihope\rk3568\preinstall-config\install_list.json

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

修改install_list_capability

根据包名、app_signature修改vendor\hihope\rk3568\preinstall-config\install_list_capability.json

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

修改install_list_permissions

根据包名、app_signature、以及需要的权限修改vendor\hihope\rk3568\preinstall-config\install_list_permissions.json

OpenHarmony自定义系统应用之实践介绍-开源基础软件社区OpenHarmony自定义系统应用之实践介绍-开源基础软件社区

(4)编译烧录

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

4、总结

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

想了解更多关于开源的内容,请访问:

51CTO 开源基础软件社区

https://ost.51cto.com

责任编辑:jianghua 来源: 51CTO 开源基础软件社区
相关推荐

2022-02-21 15:05:09

LauncherOpenHarmon鸿蒙

2011-08-11 11:51:07

iPhone键盘

2023-08-10 17:14:52

鸿蒙自定义弹窗

2022-04-07 14:17:15

Harmonytoast组件鸿蒙

2022-03-01 16:09:06

OpenHarmon鸿蒙单选组件

2017-05-19 10:03:31

AndroidBaseAdapter实践

2023-12-21 09:00:21

函数React 组件useEffect

2017-05-18 12:36:16

android万能适配器列表视图

2009-08-04 08:58:01

C#自定义特性

2012-07-24 15:03:19

OpenStack架构

2009-12-23 14:49:46

WPF面板

2022-05-26 14:50:15

ArkUITS扩展

2022-03-21 15:19:27

鸿蒙UI组件ets自定义

2009-12-24 15:22:10

WPF继承自定义窗口

2009-08-28 17:45:19

C#自定义数据

2010-08-12 09:45:33

jQuery自定义事件

2022-04-11 11:07:37

HarmonyUI小型系统textarea

2009-08-04 12:56:51

C#自定义事件

2015-02-11 17:49:35

Android源码自定义控件

2011-04-25 14:26:32

Ubuntu菜单
点赞
收藏

51CTO技术栈公众号