openharmony—release—4.1开源鸿蒙源码编译踩坑记录

1.下载openharmony源码

OpenAtom OpenHarmony

目录如下

2.安装依赖

sudo apt-get install binutils binutils-dev git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby genext2fs device-tree-compiler make libffi-dev e2fsprogs pkg-config perl openssl libssl-dev libelf-dev libdwarf-dev u-boot-tools mtd-utils cpio doxygen liblz4-tool openjdk-8-jre gcc g++ texinfo dosfstools mtools default-jre default-jdk libncurses5 apt-utils wget scons python3.8-distutils tar rsync git-core libxml2-dev lib32z-dev grsync xxd libglib2.0-dev libpixman-1-dev kmod jfsutils reiserfsprogs xfsprogs squashfs-tools pcmciautils quota ppp libtinfo-dev libtinfo5 libncurses5-dev libncursesw5 libstdc++6 gcc-arm-none-eabi vim ssh locales libxinerama-dev libxcursor-dev libxrandr-dev libxi-dev

3.安装相应组件

在鸿蒙源码目录下使用

bash build/prebuilts_download.sh

提示报错

使用命令

python3.10 -m pip install --upgrade pip

重新使用命令

bash build/prebuilts_download.sh

提示缺少ssl

进行

sudo apt install libssl-dev

重新使用命令,安装通过 

bash build/prebuilts_download.sh

4.在鸿蒙目录下使用命令编译

./build.sh --product-name rk3568 --ccache

提示空间不足

【有道云笔记】扩容ubuntu空间

有道云笔记

提示Ninja错误

[OHOS ERROR] Traceback (most recent call last):

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/containers/status.py", line 47, in wrapper

[OHOS ERROR] return func(*args, **kwargs)

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/modules/ohos_build_module.py", line 67, in run

[OHOS ERROR] raise exception

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/modules/ohos_build_module.py", line 65, in run

[OHOS ERROR] super().run()

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/modules/interface/build_module_interface.py", line 72, in run

[OHOS ERROR] raise exception

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/modules/interface/build_module_interface.py", line 70, in run

[OHOS ERROR] self._target_compilation()

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/modules/ohos_build_module.py", line 103, in _target_compilation

[OHOS ERROR] self.target_compiler.run()

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/services/ninja.py", line 38, in run

[OHOS ERROR] self._execute_ninja_cmd()

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/services/ninja.py", line 69, in _execute_ninja_cmd

[OHOS ERROR] SystemUtil.exec_command(

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/util/system_util.py", line 64, in exec_command

[OHOS ERROR] LogUtil.get_failed_log(log_path)

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/util/log_util.py", line 193, in get_failed_log

[OHOS ERROR] LogUtil.get_compiler_failed_log(log_path)

[OHOS ERROR] File "/home/vtstar/Desktop/openharmony/code/OpenHarmony/build/hb/util/log_util.py", line 180, in get_compiler_failed_log

[OHOS ERROR] raise OHOSException(

[OHOS ERROR] exceptions.ohos_exception.OHOSException: COMPILE Failed! Please check error in /home/vtstar/Desktop/openharmony/code/OpenHarmony/out/rk3568/error.log, and for more build information in /home/vtstar/Desktop/openharmony/code/OpenHarmony/out/rk3568/build.log

[OHOS ERROR]

[OHOS ERROR] Code: 4000

[OHOS ERROR]

[OHOS ERROR] Reason: COMPILE Failed! Please check error in /home/vtstar/Desktop/openharmony/code/OpenHarmony/out/rk3568/error.log, and for more build information in /home/vtstar/Desktop/openharmony/code/OpenHarmony/out/rk3568/build.log

[OHOS ERROR]

[OHOS ERROR] Error Type: Ninja build error

[OHOS ERROR]

[OHOS ERROR] Description: An unknown error occurred while executing 'ninja -C'.

[OHOS ERROR]

[OHOS ERROR] Solution: no solution

[OHOS ERROR]

=====build error=====

解决办法

使用如下命令进行编译

sudo ./build.sh -p rk3568

https://gitee.com/openharmony/build/issues/I8HQ8G?from=project-issue

编译通过

相关镜像在

out/rk3568/packages/phone/images目录下

### OpenHarmony 4.1 操作系统中摄像头开发概述 OpenHarmony Camera 是多媒体子系统中的重要模块,提供了相机的预览、拍照和录像等功能[^2]。对于基于标准系统4.1版本rrk3568设备上的OV5648和OV8858摄像头开发而言,理解其API使用方法至关重要。 #### 初始化与配置 为了初始化并配置摄像机资源,开发者需遵循如下指南: - **创建Camera对象实例** ```cpp #include "camera.h" // 创建CameraManager单例管理类来获取可用的Camera设备列表. std::shared_ptr<ICameraService> cameraService = CameraStandard::CreateCameraService(); if (cameraService != nullptr) { std::vector<std::string> ids; int ret = cameraService->GetCameraIds(ids); } ``` 这段代码展示了如何利用`CameraStandard::CreateCameraService()`函数获得一个指向`ICameraService`接口类型的指针,并通过它调用`GetCameraIds`方法枚举当前连接的所有物理摄像单元[^5]。 - **打开指定ID所代表的具体硬件实体** ```cpp std::shared_ptr<ICameraDeviceCallback> callback(new MyCameraDeviceCallback()); std::shared_ptr<ICameraDevice> device; ret = cameraService->OpenCamera(id, callback, device); ``` 这里定义了一个自定义回调处理程序用于接收来自底层驱动的通知事件;接着尝试开启由变量`id`标识的那个特定装置实例。 #### 设置参数与启动流会话 一旦成功打开了目标摄影器材之后,则可继续设置拍摄模式以及图像质量等相关属性值,并建立媒体流水线以准备实际的数据采集活动。 - **构建CaptureRequest结构体并向其中填充必要的元数据项** ```cpp std::unique_ptr<CaptureRequest> request(new CaptureRequest()); request->SetTemplateType(TEMPLATE_PREVIEW); // 或者 TEMPLATE_STILL_CAPTURE / TEMPLATE_RECORD ... device->ConstructDefaultRequestSettings(request.get(), settingsKeys); ``` 上述片段说明了怎样构造一个新的捕获请求模板,并将其关联至预览/静态照片抓拍/录制三种操作情景之一上。随后借助于`settingsKeys`集合传递一组键名字符串数组给定具体的调节选项。 - **提交已配置完毕的要求包进入队列等待执行** ```cpp std::list<CaptureRequest*> requests{request.release()}; device->ProcessCaptureRequests(requests, captureResultCb); ``` 最终一步就是把之前精心组装好的指令序列递交出去供后续阶段进一步解析处理。注意这里的`captureResultCb`应当是指向实现了相应协议接口的对象实例化后的引用,以便及时反馈每次事务的结果状态变化情况。 #### 数据流转机制剖析 考虑到性能优化的需求,在设计上传输路径时特别关注到了几个关键环节:从服务端到客户端之间的交互过程可能涉及到共享内存DMA描述符或是简单的缓冲区复制动作;而面向用户界面展示部分则倾向于采用句柄传递方式减少不必要的开销;至于远程传输场景下同样适用类似的策略选择依据实际情况灵活调整。 ### 实际应用场景举例 假设现在要实现一个简易的应用案例——实时显示前置镜头的画面内容。那么按照前述介绍过的步骤依次完成各项准备工作以后就可以轻松达成目的啦! ```cpp void StartPreview() { auto previewSurface = CreateSurfaceForDisplay(); // 自行补充该辅助函数逻辑 Surface* surfaces[] = {previewSurface}; size_t numSurfaces = sizeof(surfaces)/sizeof(Surface*); StreamConfiguration config; config.SetStreamUseCase(StreamUseCase::PREVIEW); config.AddOutputSurface(previewSurface); device->ConfigureStreams(config); } StartPreview(); ``` 以上便是有关OpenHarmony 4.1操作系统环境下开展摄像头相关项目的入门指导资料汇总。希望这些信息能为广大爱好者们提供更多有价值的参考资料支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晚秋大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值