论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
数据库
›
PostgreSQL
›
鸿蒙HarmonyOS实战:创建NDK工程、毕昇编译器 ...
鸿蒙HarmonyOS实战:创建NDK工程、毕昇编译器
冬雨财经
金牌会员
|
2024-8-24 05:51:03
|
显示全部楼层
|
阅读模式
楼主
主题
842
|
帖子
842
|
积分
2526
NDK实用场景
适合利用NDK的场景:应用涉及如下场景时,适合接纳NDK开发
性能敏感的场景,如游戏、物理模仿等计算麋集型场景。
需要复用已有C或C++库的场景。
需要针对CPU特性举行专项定制库的场景,如Neon加快。
不发起利用NDK的场景:应用涉及如下场景时,不发起接纳NDK开发
纯C或C++的应用。
渴望在尽大概多的HarmonyOS设备上保持兼容的应用。
NDK必备
为顺遂举行NDK开发,开发者需要先把握须要的基本概念及根本知识。
NDK基本
Node-APINode-APINode-API
曾用名NAPI,是HarmonyOS中提供ArkTS/JS与C/C++跨语言调用的接口,是NDK接口中的一部分。该接口是在Node.js提供的Node-API根本上扩展而来,但与Node.js中的Node-API不完全兼容。
C API
HarmonyOS NDK的曾用名,不再利用。
前置知识
Linux C语言编程知识
内核、libc根本库基于POSIX等标准扩展而来,把握基本的Linux C编程知识可以大概更好的帮助理解HarmonyOS NDK开发。
CMake利用知识
CMake是HarmonyOS默认支持的构建系统。请先通过CMake官方文档相识根本用法。
Node Addons开发知识
ArkTS接纳Node-API作为跨语言调用接口,认识基本的Node Addons开发模式,可以更好理解NDK中Node-API的利用。
Clang/LLVM编译器利用知识
具备一定的Clang/LLVM编译器根本知识,可以大概帮助开发者编译出更优的Native动态库。
NDK目录
build目录:放置预定义的toolchain脚本文件ohos.toolchain.cmake
CMake编译时需要读取该文件中的默认值,比如编译器架构、C++库链接方式等,因此在编译时会通过CMAKE_TOOLCHAIN_FILE指出该文件的路径,便于CMake在编译时定位到该文件。
build-tools文件夹:放置NDK提供的编译工具
# 键入下一行命令查看CMake的版本
cmake -version
# 结果
cmake version 3.16.5
CMake suite maintained and supported by Kitware (kitware.com/cmake).
复制代码
llvm文件夹:放置NDK提供的编译器
NDK常用模块
下表先容了NDK的常用模块。
模块模块简介标准C库以musl为根本提供的标准C库接口。标准C++库C++运行时库libc++_shared。日志打印日志到系统的HiLog接口。Node-API当需要实现ArkTS/JS和C/C++之间的交互时,可以利用Node-API。libuv三方异步IO库。zlibzlib库,提供基本的数据压缩、解压接口。Rawfile应用资源访问接口,可以读取应用中打包的各种资源。XComponentArkUI XComponent组件提供surface与触屏事件等接口,方便开发者开发高性能图形应用。Drawing系统提供的2D图形库,可以在surface举行绘制。OpenGL系统提供的OpenGL 3D图形接口。OpenSL ES用于2D、3D音频加快的接口库。
创建NDK工程
下面通过DevEco Studio的NDK工程模板,来演示如何创建一个NDK工程。
不同DevEco Studio版本的领导界面、模板默认参数等会有所不同,请根据现实工程需要,创建工程或修改工程参数。
通过如下两种方式,打开工程创建领导界面。
假如当前未打开任何工程,可以在DevEco Studio的接待页,选择
Create Project
开始创建一个新NDK工程。
假如已经打开了工程,可以在菜单栏选择
File > New > Create Project
来创建一个新NDK工程。
根据工程创建领导,选择Native C++工程模板,然后单击
Next
。
在工程设置页面,根据领导设置工程的基本信息后,单击
Finish。
工具会主动生成示例代码和相关资源,等待工程创建完成。
在工程entry/src/main目录下会包罗cpp目录
毕昇编译器
毕昇编译器是基于LLVM开源软件开发的一款用于C/C++等语言的native编译器,能将C/C++代码工程编译链接成可以在设备上运行的二进制。在无需改动用户代码的条件下,相比业界主流的开源LLVM或GCC编译器,毕昇编译器能提供更强大的优化能力,使编译链接出来的二进制的运行时长更短、指令数更少,帮助提升应用在设备上的运行流畅度。
能力范围
毕昇编译器提供将C/C++代码工程编译链接成可以在设备上运行的二进制的基本能力,主要包罗以下三方面:
编译能力:将C/C++源码文件编译成汇编文件,汇编文件是指利用汇编语言编写的文件。
汇编能力:将汇编文件汇编成可重定向文件,可重定向文件是ELF格式的二进制文件,但不能直接放在设备上运行。
链接能力:将一个或多个可重定向文件一起链接成一个可执行的二进制文件。
亮点特征
毕昇编译器相对于LLVM/GCC编译器有以下特点。
循环优化增强
针对循环相关的编译优化,毕昇编译器在场景识别、布局变换等方面做了改进和增强。比方在社区LLVM已有的Loop Distribution优化上,毕昇编译器相比开源LLVM编译器,能额外识别出循环内不同代码块间数据依赖关系、以及不同代码块运行的迭代次数差别,从而能对更多的循环举行loop distribution优化。
Figure 1 毕昇编译器Loop Distribution优化增强示例
矢量化优化增强
毕昇编译器在矢量化优化方面,相比开源LLVM编译器,不但能将更多的循环做矢量化转换,还在矢量化指令选择上更高效。比方下面示例中,开源LLVM编译器虽然做了矢量化,但利用了5条矢量指令;而毕昇编译器只需要利用2条矢量指令,终极产生的二进制效率更优。
Figure 2 毕昇编译器矢量化优化增强示例
毕昇编译器利用引导
在DevEco Studio 中利用毕昇编译器:
开发者可以获取DevEco Studio 5.0.3.402及以上的版本,在HarmonyOS应用的工程级build-profile.json5中简朴设置即可利用毕昇编译器:在runtimeOS为HarmonyOS的时间,设置nativeCompiler为BiSheng,即可利用毕昇编译器构建HarmonyOS工程的C/C++代码。
最后
小编在之前的鸿蒙系统扫盲中,有许多朋友给我留言,不同的角度的问了一些问题,我明显感觉到一点,那就是许多人到场鸿蒙开发,但是又不知道从哪里动手,由于资料太多,太杂,教授的人也多,无从选择。有许多小搭档不知道学习哪些鸿蒙开发技术?不知道需要重点把握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,终极浪费大量时间。以是有一份实用的
鸿蒙(HarmonyOS NEXT)资料
用来跟着学习黑白常有须要的。
为了确保高效学习,发起规划清晰的学习路线,涵盖以下关键阶段:
鸿蒙(HarmonyOS NEXT)最新学习路线
该路线图包罗根本技能、就业必备技能、多媒体技术、六大电商APP、进阶高级技能、实战就业级设备开发,不但增补了华为官网未涉及的解决方案
路线图适合人群:
IT开发人员:
想要拓展职业边界
零根本小白:
鸿蒙爱好者,渴望从0到1学习,增加一项技能。
技术提升/进阶跳槽:
发展瓶颈期,提升职场竞争力,快速把握鸿蒙技术
2.视频学习资料+学习PDF文档
这份鸿蒙(HarmonyOS NEXT)资料包罗了鸿蒙开发必把握的核心知识要点,内容包罗了
(ArkTS、ArkUI开发组件、Stage模型、多端摆设、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、(南向驱动、嵌入式等)鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)
技术知识点。
HarmonyOS Next 最新全套视频教程
纯血版鸿蒙全套学习资料(面试、文档、全套视频等)
总结
到场鸿蒙开发,你要先认清适合你的方向,假如是想从事鸿蒙应用开发方向的话,可以参考本文的学习路径,简朴来说就是:为了确保高效学习,发起规划清晰的学习路线
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
冬雨财经
金牌会员
这个人很懒什么都没写!
楼主热帖
信息与网络安全期末复习(完整版) ...
ts保姆级教程,别再说你不会ts了 ...
Elasticsearch学习系列五(零停机索引 ...
如何通过JDBC访问MySQL数据库?手把手 ...
iOS全埋点解决方案-手势采集 ...
Linux安装PHP8 新版笔记
有趣的特性:CHECK约束
Pod概述
React技术栈 --》 JSX语法书写JS和Reac ...
BLE蓝牙模块NRF518/NRF281/NRF528/NRF2 ...
标签云
挺好的
服务器
浏览过的版块
网络安全
Oracle
快速回复
返回顶部
返回列表