OpenHarmony实战开发——引入开源C/C++库之Har包里的NDK

Har 包

HAR(Harmony Archive)是静态共享包,可以包含代码、C++ 库、资源和配置文件。通过 HAR 可以实现多个模块或多个工程共享 ArkUI 组件、资源等相关代码。HAR 不同于 HAP,不能独立安装运行在设备上,只能作为应用模块的依赖项被引用。

  • 使用场景
    • 作为二方库,发布到OHPM 私仓,供公司内部其他应用使用。
    • 作为三方库,发布到 OHPM 中心仓,供其他应用使用。
  • HAR 开发约束限制
    • HAR 不支持 UIAbility、ExtensionAbility 组件和 pages 页面。
    • HAR 不支持在 build-profile.json5 文件的 buildOption 中配置 worker。
    • FA 模型与 Stage 模型的 HAR 不支持相互引用。
    • Stage 模型的 HAR,不能引用 AppScope 内的内容。在编译构建时 AppScope 中的内容不会打包到 HAR 中,因此会导致 HAR 资源引用失败。

开发介绍

  1. 创建一个工程
  1. 工程里加模块
  1. 选择 staticlibrary,就是静态库
  1. 打开 native 的开关就是支持 nativec++,也就支持 ndk
  1. 在主工程里导入 library 工程
  1. 修改代码导出控件,方法

    复制代码
     // library 工程里修改 ------------------------------------------
     // src/main/ets/components/mainpage/MainPage.ets
     export struct AddCom {
     ......
             Text(this.message)
               .fontSize(50)
               .fontWeight(FontWeight.Bold)
               .onClick(() => {
                 hilog.info(0x0000, 'testTag', 'Test NAPI 2 + 3 = %{public}d', testNapi.add(this.na, this.nb));
                 this.na += 1;
                 this.nb += 2;
                 this.message = "AddCom = " + testNapi.add(this.na, this.nb);
               })
    
     // src/main/ets/components/mainpage/Caculate.ets
     import hilog from '@ohos.hilog';
     import testNapi from 'liblibrary.so';
    
     export namespace  Caculator {
       export function add(a: number, b: number) {
         hilog.info(0x0000, 'testTag', 'Test NAPI 2 + 3 = %{public}d', testNapi.add(a, b));
         return testNapi.add(a, b);
       }
     }
    
     // Index.ets
     export { AddCom } from './src/main/ets/components/mainpage/MainPage'
     export { Caculator } from './src/main/ets/components/mainpage/Caculate'
    
     // library 工程里修改 ------------------------------------------
    
     // 主项目里导入
     import { AddCom, Caculator } from 'library'
     .....
             Text(this.message)
               .fontSize(50)
               .fontWeight(FontWeight.Bold)
               .onClick(() => {
                 hilog.info(0x0000, 'testTag', 'Test Har 2 + 3 = %{public}d', Caculator.add(this.na, this.nb));
                 this.na += 10
                 this.nb += 10
                 this.message = "2+3=" + Caculator.add(this.na, this.nb)
               })
  2. 结果

总结

可以利用 OpenHarmony 的 hsp 和 har,包装组件和对应的 NDK 工程,提供给其他应用进行开发和应用。

为了能让大家更好的学习鸿蒙(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.鸿蒙南向开发方向

相关推荐
快乐飒男7 分钟前
哈希表(c语言)
c语言·哈希算法·散列表
♡喜欢做梦41 分钟前
【MySQL】深入浅出事务:保证数据一致性的核心武器
数据库·mysql
遇见你的雩风44 分钟前
MySQL的认识与基本操作
数据库·mysql
dblens 数据库管理和开发工具1 小时前
MySQL新增字段DDL:锁表全解析、避坑指南与实战案例
数据库·mysql·dblens·dblens mysql·数据库连接管理
weixin_419658311 小时前
MySQL的基础操作
数据库·mysql
aramae1 小时前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法
不辉放弃2 小时前
ZooKeeper 是什么?
数据库·大数据开发
Goona_2 小时前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
程序员编程指南3 小时前
Qt 数据库连接池实现与管理
c语言·数据库·c++·qt·oracle
李永奉4 小时前
STM32-定时器的基本定时/计数功能实现配置教程(寄存器版)
c语言·开发语言·stm32·单片机·嵌入式硬件