当前位置: 首页 > news >正文

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. ……

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

相关文章:

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

前言 自OpenHarmony4.0Release发布之后,许多小伙伴使用了配套的系统应用源码以及IDE作为基线开发,也遇到了各种各样的问题,这篇文档主要收录了比较常见的一些问题解答。 FAQ 系统应用源码在哪 目前OpenHarmony系统应用分为3种模式&#x…...

Skywalking UI页面中操作的各种实用功能汇总

刚刚接触skywalking不久,在这里总结一下在UI页面中操作的各种实用功能,随着使用的不断深入,我也会对文章进行持续补充。 本文skywalking 的ui入口是官方demo ,版本是10.0.0-SNAPSHOT-593bd05 http://demo.skywalking.apache.org…...

springboot摄影跟拍预定管理系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…...

【python】python新年烟花代码【附源码】

欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 新年的钟声即将敲响,为了庆祝这个喜庆的时刻,我们可以用 Python 编写一个炫彩夺目的烟花盛典。本文将详细介绍如何使用 Pygame 库创建一个令人惊叹的烟花效果。 一、效果图: 二…...

书生·浦语大模型实战营-学习笔记1

目录 书生浦语大模型全链路开源体系数据集预训练微调评测部署多智能体 视频地址: (1)书生浦语大模型全链路开源体系 开源工具github: https://github.com/InternLM/InternLM 书生浦语大模型全链路开源体系 这次视频中介绍了由上海人工智能实验室OpenMMLa…...

ELF解析03 - 加载段

本文主要讨论 mmap 函数以及如何使用 mmap 函数来加载一个 ELF 的可加载段。 01纠错 Android 8 及以后是会读取 section header 的,但不是所有的 section 都会读取。 https://cs.android.com/android/platform/superproject/main//main:bionic/linker/linker_phdr…...

Mysql——索引相关的数据结构

索引 引入 我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为…...

无代码DIY图像检索

软件环境准备 可参见《HuggingFists-低代码玩转LLM RAG-准备篇》中的HuggingFists安装及Milvus安装。 流程环境准备 图片准备 进入HuggingFists内置的文件系统,数据源->文件系统->sengee_fs_settings_201创建Image文件夹将事先准备的多张相同或不同种类的图…...

Elasticsearch--Master选举

角色 主节点(active master):一般指的是活跃的主节点,避免负载任务,主节点主要用来管理集群,专用master节点仍将充当协调节点 候选节点(master-eligible nodes):默认具备…...

微服务实战系列之Filter

前言 Filter,又名过滤器,当然不是我们日常中见到的,诸如此类构件: 而应该是微服务中常使用的,诸如此类(图片来自官网,点击可查看原图): 一般用于字符编码转换&#xf…...

使用GPT大模型调用工具链

本文特指openai使用sdk的方式调用工具链。 安装openai pip install openai export OPENAI_API_KEY"YOUR OPENAI KEY" 定义工具函数 from openai import OpenAI import jsonclient OpenAI() #工具函数 def get_current_weather(location, unit"fahrenheit&q…...

C语言实现bmp图像底层数据写入与创建

要用C语言实现bmp图像底层数据写入进而创建一张bmp图像,需要对bmp图像文件格式非常了解,如果不太熟悉bmp图像文件格式请先移步bmp图像文件格式超详解 创建bmp图像文件的方式有很多,比如用halcon,用qt,这些都是把已经画…...

基于BP神经网络的定位算法,基于BP神经网络定位预测

目录 摘要 BP神经网络参数设置及各种函数选择 参数设置 训练函数 传递函数 学习函数 性能函数 显示函数 前向网络创建函数 BP神经网络训练窗口详解 训练窗口例样 训练窗口四部详解 基于BP神经网络的定位算法,基于BP神经网络定位预测 代码下载:基于BP神经网络的定位算法,基于…...

Java Http各个请求类型详细介绍

1. 前言 在Spring Boot框架中,HTTP请求类型是构建Web应用程序的重要组成部分。常见的请求类型包括GET、POST、PUT和DELETE,每种类型都有其特定的用途和特点。本文将详细比较这四种请求类型,帮助您在开发过程中做出明智的选择。 2. GET请求…...

python函数装饰器参数统计调用时间和次数

1 python函数装饰器参数统计调用时间和次数 python在函数装饰器外层定义一个函数生成封闭作用域来保存装饰器入参,供装饰器使用。 1.1 装饰器统计调用时间和次数 描述 通过类的可调用实例装饰器来统计函数每次调用时间和总调用时间,以及调用次数。 …...

机器学习之集成学习AdaBoost

概念 AdaBoost(Adaptive Boosting)是一种迭代的集成学习算法,其主要目标是通过组合多个弱学习器来创建一个强大的模型。以下是AdaBoost算法的主要步骤: 初始化样本权重: 为每个训练样本分配相等的权重,通常设为 w i = 1 N w_i = \frac{1}{N} w...

行云部署成长之路 -- 慢 SQL 优化之旅 | 京东云技术团队

当项目的SQL查询慢得像蜗牛爬行时,用户的耐心也在一点点被消耗,作为研发,我们可不想看到这样的事。这篇文章将结合行云部署项目的实践经验,带你走进SQL优化的奇妙世界,一起探索如何让那些龟速的查询飞起来!…...

Windows权限提升

0x01 简介 提权可分为纵向提权与横向提权: 纵向提权:低权限角色获得高权限角色的权限; 横向提权:获取同级别角色的权限。 Windows常用的提权方法有:系统内核溢出漏洞提权、数据库提权、错误的系统配置提权、组策略首…...

win系统搭建Minecraft世界服务器,MC开服教程,小白开服教程

Windows系统搭建我的世界世界服务器,Minecraft开服教程,小白开服教程,MC 1.19.4版本服务器搭建教程。 此教程使用 Mohist 1.19.4 服务端,此服务端支持Forge模组和Bukkit/Spigot/Paper插件,如果需要开其他服务端也可参…...

word2vec中的CBOW和Skip-gram

word2cev简单介绍 Word2Vec是一种用于学习词嵌入(word embeddings)的技术,旨在将单词映射到具有语义关联的连续向量空间。Word2Vec由Google的研究员Tomas Mikolov等人于2013年提出,它通过无监督学习从大规模文本语料库中学习词汇…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

Java编程之桥接模式

定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...