OpenHarmony4.0Release系统应用常见问题FAQ

前言

自OpenHarmony4.0Release发布之后,许多小伙伴使用了配套的系统应用源码以及IDE作为基线开发,也遇到了各种各样的问题,这篇文档主要收录了比较常见的一些问题解答。

FAQ

系统应用源码在哪

目前OpenHarmony系统应用分为3种模式:

  1. 标准ArkTS工程,通过IDE和SDK编译,并将构建好的hap预置到rom里。参考applications_开头的仓,如applications_launcher。这类系统应用的源码会同步下载在OpenHarmony工程路径applications/standard下,hap预置在applications/standard/hap下。
  2. 非标准ArkTS工程,通过GN随系统一起编译。参考power_dialog。这类系统应用的源码预置在各个子系统下,当子系统全量编译时会随之一起编译。

注意:该类系统应用是可以将源码通过IDE和SDK编译的,但是需要将工程适配为标准ArkTS工程。

  1. C++工程,系统调用C++接口进行界面开发。参考SmartPerf。这类系统应用在系统层进行UI开发,在服务层调用各个子系统的接口。无法通过IDE和SDK编译

hvigor与IDE的关系

hvigor作为OpenHarmony应用开发的编译构建工具,与IDE是深度绑定关系,每个版本的IDE都需要用到指定版本的hvigor。具体的对应版本如下:

以上罗列出了最新的4个版本的对应关系,更原始的版本可以通过以下方式查看:

  1. 通过新建默认工程里的hvigor版本来查看。

如何替换Full-SDK

想要开发系统应用,IDE默认下载Public-SDK无法提供相应的能力,需要使用到包含所有的能力的Full-SDK。以下为Full-SDK的下载使用方式:

  1. 依次选择需要的分支、日期、每日构建或者滚动构建
  2. 下载ohos-sdk-full(Mac M1芯片为mac-sdk-full)。当然,也可以选择自己编译系统配套的SDK。

注意: 不同版本的IDE,SDK的目录结构是不同的。所以最好在替换之前,根据IDE默认下载的Publick-SDK来确认下目录结构。

如何识别系统应用源码该使用什么开发环境

IDE: 首先可以通过hvigor与IDE的关系来找到对应工程里hvigor版本对应的IDE版本。如果无法正常编译,可以找到当前系统应用源码配套发布的IDE(Tag版)。

SDK: 默认选用到当前系统应用源码配套发布的SDK(Tag版)。如果无法正常编译,可以尝试使用daily build最新的branch版。

以上环境,如果还是无法正常编译,请在对应社区仓库下提issue

系统权限说明

系统应用一般会用到系统权限的api,不同的系统权限有对应的授权方式和等级。具体可以参考:

  1. 访问控制开发指导
  2. 应用权限列表

系统应用如何签名

系统应用需要通过OpenHarmony系统颁发的证书去进行签名才可以被识别为系统应用并能够使用系统权限接口,具体如何配置生成配置签名可以参考:

  1. OpenHarmony应用签名 - 系统应用签名
  2. OpenHarmony3.2release系统应用适配DevEcoStudio3.1Release

为了能够更快速的配置系统签名,可以参考以下步骤:

  1. 将附件里的signature.zip解压后,整个signature目录放到工程的根目录下。
  2. cd到signature目录下,修改UnsgnedReleasedProfileTemplate.json文件,
    {
     ···
     "bundle-info":{
         ···
         "bundle-name":"com.winslei.winsleikit", // 修改为工程bundlename
         "apl":"system_core", // 固定填写
         "app-feature":"hos_system_app" // 固定填写
     },
     ···
    }
  3. 按照注释里的要求修改。
  4. 在当前目录下,通过指令
    java -jar hap-sign-tool.jar sign-profile -keyAlias "OpenHarmony Application Profile Release" -signAlg "SHA256withECDSA" -mode "localSign" -profileCertFile OpenHarmonyProfileRelease.pem -inFile UnsgnedReleasedProfileTemplate.json -keystoreFile OpenHarmony.p12 -outFile xxx.p7b -keyPwd "123456" -keystorePwd "123456"
  5. 生成p7b文件,指令里的xxx.p7b可以重命名为工程相关的文件名。
  6. 在工程根目录的build-profile.json5下新增配置
    {
    "app": {
     "signingConfigs": [
       {
         "name": "default",// 自定义
         "material": {
           "storePassword": "0000001603DBE67A8D62C8FF58CB88759393A88777330A0843AFDFDA7BFA5B23B0089D7C89F8", // 固定填写
           "certpath": "signature/OpenHarmony.cer",// 固定填写
           "keyAlias": "OpenHarmony Application Release",// 固定填写
           "keyPassword": "00000016C087D511DACD8A7EFF7AB4D5995DC5442CAC0883351B588CB422C783EBFA863E4537",// 固定填写
           "profile": "signature/xxx.p7b", // 第三步生成的p7b文件
           "signAlg": "SHA256withECDSA",// 固定填写
           "storeFile": "signature/OpenHarmony.p12"// 固定填写
         }
       }
     ],
    }
    }

    依次点击File->Sync and Refresh Project即可配置好签名

如何替换系统应用

在系统应用源码在哪一文里,系统应用按照应用工程大概分为3类。

通过Ability区分的话,系统应用又会分为如下两类:

  1. 默认的UIAbility,如:Settings、Photos、Camera等,这类系统应用能够展示在桌面。
  2. ExtensionAbility,如:Launcher、SystemUI、Settingsdata等,这类系统应用有的创建了窗口从而能显示界面,而有的则属于无页面的常驻服务去提供对应的
    能力。

因此传统的hdc install命令以及IDE的自动安装都无法正常安装,这个时候,就需要用到系统应用的替换。

以Launcher为例,系统应用的替换步骤如下:

找到Launcher预置hap路径

  • /system/app/com.ohos.launcher

可以看到该路径下有2个hap(Launcher.hap、Launcher_Settings.hap)。

执行以下指令

hdc shell "mount -o remount,rw /"
hdc shell "rm -rf /data/*"
hdc file send Launcher.hap /system/app/com.ohos.launcher/Launcher.hap
hdc file send Launcher_Settings.hap /system/app/com.ohos.launcher/Launcher_Settings.hap
hdc shell "reboot"
  1. 即可正常替换安装自己构建的Launcher。

注意:

1. 上述命令中的2个hap路径为本地构建的hap路径。

2. 同一个包名下的hap,必须使用同一套签名编译构建。

3. 类型为UIAbility的系统应用当第一次通过替换安装成功后,后续对于同一套签名及SDK构建出的应用,可以通过hdc install或者IDE来安装。

为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《Open Harmony4.0&Next》的学习导图从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:

除了以上的知识内容,我还为大家整理了一份《鸿蒙 (Harmony OS)开发学习手册》都是整理成PDF文档方式,分享给大家参考学习:《做鸿蒙应用开发到底学习些啥?》

《鸿蒙 (Harmony OS)开发学习手册》

一、入门必看

1. 应用开发导读(ArkTS)

2. 应用开发导读(Java)

3.......

二、HarmonyOS 概念

1. 系统定义

2. 技术架构

3. 技术特性

4. 系统安全

5......

三、如何快速入门?《鸿蒙基础入门开发宝典!》

1. 基本概念

2. 构建第一个ArkTS应用

3. 构建第一个JS应用

4. ……

四、开发基础知识

1. 应用基础知识

2. 配置文件

3. 应用数据管理

4. 应用安全管理

5. 应用隐私保护

6. 三方应用调用管控机制

7. 资源分类与访问

8. 学习ArkTS语言

9. ……

五、基于ArkTS 开发

1. Ability开发

2. UI开发

3. 公共事件与通知

4. 窗口管理

5. 媒体

6. 安全

7. 网络与链接

8. 电话服务

9. 数据管理

10. 后台任务(Background Task)管理

11. 设备管理

12. 设备使用信息统计

13. DFX

14. 国际化开发

15. 折叠屏系列

16. ……

更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙开发学习指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/310827.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

PHP留言板实现

完整教程PHP留言板 登陆界面 一个初学者的留言板(登录和注册)_php留言板登录注册-CSDN博客 留言板功能介绍 百度网盘 请输入提取码 进入百度网盘后,输入提取码:knxt,即可下载项目素材和游客访问页面的模板文件。 &…

独享静态代理IP在海外市场调研中的独特优势

独享静态代理IP在海外市场调研中扮演着至关重要的角色,提供了一系列无可比拟的优势。独享静态代理IP的稳定性和可靠性对于长期的市场调研至关重要,它保证了连接的持续性和数据的准确性。通过这些方面的综合优势,独享静态代理IP成为海外市场调…

Programming Abstractions in C阅读笔记:p242-p245

《Programming Abstractions in C》学习第67天,p242-p245总结,总计4页。 一、技术总结 6.2小结主要讲回溯算法及递归算法在迷宫求解中应用,当然,理解然后用代码实现出来还是有些难度的。不过,这并不影响我们进行下一…

Redis不同环境缓存同一条数据,数据内部值不同

背景 现实中,本地环境(dev)和开发环境(feature)会共同使用相同的中间件(本篇拿Redis举例),对于不同环境中的,图片、视频、语音等资源类型的预览地址url,需要配…

PyQt5零基础入门(二)——QLabel控件

前言 QLabel控件可以视为是一个标签项,具有显示文本、图像的作用。在本篇文章中将介绍QLabel控件的常见用法。 例子 显示文本 import sys from PyQt5.QtWidgets import *if __name__ "__main__":app QApplication([])label QLabel(Hello world!)la…

安卓Android Studio读写MifareOne M1 IC卡源码

本示例使用的发卡器&#xff1a; https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c-s.w4002-21818769070.11.66af789eLeok2R <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout …

【基础工具篇使用】VScode 远程 Ubuntu 系统 进行使用

文章目录 准备条件使用步骤step1&#xff1a; 打开远程窗口step2&#xff1a;选择中的红色框“Connect to Host”功能Step3: 根据图中的红色框提示信息输入远程电脑的用户名和 IP 地址&#xff0c;输入如下命令即可连接&#xff1a; 显示效果 准备条件 我们可以使用 vscode 的…

JS 函数

函数就是封装了一段可以被重复执行调用的代码块。目的&#xff1a;让大量代码重复利用 1、声明函数 方式一&#xff1a;利用函数关键字自定义函数&#xff08;命名函数&#xff09; function 函数名&#xff08;&#xff09;{//函数体代码} function是声明函数的关键字&#…

Windows11 安全中心页面不可用问题(无法打开病毒和威胁防护)解决方案汇总(图文介绍版)

本文目录 Windows版本与报错信息问题详细图片&#xff1a; 解决方案:方案一、管理员权限&#xff08;若你确定你的电脑只有你一个账户&#xff0c;则此教程无效&#xff0c;若你也不清楚&#xff0c;请阅读后再做打算&#xff09;方案二、修改注册表(常用方案)方案三、进入开发…

sqlilabs第四十九五十关

Less-49(GET - Error based - String Bind - ORDER BY CLAUSE) 手工注入 无回显(还是单引号闭合)&#xff0c;只能使用延时注入 自动脚本 和上一关一样 Less-50(GET - Error based - ORDER BY CLAUSE -numeric- Stacked injection) 手工注入 这里需要使用堆叠注入的思路 自…

电力能源监测管理系统,在医院中有哪些作用?

随着经济全球化的发展&#xff0c;节能减排成为当前社会发展必须关注的问题。电力能源监测管理系统&#xff0c;可以分析电力管理能源的现状&#xff0c;并根据现状提出对应的策略&#xff0c;为快速高效建成绿色智能化医院提供有力支撑和技术保障。 医院能源管理现状 1、人力…

市场复盘总结 20240111

仅用于记录当天的市场情况&#xff0c;用于统计交易策略的适用情况&#xff0c;以便程序回测 短线核心&#xff1a;不参与任何级别的调整&#xff0c;采用龙空龙模式 昨日主题投资 连板进级率 100% 二进三&#xff1a; 进级率低 44% 最常用的二种方法&#xff1a; 方法一&a…

检测并批量导出项目文件中所有最近修改文件的实用工具

本篇文章主要讲解工具的使用和操作教程&#xff0c;这是一个能够检测项目内最近修改的文件并保留路径导出文件的实用工具。 日期&#xff1a;2024年1月10日 工具介绍&#xff1a; 这是一款可以帮助你自动检测并导出指定文件修改时间内的文件及文件目录的实用工具&#xff0c;在…

Appium 自动化测试

1.Appium介绍 1&#xff0c;appium是开源的移动端自动化测试框架&#xff1b; 2&#xff0c;appium可以测试原生的、混合的、以及移动端的web项目&#xff1b; 3&#xff0c;appium可以测试ios&#xff0c;android应用&#xff08;当然了&#xff0c;还有firefoxos&#xff09;…

确定了!软考中级「集成」、「监理」新版教程有哪些变化?

新版教程改了哪些内容&#xff1f;2024上半年软考应该如何备考&#xff1f; 准备考24年上集成的朋友们&#xff0c;先不要慌&#xff01;备考脚步不要乱&#xff0c;改版可能还是好事呢&#xff0c;难度可能会降点&#xff1f; 2024年教程改版科目&#xff1a; ✔软考中级-集…

C++学习笔记(二十)

一、stack容器 1. stack基本概念 概念&#xff1a;stack是一种先进后出(First In Last Out&#xff0c;FILO)的数据结构&#xff0c;它只有一个出口 栈中只有顶端的元素才可以被外界使用&#xff0c;因此栈不允许有遍历行为 栈中进入数据称为 —— 入栈 push 栈中弹出数据称…

章鱼网络 2023 年全回顾|暨12月进展报告

2023年&#xff0c;章鱼网络轻装上阵&#xff0c;身处加密行业的低谷中砥砺前行。 12月17日&#xff0c;经过整整1年时间的开发和打磨&#xff0c;章鱼网络在重磅上线 Octopus 2.0&#xff0c;即 $NEAR Restaking 和 NEAR-IBC&#xff0c;获得了社区和市场的一致认可&#xff…

Keil错误和警告合集+解决办法(持续更新)

文章目录 前言一、变量声明类型错误&#xff1f;error: #20: identifier "uint16_t" is undefined解决办法error: #256: invalid redeclaration of type name "GPIO_TypeDef" (declared at line 50)解决办法 二、警告main.c(24): warning: #223-D: functio…

PCL 读取TXT的点云数据

目录 一、 算法概述二、代码实现三、测试示例一、 算法概述 适用:读取TXT格式的点云数据。(效率已做优化,读取并解析45万行点云仅用时0.6s)。 本文以空格分割的点云数据为例,点云存储格式如下所示: 二、代码实现 #include <string> #include <iostream>

MySQL基础笔记(3)DML数据操作语句

顾名思义&#xff0c;全称是数据操作语言&#xff0c;用来对数据库中表的数据记录进行增删改操作~ 目录 一.添加数据 1.给指定字段添加数据 2.给全部字段添加数据 3.批量添加数据 二.修改数据 三.删除数据 一.添加数据 1.给指定字段添加数据 insert into 表名 (字段名…