harmony 鸿蒙DeviceInfo适配说明

  • 2023-06-24
  • 浏览 (1226)

DeviceInfo适配说明

启动子系统设备信息说明

系统参数 接口名 描述
const.product.devicetype const char* GetDeviceType(void) 返回当前设备类型
const.product.manufacturer const char* GetManufacture(void) 返回当前设备生产厂家信息
const.product.brand const char* GetBrand(void) 返回当前设备品牌信息
const.product.name const char* GetMarketName(void) 返回当前设备传播名
const.build.product const char* GetProductSeries(void) 返回当前设备产品系列名
const.product.model const char* GetProductModel(void) 返回当前设备认证型号
const.software.model const char* GetSoftwareModel(void) 返回当前设备内部软件子型号
const.product.hardwareversion const char* GetHardwareModel(void) 返回当前设备硬件版本号
const.product.hardwareprofile const char* GetHardwareProfile(void) 返回当前设备硬件profile
ohos.boot.sn const char* GetSerial(void) 返回当前设备序列号(SN号)
const.product.software.version const char* GetDisplayVersion(void) 返回当前设备用户可见的软件版本号
const.product.bootloader.version const char* GetBootloaderVersion(void) 返回当前设备Bootloader版本号
const.product.udid int GetDevUdid(char *udid, int size) 获取设备udid(先通过参数获取,获取失败通过计算获取)
const char *AclGetSerial(void); 返回当前设备序列号(SN号)(带访问权限检查)
int AclGetDevUdid(char *udid, int size); 获取设备udid(带访问权限检查)

设备信息来源

OHOS 固定值参数的适配

  • OHOS 固定值参数:
  const.ohos.version.security_patch
  const.ohos.releasetype
  const.ohos.apiversion
  const.ohos.fullname
  • 适配说明:

OHOS 固定值参数由OHOS系统填充,厂商不能也不需适配,目前这部分参数主要定义在/base/startup/init/services/etc/param/ohos_const/ohos.para文件中。

厂商固定值参数的适配:

  • 厂商固定值参数:
  const.product.devicetype
  const.product.manufacturer
  const.product.brand
  const.product.name
  const.build.product
  const.product.model
  const.software.model
  const.product.hardwareversion
  const.product.hardwareprofile
  const.product.software.version
  const.product.bootloader.version
  const.build.characteristics
  ... ...

  • 适配说明:

由各产品根据自身情况在vendor目录下适配。

  • 标准系统以RK3568为例,在/vendor/hihope/rk3568/etc/para/hardware_rk3568.para中适配,并安装到指定目录。

    ohos_prebuilt_etc("para_for_chip_prod") {
        source = "./para/hardware_rk3568.para"
        install_images = [ chip_prod_base_dir ]
        relative_install_dir = "para"
        part_name = "product_rk3568"
    }
    
  • 轻量系统与小型系统在产品对应的hals/utils/sys_param/vendor.para文件中配置。例如:

    const.product.manufacturer=Talkweb
    
    
    const.product.brand=Talkweb
    
    
    const.product.name=Niobe
    
    
    const.build.product=Niobe
    
    
    const.product.model=Niobe407
    
    
    const.software.model="2.0.0"
    
    
    const.product.hardwareversion="1.0.0"
    
    
    const.product.hardwareprofile="RAM:192K,ROM:1M,ETH:true"
    ... ...
    

厂商动态参数的适配

厂商动态值参数,目前有三种获取形式:cmdline读取,编译宏定义,在BUILD.gn中定义。

  1. cmdline中读取的值有:ohos.boot.hardware、ohos.boot.bootslots、ohos.boot.sn等,其中ohos.boot.sn的获取略有不同,具体如下:

    • 标准系统的Serial从参数ohos.boot.sn读取。

    ohos.boot.sn参数值的获取方式:首先从cmdline(由uboot生成)获取,如果获取到的是sn值则直接读取,若获取的是文件路径,则从文件中读取;当获取不到时从默认的Sn文件读取,默认文件为:/sys/block/mmcblk0/device/cid;/proc/bootdevice/cid

    • 轻量系统与小型系统的Serial各产品在实现过程中可能有自己特殊的算法,因此OpenHarmony支持在hals/utils/sys_param目录下hal_sys_param.c文件中通过HalGetSerial()接口自定算法来获取Serial。
  2. 编译宏定义的形式获取参数,目前主要在轻量系统与小型系统中用到,例如:

     defines = [
         "INCREMENTAL_VERSION=\"${ohos_version}\"",
         "BUILD_TYPE=\"${ohos_build_type}\"",
         "BUILD_USER=\"${ohos_build_user}\"",
         "BUILD_TIME=\"${ohos_build_time}\"",
         "BUILD_HOST=\"${ohos_build_host}\"",
         "BUILD_ROOTHASH=\"${ohos_build_roothash}\"",
     ]
    
  3. 在BUILD.gn中定义,可参考文件/base/startup/init/services/etc/BUILD.gn,例如:

     if (target_cpu == "arm64") {
         extra_paras += [ "const.product.cpu.abilist=arm64-v8a" ]
     }
     if (build_variant == "user") {
         extra_paras += [
             "const.secure=1",
             "const.debuggable=0",
         ]
     } else if (build_variant == "root") {
         extra_paras += [
             "const.secure=0",
             "const.debuggable=1",
         ]
     }
     if (device_type != "default") {
         extra_paras += [
             "const.product.devicetype=${device_type}",
             "const.build.characteristics=${device_type}",
         ]
     }
     module_install_dir = "etc/param"
    
    
    

    特别说明:

  4. 小型系统的产品需要在hals/utils/sys_param/BUILD.gn中添加vendor.para的编译,具体如下:

      copy("vendor.para") {
          sources = [ "./vendor.para" ]
          outputs = [ "$root_out_dir/vendor/etc/param/vendor.para" ]
      }
    
  5. 轻量系统的产品由于没有文件系统,在编译时会把hal_sys_param.c和vendor.para文件转化为头文件,编译时直接编译到系统中。

你可能感兴趣的鸿蒙文章

harmony 鸿蒙子系统开发

harmony 鸿蒙AI框架开发指导

harmony 鸿蒙NNRt接入适配指导

harmony 鸿蒙应用特权配置指南

harmony 鸿蒙开发实例

harmony 鸿蒙搭建环境

harmony 鸿蒙开发指导

harmony 鸿蒙概述

harmony 鸿蒙ArkCompiler开发指导

harmony 鸿蒙窗口标题栏定制开发指导

0  赞