【每日学点HarmonyOS Next知识】数据库三方库、蓝牙设备广播、namespace合并、CPU架构、构建多环境配置

230 阅读3分钟

1、HarmonyOS 有没有数据库相关的三方库?

dataORM是一个具有一行代码操作数据库或链式调用,备份、升级、缓存等特性的关系映射数据库。 gitee.com/openharmony…

2、HarmonyOS 中有提供解析“蓝牙设备的广播数据段”的API吗?

类似于ScanRecord蓝牙广播数据来源:开启startBLEScan,扫描到的ScanResult中的data信息 诉求是想解析蓝牙设备的广播数据段信息。 比如advertisData、advertisServiceUUIDs、localName、serviceData等,但是在官方API说明中没有对应数据信息详细说明。

广播包的数据说明:gitee.com/openharmony…

AdvertiseData 描述BLE广播数据包的内容,广播包数据长度为31个字节。 原子化服务API:从API version 12开始,该接口支持在原子化服务中使用。 系统能力:SystemCapability.Communication.Bluetooth.Core。

名称类型可读可写说明
serviceUuidsArray表示要广播的服务 UUID 列表。
manufactureDataArray<ManufactureData>表示要广播的广播的制造商信息列表。
serviceDataArray<ServiceData>表示要广播的服务数据列表。
includeDeviceNameboolean表示是否携带设备名,可选参数。true表示携带,false或未设置此参数表示不携带。注意带上设备名时广播包长度不能超出31个字节。

当前未提供解析广播包的接口,开发者可以自行解析

3、是否支持跨文件namespace合并?

共享包开发场景,目标是把所有export的内容(包括 function、class、interface、const、enum)放到一个namespace下。由于内容较多,所以所有内容是分散在多个ets文件中的。 尝试的方案:

  1. 所有ets文件都添加 namespace,由于跨文件的namespace不会自动合并,所以export时还是只能选择某个文件的内容。
  2. 在一个namespace中,把其它ets定义的内容重新export,提示无法在namesapce中export类型定义
  3. 在一个namespace中,把所有内容定义到当前namespace下,其它地方反过来引用, 导致循环依赖,单测无法执行

第1、3种方式当前无法实现,第2种方式,实现步骤如下。 test1.ets:

//test1.ets
namespace mynamespace{
  export function foo1(){
    console.log("testTAG","File1")
  }
}
export default mynamespace

test2.ets:

//test2.ets
namespace mynamespace{
  export function foo2(){
    console.log("testTAG","File2")
  }
}
export default mynamespace

test3.ets:

//test3.ets
import mynamespace1 from './test1'
import mynamespace2 from './test2'
export namespace test1111{
  export let my1 = mynamespace1.foo1()
  export let my2 = mynamespace2.foo2()
}

Index.ets:

//Index.est
import { test1111 } from './test3'
test1111.my1
test1111.my2

4、HarmonyOS应用打包CPU架构相关问题?

HarmonyOS应用在打包时是否需要做出区分?如果需要,HarmonyOS应用打包时应区分哪些CPU架构?

目前就只有64位 ,无需在应用打包时做区分

5、HarmonyOS 如何构建多环境配置?

如何添加各环境下的配置项呢?比如说prod环境、dev环境等环境,有不同的后端api host等环境参数,如何进行多环境设置

提供了BuildProfile运行时获取编译构建参数,可以通过默认参数BuildProfile.BUILD_MODE_NAME获取运行时的模式。 参考文档:developer.huawei.com/consumer/cn…