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

相关推荐
kkeeper~8 小时前
0基础C语言积跬步之内存函数
c语言·开发语言
Chen_harmony8 小时前
【习题04】计算求和
c语言
DevOpenClub8 小时前
职教高考及高职分类招生控制线 API 接口
java·数据库·高考
funnycoffee1238 小时前
华为S5736交换机3层ECMP负载方式
linux·服务器·数据库
添砖java‘’8 小时前
MySQL复合查询
数据库·mysql
星川水月8 小时前
Access数据库快速入门——外部数据导入和SQL简单查询
数据库·sql·access
清平乐的技术专栏8 小时前
一文读懂Kafka中的“消费”(对标MySQL数据库)
数据库·mysql·kafka
i220818 Faiz Ul8 小时前
智慧养老平台|基于SprinBoot+vue的智慧养老平台系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·毕设·智慧养老平台
IT策士9 小时前
Django 从 0 到 1 打造完整电商平台:登录与登出功能实现
数据库·django·sqlite
程序边界9 小时前
标量子查询消除与向量化:一个被低估的协同效应
数据库