构建鸿蒙ACE静态库

news2024/9/24 9:28:29

搭建开发环境

  • 根据说明文档下载鸿蒙全部代码,一般采取第四种方式获取最新代码(请保证代码为最新) 源码获取
  • Windows下载编译环境 MinGW GCC 7.3.0版本 请添加环境变量
  • IDE 可以使用两种 CLion和Qt,CLion不带有环境需要安装MinGW才可以开发,Qt自带MinGW环境,推荐安装Qt 5.14.2
  • 使用CMake来管理项目 请保证CMake版本大于3.16.5

修改工程

  • 请使用本项目Harmony目录下所有的CMakeLists.txt文件替换鸿蒙中的相同目录下的CMakeLists.txt 文件
  • 请注释掉Harmony/foundation/ace/frameworks/lite/targets/simulator/win/acelite_config.h 中的部分定义,如果启用其中的定义,需要自己实现相应的API函数,否则在构建预览器项目中会导致报错。可以使用提供的acelite_config.h替换,也可以自行修改。
  • 编译主要涉及以下几个目录
    • base/global
    • foundation/aafwk
    • foundation/ace
    • foundation/graphic
    • third_party/bounds_checking_function
    • third_party/cJSON
    • third_party/freetype
    • third_party/jerryscript
    • third_party/libjpeg
    • third_party/libpng
    • third_party/zlib
    • utils/native

编译

  • 在Harmony目录下创建cmake-build目录
cd Harmony
mkdir cmake-build
cd cmake-build
  • 使用cmake创建makefile
cmake .. -G "MinGW Makefiles"
-- The C compiler identification is GNU 7.3.0
-- The CXX compiler identification is GNU 7.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/Qt/Qt5.14.2/Tools/mingw730_64/bin/gcc.exe -
skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/Qt/Qt5.14.2/Tools/mingw730_64/bin/g++.exe
- skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
C:/Users/hpf19/Desktop/111222/Harmony/third_party/libpng
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Looking for stdlib.h
-- Looking for stdlib.h - found
-- Looking for string.h
-- Looking for string.h - found
-- Looking for size_t
-- Looking for size_t - not found
-- Looking for setmode
-- Looking for setmode - found
-- Performing Test CHAR_IS_UNSIGNED
-- Performing Test CHAR_IS_UNSIGNED - Failed
-- Performing Test RIGHT_SHIFT_IS_UNSIGNED
-- Performing Test RIGHT_SHIFT_IS_UNSIGNED - Failed
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/hpf19/Desktop/111222/Harmony/cmake
-build
  • 构建静态库
mingw32-make.exe
  • 生成结果
静态文件文件夹
libglobal_resmgr.abase
libjerry-core.afoundation/ace
libjerry-ext.afoundation/ace
libjerry-libm.afoundation/ace
libjerry-port-default.afoundation/ace
libjerry-port-default-minimal.afoundation/ace
libjsfwk.afoundation/ace
libui.afoundation/graphic
libfreetype.afoundation/graphic
liblibjpeg.afoundation/graphic
liblibpng.afoundation/graphic
libzlib.afoundation/graphic
libutils_jsapi.autils

问题

  • 和ACE一起编译生成的jerry静态库会比单独编译的静态库大100KB,会导致JsApp关闭时出现严重BUG导致程序崩溃。建议大家单独编译Jerry库,在third_party/jerryscript下面建立一个cmake-build目录和上面的一样的操作方法就可以生成Jerry静态库了。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Canvas与艺术】绘制磨砂黄铜材质Premium Quality徽章

【关键点】 渐变色的使用、斜纹的实现、底图的寻觅 【成果图】 ​​​​​​​ 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><tit…

跑腿平台隐藏服务用法,搭建平台这些跑腿服务也能做!

跑腿场景竞争愈发激烈激烈 事实上&#xff0c;跑腿行业早已群狼环伺&#xff0c;尽管跑腿领域仍有很大的发展空间&#xff0c;但新晋玩家都普遍把目光投向了外卖配送这个细分领域&#xff0c;难免会增加后来者的市场拓展和发展难度。那么&#xff0c;在跑腿服务行业中还有哪些…

springboot上传模块到私服,再用pom引用下来

有时候要做一个公司的公共服务模块。不能说大家都直接把代码粘贴进去&#xff0c;因为会需要维护很多份&#xff1b;这样就剩下两个方式了。 方式一&#xff1a;自己独立部署一个公共服务的服务&#xff0c;全公司都调用&#xff0c;通过http、rpc或者grpc的方式&#xff0c;这…

Http响应报文介绍

所有HTTP消息(请求与响应)中都包含&#xff1a; 一个或几个单行显示的消息头(header)&#xff0c; 在消息头部分主要包含&#xff1a;响应行信息和响应头信息 一个强制空白行&#xff1b; 最后是响应消息主体&#xff1b; 以下是一个典型的HTTP响应: HTTP/1.1 200 OK -- 响…

【MATLAB源码-第15期】基于matlab的MSK的理论误码率与实际误码率BER对比仿真,采用差分编码IQ调制解调。

1、算法描述 在数字调制中&#xff0c;最小频移键控&#xff08;Minimum-Shift Keying&#xff0c;缩写&#xff1a;MSK&#xff09;是一种连续相位调制的频移键控方式&#xff0c;在1950年代末和1960年代产生。[1] 与偏移四相相移键控&#xff08;OQPSK&#xff09;类似&…

nodejs解析url参数

需要引入 url 模块&#xff1b; var http require(http); var url require(url);http.createServer(function (req, res) {res.writeHead(200, {Content-Type: text/plain});// 解析 url 参数var params url.parse(req.url, true).query;res.write("name: " par…

解决Git 不相关的分支合并

可以直接调到解决方案,接下来是原因分析和每步的解决方式 问题原因: 我之前在自己本机创建了一个初始化了Git仓库,后来有在另一个电脑初始化仓库,并没有clone自己在本机Git远程仓库地址,导致Git历史版本不相关 错误信息 From https://gitee.com/to-uphold-justice-for-other…

MES管理系统中生产物料管理的设计

在数字化工厂建设的浪潮中&#xff0c;MES管理系统作为执行层的核心管理系统&#xff0c;其重要性日益凸显。特别是在生产物料管理方面&#xff0c;MES管理系统不仅承担物料计划指令的接收&#xff0c;还负责物料派工及使用反馈的数据收集&#xff0c;其业务流程的设计对数字化…

【Leetcode】2923. 找到冠军 I

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 一场比赛中共有 n n n 支队伍&#xff0c;按从 0 0 0 到 n − 1 n - 1 n−1 编号。 给你一个下标从 0 0 0 开始、大小为 n ∗ n n * n n∗n 的二维布尔矩阵 g r i d grid gr…

改进的注意力机制的yolov8和UCMCTrackerDeepSort的多目标跟踪系统

基于yolov8和UCMCTracker/DeepSort的注意力机制多目标跟踪系统 本项目是一个强大的多目标跟踪系统&#xff0c;基于[yolov8]链接和[UCMCTracker/DeepSot]/链接构建。 &#x1f3af; 功能 多目标跟踪&#xff1a;可以实现对视频中的多目标进行跟踪。目标检测&#xff1a;可以实…

Linux系统搭建FastDFS文件服务结合内网穿透实现公网访问本地文件

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【Tars-go】腾讯微服务框架学习使用01--初始化服务

1 初始INIT-Demo运行 按照官网描述 go get 安装框架依赖 # < go 1.16 go get -u github.com/TarsCloud/TarsGo/tars/tools/tarsgo go get -u github.com/TarsCloud/TarsGo/tars/tools/tars2go # > go 1.16 go install github.com/TarsCloud/TarsGo/tars/tools/tarsgolat…

常见Spring相关工具报错-源码分析

常见Spring相关工具报错-源码分析 1. Resouce Bundle 国际化 yml 配置不生效 1. Resouce Bundle 国际化 yml 配置不生效 1️⃣ 配置yml 2️⃣ 报错信息 2024-04-15 15:13:57.828 [http-nio-8090-exec-1] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - [doResolveHan…

spring boot 集成rocketMq + 基本使用

1. RocketMq基本概念 1. NameServer 每个NameServer结点之间是相互独立&#xff0c;彼此没有任何信息交互 启动NameServer。NameServer启动后监听端口&#xff0c;等待Broker、Producer、Consumer连接&#xff0c; 相当于一个路由控制中心。主要是用来保存topic路由信息&#…

python实验4

一、实验目的 掌握和使用进程池掌握和使用多线程掌握和使用互斥锁掌握协程的使用 二、实验内容 使用进程池计算区间内素数个数使用多线程计算区间内合数个数互斥锁的设计和使用异步状态转换器 三、实验环境 在Educoder平台进行实验 四、实验要求 根据每个实训的每个关卡要…

springCloudAlibaba集成seata实战(分布式事物详解)

一、分布式事务 1. 事务介绍 1.1 基础概念 事务&#xff1a;保证我们多个数据库操作的原子性&#xff0c;多个操作要么都成功要么都不成功 事务ACID原则 A&#xff08;Atomic&#xff09;原子性&#xff1a;构成事务的所有操作&#xff0c;要么都执行完成&#xff0c;要么全部…

使用冒泡排序模拟实现qsort函数

目录 冒泡排序qsort函数的使用1.使用qsort函数排序整型数据2.使用qsort函数排序结构数据 冒泡排序模拟实现qsort函数今日题目1. 字符串旋转结果2.杨氏矩阵3.猜凶手4.杨辉三角 总结 冒泡排序 冒泡排序的核心思想是:两两相邻的元素进行比较 代码如下: //⽅法1 void bubble_so…

ros-param添加参数控制rviz显示掉帧问题

在ros中有一套参数系统可以直接写到launch文件中&#xff0c;这样非常方便&#xff0c;不需要编译就能直接用&#xff0c;这对于c来说非常的有好&#xff0c;这里记录一下如何使用。 主要步骤如下&#xff1a; 首先初始化节点 使用nodehandle进行管理&#xff0c;然后通过param…

停车场道闸系统的实施流程有哪些安装注意事项?

随着城市交通压力的不断增加&#xff0c;停车场道闸系统的安装与优化成为了提升城市交通效率的关键环节。不同类型的停车场&#xff0c;如社区、园区、公共交通站点以及商业综合体等&#xff0c;都有其独特的运营特点和用户需求。因此&#xff0c;了解并掌握停车场道闸系统安装…