HarmonyOS 鸿蒙Next 第三方库汇总

HarmonyOS 鸿蒙Next 第三方库汇总

一、使用三方库时注意事项

  1. 版本兼容问题

在使用 ohpm install 库名 命令安装三方库时,可能会遇到版本不匹配的问题。尽管代码在IDE中没有提示错误,但在运行时可能会抛出异常。此时需要前往OpenHarmony三方库中心仓库查看最新的版本号,并尝试更换不同的版本。

  1. 自动化测试配置问题

在配置自动化测试时,可能会遇到因版本号使用 ^ 导致的问题。例如,在 oh-package.json5 文件中,应该将 @xxx": “^1.0.0” 更改为 @xxx": “1.0.0”,以确保版本号精确指定。

  1. ohpm命令识别问题

如果在使用 ohpm install 命令时遇到 “The term ‘ohpm’ is not recognized as the name of a cmdlet” 错误,说明DevEco Studio的环境变量配置不正确或版本过旧。建议卸载旧版本并重新安装最新版DevEco Studio。

  1. 跨平台库移植问题

Android或iOS中使用的.so库无法直接移植到HarmonyOS项目中使用。需要采用HarmonyOS支持的方式来编写C++代码,并重新编译生成.so库。

二、主要使用的三方库

1、数据解析方案

接口返回的数据通常需要转换为类(class)的形式来方便使用。这样不仅提高了代码的可读性和可维护性,还可以利用类的方法来进行数据处理。

推荐库:

• class-transformer
• @yunkss/ef_json
• [@pura](/user/pura)/harmony-utils

其中,class-transformer 和 @pura/harmony-utils 在解析数据时,可以保留类中的方法。在我们的项目中选择了 class-transformer。

代码示例:

import { plainToClass } from 'class-transformer'
import { JSONObject } from '@yunkss/ef_json'
import { JSONUtil } from '[@pura](/user/pura)/harmony-utils';

class Ohter {
  dateofBirth: string = ""
}

class User {
  name: string = ""
  ohter?: Ohter

  getAge() {
    if (!this.ohter) {
      return '数据异常'
    }
    const today = new Date();
    const birthDate = new Date(this.ohter.dateofBirth);
    let age = today.getFullYear() - birthDate.getFullYear();
    return age;
  }
}
@Entry
@Component
struct Index {
  userJson: string = `{ "name":"张三","ohter":{"dateofBirth":"2000-01-01"}}`
  userJson_2: string = `{ "name":"李四" }`

  build() {
    Column() {
      Text('ohpm i [@pura](/user/pura)/harmony-utils')
      Button('harmony-utils 解析时,方法会丢失').onClick(() => {
        let mUser: User|null = JSONUtil.jsonToBean(User, this.userJson);
        console.info(`姓名:${mUser?.name}`)
        try {
          console.info(`年龄:${mUser?.getAge()}`)
        } catch (e) {
          console.error(`年龄出错`, e)
        }
      })
      Text('ohpm install @yunkss/ef_json')
      Button('@yunkss/ef_json 解析时,方法会丢失').onClick(() => {
        let mUser: User = JSONObject.parseObject<User>(this.userJson);
        console.info(`姓名:${mUser.name}`)
        try {
          console.info(`年龄:${mUser.getAge()}`)
        } catch (e) {
          console.error(`年龄出错`, e)
        }
      })

      Text('ohpm install class-transformer')
      Button('class-transformer 在解析数据时,方法不会丢失').onClick(() => {
        let mUser: User = plainToClass(User, JSON.parse(this.userJson))
        console.info(`姓名:${mUser.name}`)
        console.info(`年龄:${mUser.getAge()}`)
      })

    }
    .width('100%')
    .height('100%')
  }
}

输出:

姓名:张三 年龄:24 姓名:张三 年龄出错 TypeError: is not callable 姓名:张三 年龄:24 复制 2、网络请求方案

网络请求是移动应用中常见的功能之一,HarmonyOS提供了多种库供选择。

推荐库:

• [@ohos](/user/ohos)/axios
• @yunkss/ef_axios
• import { http } from '@kit.NetworkKit';(官方)

由于团队习惯使用Axios,因此选择了 @ohos/axios。

3、加密方案

加密是保护数据安全的重要手段,HarmonyOS提供了多种库供选择。

推荐库:

• import { cryptoFramework } from '@kit.CryptoArchitectureKit';(官方)
• ohpm install @yunkss/ef_crypto
• class-transformer

在项目中广泛使用了 class-transformer,因为它除了数据解析外还有其他实用功能。

4、设备唯一标识

获取设备的唯一标识符是许多应用的基本需求之一。

推荐库:

• class-transformer
• @ranran/utilcode

使用三方库获取设备唯一标识符的一个优点是,即使卸载重装,该标识符依然保持不变。

5、支付宝SDK

对于支付功能,我们选择了

 @cashier_alipay/cashiersdk

注意事项: 测试时需使用真机,因为模拟器和预览器可能不支持。

6、Tab样式

为了实现美观的Tab布局,我们使用了 @zyc/tablayout。


更多关于HarmonyOS 鸿蒙Next 第三方库汇总的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复
👀。

更多关于HarmonyOS 鸿蒙Next 第三方库汇总的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对您分享的HarmonyOS鸿蒙Next项目收工总结之《三方库》内容,以下是一些专业性的回复:

在您的项目中,对于三方库的使用,版本兼容问题是一个需要特别关注的点。当使用ohpm install命令安装库时,可能会遇到版本不匹配导致的异常。此时,建议前往OpenHarmony三方库中心仓库查看最新的版本号,并尝试更换合适的版本。同时,在配置自动化测试时,应避免使用版本号中的“^”符号,以确保版本号的精确指定。

此外,您提到的Android或iOS中的.so库无法直接移植到HarmonyOS项目中使用,这是正确的。为了解决这个问题,需要采用HarmonyOS支持的方式来编写C++代码,并重新编译生成.so库。

在数据处理方面,您选择了class-transformer库,这是一个非常明智的选择。它不仅可以方便地将接口返回的数据转换为类的形式,还可以保留类中的方法,提高了代码的可读性和可维护性。

对于网络请求,您选择了@ohos/axios库,这也是一个很好的选择。HarmonyOS提供了多种网络请求库,选择适合自己项目的库可以大大提高开发效率。

最后,对于设备的唯一标识符获取和支付功能,您也选择了合适的三方库。这些库不仅可以满足项目的需求,还可以提高代码的稳定性和安全性。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部