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

相关推荐
你的微笑,乱了夏天15 分钟前
linux centos 7 安装 mongodb7
数据库·mongodb
工业甲酰苯胺26 分钟前
分布式系统架构:服务容错
数据库·架构
XH华30 分钟前
初识C语言之二维数组(下)
c语言·算法
独行soc1 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain2 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship2 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站2 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶2 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
AORO_BEIDOU3 小时前
单北斗+鸿蒙系统+国产芯片,遨游防爆手机自主可控“三保险”
华为·智能手机·harmonyos
梦想平凡4 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle