首页 > 其他分享 >鸿蒙开发之引入第三方本地har(静态库)

鸿蒙开发之引入第三方本地har(静态库)

时间:2024-04-01 14:33:43浏览次数:17  
标签:domain string 鸿蒙 format 静态 args prefix hilog har

        在Android开发中经常会遇到引入第三方库,鸿蒙开发也不例外,接下来介绍怎么引入第三方本地har(静态库),以打印logger日志为例子。

一、新建har库(静态库)

创建库模块

  1. 鼠标移到工程目录顶部,单击右键,选择New > Module,在工程中添加模块。
  2. Choose Your Ability Template界面中,选择Static Library,并单击Next

  3. Configure New Module界面中,设置新添加的模块信息,设置完成后,单击Finish完成创建。

    Module name:新增模块的名称。Language:开发语言。Device type:支持的设备类型。Enable native:是否创建一个用于调用C++代码的模块。

4、在生成代码编写logger的代码,本例子放在common/utils 目录下



import hilog from '@ohos.hilog';

const LOGGER_PREFIX: string = 'News Release';

class Logger {
  private domain: number;
  private prefix: string;

  // format Indicates the log format string.
  private format: string = '%{public}s, %{public}s';

  /**
   * constructor.
   *
   * @param prefix Identifies the log tag.
   * @param domain Indicates the service domain, which is a hexadecimal integer ranging from 0x0 to 0xFFFFF
   * @param args Indicates the log parameters.
   */
  constructor(prefix: string = '', domain: number = 0xFF00) {
    this.prefix = prefix;
    this.domain = domain;
  }

  debug(...args: string[]): void {
    hilog.debug(this.domain, this.prefix, this.format, args);
  }

  info(...args: string[]): void {
    hilog.info(this.domain, this.prefix, this.format, args);
  }

  warn(...args: string[]): void {
    hilog.warn(this.domain, this.prefix, this.format, args);
  }

  error(...args: string[]): void {
    hilog.error(this.domain, this.prefix, this.format, args);
  }
}

export default new Logger(LOGGER_PREFIX);

编译库模版

开发完库模块后,选中模块名,然后通过DevEco Studio菜单栏的Build > Make Module ${libraryName}进行编译构建,生成HAR。HAR可用于工程其它模块的引用,或将HAR上传至ohpm仓库,供其他开发者下载使用。若部分源码文件不需要打包至HAR中,可通过创建.ohpmignore文件,配置打包时要忽略的文件/文件夹。

二、应用HAR文件资源

1、在开发的entry中有oh-package.json5中加入dependencies或者devDependencies(开发),本例放在项目中的libs下的

添加成功后 会提示 安装har 点击 RUN 'ohpm install' 即可安装成功,安装有需要同步一下

2、在ets中引入 import logger from 'jingan1.0.2/src/main/ets/common/utils/Logger' 即可使用

import logger from 'jingan1.0.2/src/main/ets/common/utils/Logger'

本文本地引入第三方库介绍完毕,下一章将介绍另外一种库动态共享库

标签:domain,string,鸿蒙,format,静态,args,prefix,hilog,har
From: https://blog.csdn.net/karision/article/details/137045566

相关文章

  • ARM GPU资源同步 shareable coherent等
    1.背景介绍之前在Vulkan内存与资源管理 提到VK_MEMORY_PROPERTY_HOST_COHERENT_BIT:该标志位表示CPU的write数据flush给GPU时,无需调用vkFlushMappedMemoryRanges;GPU的write的数据想要对CPU可见时,无需调用vkInvalidateMappedMemoryRanges。解析:CPU的write数据是暂存在CPU......
  • 内部类——成员内部类、静态内部类、接口内部类、局部内部类、匿名内部类
    //外部类publicclassOutter{ //1、成员内部类 classA{} //2、静态内部类 staticclassB{} publicvoidmethod(){ //3、局部内部类 classC{} }}publicinterfaceI1{ //4、接口内部类 classD{}}1)成员内部类知识点:成员内部类特点:1.创建成......
  • Error in callback for immediate watcher “chartsData“: “Error: Initialize fail
     在使用echarts提示dom未找到,原因就是当我们封装了echarts组件初始化传值时通常会造成过早调用,也就是在数据还未处理完就已经调用init函数进行初始化,此时dom还未挂载成功,就会报这个错,这里解决可以使用nextTick()函数在初始化时延时调用;this.$nextTick(()=>{this.draw......
  • Nginx静态压缩和代码压缩,提高访问速度!
    https://mp.weixin.qq.com/s/0yfUWWfM2RcQBgCiAKcZLAnginx静态资源动态压缩nginx静态资源静态压缩基于目前大部分的应用,都使用了前后端分离的框架,vue的前端应用,也是十分的流行。不知道大家有无遇到这样的问题:随着前端框架的页面,功能开发不断的迭代;安装的依赖,不断的增多;这......
  • HCIA——六、静态路由,路由表及ARP包抓取
    ZY目录HCIA所有内容:路由器一、路由器的工作原理:二、交换机MAC地址表:ARP包:工作原理:三、路由表:1、实验材料:2、实验过程:1、配置IP地址,PC端用手动配置:2、配置静态路由:3、测试全网连通性:(这里我们均使用PC3进行ping)四、负载均衡1、什么是负载均衡?2、什么是开销相同?五、......
  • pycharm卸载失败(已解决),控制面板以及自带的Uninstall.exe均无法卸载
    Uninstallhasn’tdetectedfolderofPyCharminstallation.Probablyuninstall.exewasmovedfromtheinstallationfolder.解决方法1.新建一个文本文档,2.重命名文本:IdeaWin64.dll3.运行卸载程序,成功弹出卸载窗口4.卸载成功......
  • 什么时候使用静态方法,面向对象编程,设计模式,php编程
    静态方法在编程中有多种适用情况,以下是一些常见的使用场景:1.**工具类或辅助函数**:当你需要创建一个类来提供一些与类本身的实例无关的工具方法或辅助函数时,静态方法是很合适的。这些方法可以直接通过类名来调用,而无需创建类的实例。2.**计算或常量**:如果有一些计算或常量与......
  • 数据下钻--vue+springboot+echarts
    今天下午整了下数据下钻直接上成果: 然后左边可以选范围:左边调范围,然后对应的会显示那些省份满足条件。 然后就是鼠标悬停在某个省份,就显示相应数量: 然后可以点击对应省份进行下钻到市然后可以继续下钻到县:  同样的呢,市和县都可以向省一样那样显示范围和调试: ......
  • 前端可视化echarts和three
    canvas画一条直线constcanvas=document.getElementById('canvas')constctx=canvas.getContext('2d')ctx.beginPath()//绘制都用beginPath和closePath包裹ctx.lineWidth=4ctx.strokeStyle='orange'//起点终点中间点ctx.moveTo......
  • std::make_shard 和 new 的比较
    std::make_shared和new都用于动态分配内存并返回指向该内存的指针,但它们之间有一些重要的区别。下面详细解释它们之间的差异:内存分配方式:std::make_shared:该函数是一个模板函数,会在内存中分配一块足够大的内存来存储对象及其控制块(用于跟踪引用计数等信息),然后在此内存上构......