构建鸿蒙ACE静态库

搭建开发环境

  • 根据说明文档下载鸿蒙全部代码,一般采取第四种方式获取最新代码(请保证代码为最新) 源码获取
  • 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.a base
libjerry-core.a foundation/ace
libjerry-ext.a foundation/ace
libjerry-libm.a foundation/ace
libjerry-port-default.a foundation/ace
libjerry-port-default-minimal.a foundation/ace
libjsfwk.a foundation/ace
libui.a foundation/graphic
libfreetype.a foundation/graphic
liblibjpeg.a foundation/graphic
liblibpng.a foundation/graphic
libzlib.a foundation/graphic
libutils_jsapi.a utils

问题

  • 和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.鸿蒙南向开发方向

相关推荐
无足鸟ICT1 分钟前
【RHCA+】安装Tuned
linux·服务器·centos
数字新视界1 小时前
信创动环监控在机房环境管理中的智能化应用与实践分析
大数据·人工智能·物联网·信息与通信·动环监控系统
九英里路2 小时前
protobuf快速上手
网络·c++·中间件·json·谷歌·序列化·protobuf
纪念 2293 小时前
C++ 算法基础 (差分)
开发语言·c++·算法
测试界的小码农5 小时前
【Linux 命令实战(06):Linux 文件权限管理,掌握 chmod、chown、chgrp】
linux·运维·服务器
Sirius_Ji6 小时前
# 一份鸿蒙原生支持硬解的 ffmpeg 开发基座
harmonyos
艺杯羹6 小时前
1Panel 装好后 ufw 仍是 inactive:一次服务器安全盲区复盘
服务器·数据库·安全·网络安全·系统架构·实战·1panel
贾伟康7 小时前
HarmonyOS API 26 Navigation路由栈上限:stackSizeLimit、过载保护与容量观测
harmonyos·arkts·navigation·navpathstack·api26
ShineWinsu8 小时前
对于Qt:QTreeWidget常见属性以及QTreeWidgetItem类的解析
开发语言·c++·qt·gui·客户端·多叉树·qtreewidget
女神下凡8 小时前
芯参谋(107):杰理AC_中科蓝讯_开发指南
linux·服务器·网络·单片机·嵌入式硬件