基于rk3568开发板,5.1.0-release源码下载、编译与烧录

首先通过可视化终端(windTerm/xshell等)连接上192.168.1.10服务器

1.初始化仓库:

bash 复制代码
mkdir ~/openharmony_5.1.0 && cd ~/openharmony_5.1.0
repo init -u https://gitee.com/openharmony/manifest.git -b OpenHarmony-5.1.0-Release --no-repo-verify

2.同步代码:

bash 复制代码
repo sync -c -j8

3.下载预编译工具链

bash 复制代码
bash build/prebuilts_download.sh --skip-ssl

注意:执行完预编译脚本以后,有可能出现编译工具下载和配置不完整,一般是因为网络环境或安全空间的部分限制原因,可以参考上一篇文档解决

编辑 - OpenHarmony源码下载与编译 | 知识库管理

4.正式编译源码

执行dockerinfo指令,进入到docker沙箱环境,进入common容器

标准系统编译:

css 复制代码
./build.sh --product-name rk3568 --ccache --load-test-config=false --no-prebuilt-sdk

首次编译会耗时较长,一般会持续1.5-3h,编译成功后,可视化终端会输出以下内容:

接下来就可以正式进入烧录阶段

此外,还可以利用开发工具DevEco DeviceTool进行一键编译,具体可参考官方文档:

device.harmonyos.com/cn/docs/doc...

编译RK3568开发板源码-基于第三方芯片的开发板-编译运行-HUAWEI DevEco Device Tool使用指南-OpenHarmony设备开发-HarmonyOS设备开发

5.镜像(固件)烧录

①将openharmony_5.1.0/out/rk3568/packages/phone/images目录下的镜像文件全部烧录到rk3568开发板

②镜像压缩后,服务器上传固件,运行类似以下命令,然后下载到本地

复制代码
uploadx_GZ.sh 文件夹 用户名
例如:uploadx_GZ.sh HJ_012_XMA311D2AV2-1_A311D2_8192M_128G_USBUART_Eshare_W6_NOV_20230617005454 zhangsan

uploadx_GZ.sh images.zip xxxx

③使用rktool烧录:

DriverAssistant和rkTool工具:

驱动-DriverAssitant_v5.1.1.zip

RKDevTool_v3.13_for_window.zip

DriverAssitant_v5.13.zip

1.打开rktools以后,右键导入配置(选中config文件)
2.修改镜像分区文件所在文件路径(存放于U盘下的对应镜像文件)
3.这里通过USB3.0连接主板和pc,断电上电同时按住复位键(3)后,发现loader设备以后,点击"执行"开始烧写

4.烧录成功后,设备会正常重启,看到开机动画,则说明执行成功:

6.系统应用卸载:

方式一:

①通过hdc tconn 192.168.11.222:6780连接上设备;

②执行hdc target mount ,赋予读写权限;

③执行hdc shell进入shell模式下,进入目标应用所在目录/system/app

④执行rm -rf com.ohos.xxx 删除应用hap包;

⑤执行reboot重启,卸载系统应用生效;

方式二:

更为彻底和正确的方式是

1.通过源码删除相关hap包以及相关gn配置后,重新打包编译:

要确保编译后的镜像不包含 Tk-Media.hap 应用,仅删除源码中的 .hap 文件是不够的 ,还需从构建配置、产品定义等环节彻底移除依赖。

①删除源码中的 Tk-Media.hap 文件 先执行删除操作: bash rm -f ~/oh5_ms/applications/standard/hap/Tk-Media.hap

注意:建议提前备份相关重要文件,并清楚地了解每一步操作所产生的结果;

②检查并修改构建配置文件(BUILD.gn) 系统应用的编译通常由 BUILD.gn 管理依赖,需确保构建系统不再尝试引用该应用: 1. 进入 applications/standard/hap 目录,编辑 BUILD.gn 文件; 2. 在 BUILD.gn 中找到对 Tk-Media.hap 的目标声明或依赖配置 (例如 ohos_prebuilt_hapgroup 中的引用),将其删除。 示例(假设原配置): gn ohos_prebuilt_hap("Tk-Media") { source = "Tk-Media.hap" # 其他配置... } 删除整个该目标的声明块。

检查 产品配置文件 若该应用在某产品的"必选应用列表"中,需从产品配置中移除: 1. 进入产品定义目录(如 productdefine/common/products/),找到对应产品的配置文件(如 rk3568.json)。 2. 打开文件,在 appssystem_apps 节点中,删除 com.ohos.tk.media 对应的条目。

如果不存在,则跳过

④清理编译缓存并重新编译 旧的编译缓存可能残留该应用的产物,需彻底清理: 进入源码根目录后, 清理out目录:rm -rf out,并清除缓存:ccache -C,然后重新执行编译命令(示例,按实际编译参数调整) ./build.sh --product-name gk6780v100 --ccache --load-test-config=false --patch

⑤关键说明 - 构建配置是核心 :如果仅删除 .hap 文件但 BUILD.gn 仍引用该目标,编译时会报"文件缺失"错误; - 产品配置需同步:若产品配置强制包含该应用,即使源码移除,编译后仍会被打包进镜像; - 缓存清理要彻底 :确保 out 目录的旧产物被完全删除,避免新编译时复用旧文件。

这里有个插曲:

①删除hap包并删除BUILD.gn文件当中相关配置以后,清除缓存重新编译发现报错:

②经过检索发现是因为:

在构建过程中出现了补丁冲突导致的构建失败,于是检索并打开这个冲突文件:

③冲突文件内容清晰地说明了补丁文件的意图是将标准化系统下的libsub_stub版本由1.2升级为2.0

④于是检查当前目录下的BUILD.gn文件,发现实际上版本已经升级到了2.0版本:

⑤于是删除冲突文件后,清理缓存,重新编译

rm -rf out

ccache -C

⑥解决冲突后仍然报错,可以添加编译参数:--no-patch 暂时绕开这个问题,以快速验证当前修改;

./build.sh --product-name gk6780v100 --ccache --load-test-config=false --patch --no-patch

补充:

在基于 OpenHarmony 5.1.0-Release 版本编译源码时,要彻底移除一个应用(HAP包),仅仅删除 HAP 文件是远远不够的。因为这个应用很可能已经在构建系统的配置文件中被声明和引用,如果不清除这些依赖关系,会导致编译失败。

以下是详细的分析和操作步骤:


一、为什么不能只删除 HAP 包?

OpenHarmony 的构建系统(GN + Ninja)通过一系列 .gnBUILD.gn 文件来管理项目依赖和编译流程。一个应用(HAP)通常会在以下地方被引用:

  1. BUILD.gn 文件:定义了如何编译该 HAP。
  2. bundle.json module.json5 文件:应用的配置清单。
  3. 父级或模块级的 BUILD.gn :将该 HAP 作为依赖项添加到更大的目标(如 system_appproduct_bundle)中。
  4. config.json 或产品配置文件 :在特定产品(如 default)的配置中启用了该应用。

如果不移除这些引用,构建系统在尝试"链接"或"打包"时会找不到对应的输出,从而报错。


二、需要修改的文件列表

要彻底移除一个 HAP 应用,需要检查并可能修改以下类型的文件:

文件类型 路径示例 作用
应用自身的 BUILD.gn ```
applications/standard/hap/YourApp/BUILD.gn
| 复制代码
| **应用目录下的** **`module.json5`** | ```
applications/standard/hap/YourApp/module.json5
```                                       | 应用的模块配置,可以一并删除。              |
| **上级** **`BUILD.gn`**         | ```
applications/standard/hap/BUILD.gn
```                                                   | 将所有标准应用聚合在一起,需要移除对该 HAP 的依赖。 |
| **系统应用配置**                    | ```
build/subsystems_config/system_app.json
```                                              | 列出了所有预装的系统应用,必须移除。           |
| **产品配置文件**                    | `productdefine/common/inherit/base.json` 或 `productdefine/common/products/your_product.json` | 定义了特定产品包含哪些软件包,需检查并移除。       |

* * *

### **三、详细操作步骤**

#### **步骤 1:定位目标 HAP 应用**

确定要删除的应用名称和完整路径。例如,我们要删除 `Calculator` 应用:

applications/standard/hap/Calculator/

markdown 复制代码
#### **步骤 2:删除应用源码目录**

直接删除整个应用目录:

rm -rf applications/standard/hap/Calculator/

markdown 复制代码
#### **步骤 3:修改上级** **`BUILD.gn`** **文件**

找到上级聚合的 `BUILD.gn` 文件,通常是:

applications/standard/hap/BUILD.gn

复制代码
打开此文件,查找类似如下代码块:

ohos_sources("standard_hap") { deps = [ ":Settings", ":Calculator", # 找到这一行 ":FileManager", # ... ] }

markdown 复制代码
**将** **`":Calculator"`** **这一行从** **`deps`** **列表中删除**。

#### **步骤 4:修改系统应用配置文件**

打开系统应用配置文件:

build/subsystems_config/system_app.json

javascript 复制代码
这是一个 JSON 文件,内容类似于:

{ "system_app": [ "Settings", "Calculator", // 找到这一行 "FileManager" ] }

markdown 复制代码
**将** **`"Calculator"`** **从数组中移除**。

#### **步骤 5:检查产品配置文件**

根据您编译的产品(如 `default`, `phone`),检查对应的产品配置文件。

路径通常为:

productdefine/common/products/default.json

markdown 复制代码
查找 `"software" -> "packages"` 字段,确保其中不包含 `Calculator`。

#### **步骤 6:清理并重新编译**

执行完整的清理和编译流程:

清理

hb clean

强制重新生成构建配置

hb build -f

markdown 复制代码
* * *

### **四、验证是否成功**

1.  **编译成功**:如果上述步骤都正确,编译过程应该不再报错。
1.  **镜像中无该应用**:编译完成后,烧录镜像到设备,确认主屏幕或应用列表中已没有该应用。
1.  **检查** **`out`** **目录**:在 `out/your_product/packages/phone/` 目录下,检查 `system/app/` 或 `vendor/app/` 中是否还有 `Calculator.hap`。

* * *

### **五、注意事项**

-   **备份**:在进行大规模删除前,建议备份原始源码。
-   **依赖关系**:某些应用可能是其他功能的依赖(如设置应用中的某个子页面)。删除前请评估影响。
-   **动态加载**:极少数应用可能通过动态加载方式引入,这种情况较为复杂,但大多数预装应用都是静态配置的。

* * *

### **总结**

要彻底删除一个 HAP 应用,必须遵循"**物理删除 + 配置清除**"的原则。核心是修改 `applications/standard/hap/BUILD.gn` 和 `build/subsystems_config/system_app.json` 这两个关键文件。完成这些修改后,您的源码编译出的系统将不再包含该应用。
相关推荐
May_day2 小时前
鸿蒙共建项目,系统层代码提交指南
开源
Hello__77772 小时前
开源鸿蒙 Flutter 实战|用户详情页布局优化与字体大小调节功能全流程实现
flutter·开源·harmonyos
Hommy882 小时前
【开源剪映小助手】项目介绍
开源·github·aigc·剪映小助手
太阳之子4 小时前
开源推荐:Skillshare——统一管理 AI CLI 工具的 Skills 生态
开源
peterfei4 小时前
一夜重构!我用 18000 行代码打造了完全自研的 AI TUI 终端
人工智能·开源·全栈
探索宇宙真理.4 小时前
Vvveb CMS 任意文件上传导致RCE | CVE-2026-6257原理分析&研究
经验分享·开源·文件上传·安全漏洞·vvveb
HelloGitHub5 小时前
《HelloGitHub》第 121 期
开源·github
lularible5 小时前
PTP协议精讲(3.8):硬件时间戳详解——纳秒级精度的魔法
网络·网络协议·开源·嵌入式·ptp