一、OpenHarmony源码中DPI配置

  • 在源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml中有rk3568的默认配置

rk3568开发板默认的DPI配置为240,范畴为80-640。

    <!--Window display dpi, valid range is 80~640, use 0 if no configuration is requeired-->    <dpi>240</dpi>

以下为触觉智能开发板在不同DPI时屏幕的显示状况

  • DPI为240时
  • DPI为100时
  • DPI为600时

二、更改开发板的DPI

办法一:更改源码编译烧录固件

  • 在源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml文件中批改dpi,编译后烧录固件。

      <!--Window display dpi, valid range is 80~640, use 0 if no configuration is requeired-->  <dpi>240</dpi>

办法二:发送display_manager_config.xml文件至设施etc/window/resources

  • OpenHarmony固件编译烧录进入设施后,display_manager_config.xml文件会被预编译打包至设施端etc/window/resources目录下,什么,为什么只有window/resources字段,因为ohos_prebuilt_etc就是把文件放进设施的etc文件夹
foundation/window/window_manager/resources/config/BULID.gn文件如下,上面代码的意思是源码foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml会真正装置在设施中的etc/window/resources文件地位,ohos_prebuilt_etc("display_manager_config") {  if (device_name == "rk3568") {    source = "//foundation/window/window_manager/resources/config/rk3568/display_manager_config.xml"    install_enable = true······  relative_install_dir = "window/resources"}
  • 步骤如下

    # 进入sdk\版本号\toolchain输出cmd关上命令行,从新加载零碎为可读写D:\DevEco Studio\sdk\9\toolchains>hdc_std shell mount -o remount,rw /# 替换/etc/window/resources中的display_manager_config.xml文件D:\DevEco Studio\sdk\9\toolchains>hdc_std file send C:\Users\jjh\display_manager_config.xml /etc/window/resources而后重启开发板让设置失效

知识点附送

为ohos_prebuilt_XXX类指标增加反对指定output属性的能力

  • 以该pr学习 https://gitee.com/openharmony/build/pulls/822/files 为ohos_prebuilt_XXX类指标增加反对指定output属性的能力。
  • ohos_prebuilt_XXX类指标是指ohos_prebuilt_executableohos_prebuilt_shared_libraryohos_prebuilt_static_libraryohos_prebuilt_etc。这类指标只反对指定source属性,拷贝到out目录时指标文件名与源文件名是一样的,无奈另行指定名字。该pr解决了此限度,增加了output这个可选属性用于指定指标文件名,不指定的状况下默认与源文件名是一样的(与原逻辑保持一致)。
  • OpenHarmony编译构建子系统是基于Gn和ninja的,而gn自身是有原生模板(source_set,shared_library, static_library, action, executable,group)。gn也反对用户自定义编译模板,OpenHarmony编译子系统提供了一系列自定义的模板(ohos_shared_library、ohos_prebuilt_executable、ohos_prebuilt_shared_library等)

    • 自定义模板的源码位于 https://gitee.com/openharmony/build/tree/master/templates
  • ohos_prebuilt_executableohos_prebuilt_shared_libraryohos_prebuilt_static_libraryohos_prebuilt_etc预编译模板在prebuilt.gni中定义,它们通过调用ohos_copy模板实现。

    • ohos_copy模板实现了拷贝文件到设施具体位置的性能,它须要定义invoker.sources和invoker.outputs,即source和output属性。例如
  • ohos_prebuilt_executableohos_prebuilt_shared_libraryohos_prebuilt_static_libraryohos_prebuilt_etc(上面用ohos_prebuilt_xxx代指)增加反对指定output属性的能力的相干代码如下

    templates/common/copy.gni文件中:template("ohos_copy") {assert(defined(invoker.sources),       "sources must be defined for ${target_name}.")assert(defined(invoker.outputs),       "outputs must be defined for ${target_name}.")...    if (_is_prebuilt) {      _outputs = invoker.outputs      module_source = string_replace(_outputs[0], "${target_out_dir}/", "", 1)    }    prebuilt = _is_prebuilt···
templates/cxx/prebuilt.gni文件中:template("ohos_prebuilt_xxx") {···# 如果.gn文件中为ohos_prebuilt_xxx指定了out属性,文件名称被另外指定。没有则默认为原名称  if (defined(invoker.output)) {    _copy_output = "${target_out_dir}/${invoker.output}"  } else {    _copy_output = "${target_out_dir}/${invoker.source}"  }···    outputs = [ _copy_output ]}

使能/禁用selinux

  • 禁用selinux

    hdc_std shell mount -o rw,remount /hdc_std shell "sed -i 's/enforcing/permissive/g' /system/etc/selinux/config"hdc_std shell "cat /system/etc/selinux/config |grep SELINUX="# 重启设施hdc_std shell reboot
  • 使能selinux

    hdc_std shell mount -o rw,remount /hdc_std shell "sed -i 's/permissive/enforcing/g' /system/etc/selinux/config"hdc_std shell "cat /system/etc/selinux/config |grep SELINUX="# 重启设施hdc_std shell reboot