HarmonyOS 鸿蒙Next Chromium框架开发指导
HarmonyOS 鸿蒙Next Chromium框架开发指导
一、引言
1.1 欢迎使用Chromium
欢迎您关注并使用HarmonyOS Chromium!Chromium是一个开源浏览器项目,旨在为所有用户构建更安全、更快、更稳定的网络体验。它是 Google Chrome及其他许多浏览器(如Microsoft Edge、Opera)的基础。Chromium对HarmonyOS平台进行了适配,可助力开发者在HarmonyOS上更高效、更稳定地构建应用。
1.2 本篇文档目的
本文档旨在向开发者清晰地传达以下关键信息:
- Chromium在HarmonyOS上的支持状态。
- 提供快速上手和深入使用Chromium的开发指导。
- 建议在使用Chromium开发前,仔细阅读本文档。
二、支持声明
2.1 支持确认
Chromium框架已获得HarmonyOS生态合作伙伴的支持,当前Chromium框架HarmonyOS版本已开源,欢迎访问 [Chromium 分支 ] 进行使用,对应分支为pc_chromium_132,仓库配置说明可参考 [OH 官方文档 ] 进行学习。
2.2 开箱即用
开发者现在可以在HarmonyOS 5.0上放心地集成和使用Chromium HarmonyOS版本进行项目开发。该框架已深度适配平台环境,并在HarmonyOS 5.0环境中经过严格测试与验证,确保核心功能的稳定运行和兼容性。
2.3 持续维护和演进
Chromium HarmonyOS版本已于2025年6月在OH社区上正式开源,后续更新计划正在规划中,我们将持续投入资源对Chroimum HarmonyOS版本进行维护、升级和优化,及时修复问题,并根据平台发展和开发者反馈引入新特性,确保其长期的生命力和竞争力。
2.4 推荐使用
Chromium作为开源的浏览器内核项目,不仅支撑了Google Chrome、Microsoft Edge等主流浏览器,其模块化设计和强大的底层能力也使其成为开发特定类型桌面应用、嵌入式系统和工具的理想选择。以下场景推荐使用Chromium进行开发:
- 开发一个全新的浏览器(或浏览器变体)。
- 构建高度定制化、安全关键型的嵌入式或信息亭(Kiosk)系统。
直接使用纯Chromium源码开发是一个非常特殊且高门槛的选择,通常只适用于极少数特定场景。对于绝大多数应用开发,建议优先考虑基于成熟框架(如Electron、CEF等)。
2.5 编译环境
操作系统:Ubuntu 22.04
磁盘空间:大于100G
内存:大于32G
CPU架构:x86_64
三、Chromium开发指导
3.1 Repo配置
运行如下脚本,下载并安装Gitee Repo工具,点击可查看 [Gitee 帮助中心 ]。
mkdir -p ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > ~/bin/repo
chmod a+x ~/bin/repo
export PATH=~/bin/:$PATH
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
运行后无报错,即表明安装成功。
3.2 代码拉取
repo init -u https://gitcode.com/openharmony-tpc/manifest.git -b pc_chromium_132 -m chromium.xml --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
个别大文件因为已不存在无法拉取,但必要文件已拉取,不影响后续构建。
3.3 内核代码构建
Chromium依赖安装(首次构建),执行构建脚本,构建chrome_main_web。
sudo ./src/build/install-build-deps.sh --no-chromeos-fonts
build.sh -t chrome_main_web
执行上述命令后,若无问题,则会开始进行构建。
3.4 HAP工程验证
3.4.1 拷贝目录
将./src/ohos/app/ohos_hap
目录拷贝到本地。
3.4.2 拷贝动态库
将./src/out/musl_64
目录下的libadapter.so
、libchrome_main_web.so
,以及./src/ohos_sdk/openharmony/native/llvm/lib/aarch64-linux-ohos
目录下libc++_shared.so
动态库拷贝到本地hap工程./chromium/libs/arm64-v8a
目录下。
3.4.3 拷贝资源文件
将./src/out/musl_64
目录下resources.pak
、chrome_100_percent.pak
、chrome_200_percent.pak
、icudtl.dat
、snapshot_blob.bin
、v8_context_snapshot.bin
、locales
拷贝到本地hap工程./web_engine/src/main/resources/resfile
目录下。
3.4.4 签名与权限配置
- 可以选择自动签名或手动签名方式,点击此处跳转 [配置调试签名 ]。
- 权限配置文件位置:
ohos_hap\web_engine\src\main\module.json5
文件中requestPermissions
字段,以下是当前声明的权限及说明,若需要了解更多信息,参考 [应用权限列表 ]。
权限名 | 权限说明 | 必要性 |
---|---|---|
ohos.permission.SYSTEM_FLOAT_WINDOW | 允许应用使用全局悬浮窗的能力。 | 按需申请 |
ohos.permission.INTERNET | 允许使用 Internet 网络。 | 基础权限 |
ohos.permission.GET_NETWORK_INFO | 允许应用获取数据网络信息。 | 基础权限 |
ohos.permission.ACCESS_CERT_MANAGER | 允许应用进行查询证书及私有凭据等操作。 | 按需申请 |
ohos.permission.RUNNING_LOCK | 允许应用获取运行锁,保证应用在后台的持续运行 | 基础权限 |
ohos.permission.PRINT | 允许应用获取打印框架的能力。 | 按需申请 |
ohos.permission.PREPARE_APP_TERMINATE | 允许应用关闭前执行自定义的预关闭动作。 | 基础权限 |
ohos.permission.ACCESS_BIOMETRIC | 允许应用使用生物特征识别能力进行身份认证。 | 按需申请 |
ohos.permission.FILE_ACCESS_PERSIST | 允许应用支持持久化访问文件 Uri。 | 基础权限 |
ohos.permission.PRIVACY_WINDOW | 允许应用将窗口设置为隐私窗口,禁止截屏录屏。 | 按需申请 |
ohos.permission.WINDOW_TOPMOST | 允许窗口置顶。 | 按需申请 |
ohos.permission.READ_PASTEBOARD | 允许应用读取剪贴板。 | 基础权限 |
ohos.permission.READ_WRITE_DOWNLOAD_DIRECTORY | 允许应用访问公共目录下 Download 目录及子目录,建议与 ohos.permission.FILE_ACCESS_PERSIST 同时申请。 |
按需申请 |
ohos.permission.READ_WRITE_DOCUMENTS_DIRECTORY | 允许应用访问公共目录下 Documents 目录及子目录,建议与 ohos.permission.FILE_ACCESS_PERSIST 同时申请。 |
按需申请 |
ohos.permission.READ_WRITE_DESKTOP_DIRECTORY | 允许应用访问公共目录下 Desktop 目录及子目录,建议与 ohos.permission.FILE_ACCESS_PERSIST 同时申请。 |
按需申请 |
ohos.permission.LOCATION | 允许应用获取设备位置信息。 | 按需申请 |
ohos.permission.APPROXIMATELY_LOCATION | 允许应用获取设备模糊位置信息。 | 按需申请 |
ohos.permission.LOCATION_IN_BACKGROUND | 允许应用在后台运行时获取设备位置信息。 | 按需申请 |
ohos.permission.MICROPHONE | 允许应用使用麦克风。 | 按需申请 |
ohos.permission.CAMERA | 允许应用使用相机。 | 按需申请 |
ohos.permission.ACCESS_BLUETOOTH | 允许应用接入蓝牙并使用蓝牙能力,例如配对、连接外围设备等。 | 按需申请 |
ohos.permission.CUSTOM_SCREEN_CAPTURE | 允许应用截取屏幕内容。 | 按需申请 |
点击查看权限:[申请应用权限 ],权限申请邮件内容示例如下:请根据实际需要的授权申请权限,示例内容仅供参考。
3.4.5 构建HAP包
依次点击DevEco Studio菜单【Build】-【Build Hap(s)/App(s)】-【Build Hap(s)】完成HAP包构建,输出路径在./chromium/build/default/outputs/default
目录下。签名包为chromium-default-signed.hap,未签名包为chromium-default-unsigned.hap。
3.5 HAP工程运行
3.5.1 hdc工具安装
DevEco Studio中自带hdc,将其配置到环境变量中即可使用,目录为DevEcoStudio\sdk\default\openharmony\toolchains
。
3.5.2 hdc安装签名包
在完成上述操作后,即可通过hdc命令安装签名包chromium-default-signed.hap进行验证测试,需要在运行DevEco Studio的系统上打开终端命令行,执行以下命令。
安装
hdc install chromium-default-signed.hap
启动应用
hdc shell aa start -a EntryAbility -b com.huawei.ohos_chromium
停止应用
hdc shell aa force-stop com.huawei.ohos_chromium
卸载
hdc uninstall com.huawei.ohos_chromium
看到AppMod finish即表示安装成功,可以开始运行。
四、坚盾模式特别说明
4.1 坚盾守护模式
坚盾守护模式是为高安全需求用户设计的系统级安全防护方案。该模式通过实施严格的功能限制,显著增强系统安全性,有效防范针对远程攻击面的各类威胁。在坚盾安全模式下,系统增加了功能限制,需要开发者评估应用在坚盾模式下的可用性。
4.2 启用坚盾守护模式
要启用坚盾守护模式,请按以下路径操作:
- 进入电脑系统设置。
- 选择"隐私和安全"选项。
- 点击"坚盾守护模式"并开启。
4.3 坚盾守护模式下的功能限制
为降低应用受攻击风险,坚盾守护模式将实施以下关键安全限制:
- 全面禁用即时编译(JIT)功能,包括已获取 ACL 权限的应用程序。
- 暂停 WebAssembly 支持(当前版本中 WebAssembly 依赖 JIT 功能实现)。
4.4 应用兼容性评估指南
在坚盾守护模式下运行应用程序时,建议进行以下兼容性检查:
JavaScript 性能评估
- 测试应用在限制环境中的运行效率。
- 优化可能存在的性能瓶颈。
WebAssembly 兼容性检查
- 静态代码分析:检查项目中的 WebAssembly 相关API调用,与第三方库的 Wasm 依赖情况。
- 运行时验证:在坚盾守护模式下执行全功能测试。
参考文档:[查询设备安全模式 ]、[C/C++]、[JSVM-API 坚盾守护模式 ]、[坚盾守护模式 ]、[坚盾守护模式 ]。
更多关于HarmonyOS 鸿蒙Next Chromium框架开发指导的实战教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙Next的Chromium框架开发基于ArkUI框架,主要使用TS/JS语言。开发者需通过鸿蒙SDK中的Web组件实现浏览器功能,支持Chromium内核渲染。关键开发步骤:
- 配置Web组件加载网页;
- 使用WebController管理页面行为;
- 通过WebCookieManager处理cookie。
鸿蒙Next的Chromium版本为定制分支,需调用@ohos.web.webview
提供的API,不支持直接使用Chromium原生接口。网页调试可使用DevTools,需在config.json中开启调试权限。
更多关于HarmonyOS 鸿蒙Next Chromium框架开发指导的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
根据HarmonyOS Next的Chromium框架开发指导文档,以下是关键要点总结:
环境准备:
- 需要Ubuntu 22.04系统,建议配置32GB内存和100GB磁盘空间
- 通过repo工具拉取pc_chromium_132分支代码
构建流程:
- 执行
build.sh -t chrome_main_web
进行内核构建 - 构建产物包括libadapter.so、libchrome_main_web.so等核心库
HAP工程集成:
- 需要拷贝动态库到libs/arm64-v8a目录
- 资源文件需放置到resources/resfile目录
- 注意配置必要的权限声明
调试部署:
- 使用hdc工具安装签名HAP包
- 可通过
aa start
命令启动应用
安全注意事项:
- 坚盾模式下会禁用JIT和WebAssembly
- 需要评估应用在安全模式下的兼容性
建议开发者严格按照文档中的步骤操作,特别注意权限配置和资源文件的正确放置。