HarmonyOS鸿蒙Next包管理常见开发问题

HarmonyOS鸿蒙Next包管理常见开发问题

包管理子系统

使用hdc命令安装release hap包到手机时上报不可信错误

适用于:HarmonOS 3.1 Beta API 9

问题现象

release hap包用hdc命令安装到手机上时报错“INSTALL_FAILED_APP_SOURCE_NOT_TRUSTED”。

解决措施

AGC的布证书不支持本地安装只能用于上架,签名中心只给预置应用申请Profile,不支持本地调试。

参考链接

调试指南

如何获取App版本号,版本名,屏幕分辨率等信息

适用于:HarmonyOS 3.1 Beta

解决措施

  • 通过[@ohos](/user/ohos).bundle.bundleManager模块中的bundleManager查询bundleInfo

    bundleInfo中包含App版本号、版本名信息。

    import bundleManager from '[@ohos](/user/ohos).bundle.bundleManager';
    ...
    bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).then((bundleInfo) => {
      let versionName = bundleInfo.versionName; // 应用版本名
      let versionNo = bundleInfo.versionCode; // 应用版本号
    }).catch((error) => {
      console.error("get bundleInfo failed,error is " + error)
    })
    
  • 在模块[@ohos](/user/ohos).app.ability.Configuration中获取screenDensity,其中包含屏幕分辨率信息。

    import common from '[@ohos](/user/ohos).app.ability.common';
    ...
    let context = getContext(this) as common.UIAbilityContext;
    let screenDensity = context.config.screenDensity;
    

能否在本应用中获取到其他应用的HAP包信息

适用于:HarmonyOS 3.1 Beta API 9

问题现象

如何查询系统内其他应用的信息

解决措施

查询系统内其他应用信息的API暂时只提供给系统应用使用,具体使用方法:

  • 查询系统内指定应用信息需要获取normal级权限ohos.permission.GET_BUNDLE_INFO,使用接口bundleManager.getApplicationInfo()
  • 查询系统内所有应用信息需要获取system_basic级权限ohos.permission.GET_BUNDLE_INFO_PRIVILEGED,使用接口bundleManager.getAllApplicationInfo()

参考链接

[@ohos.bundle.bundleManager (bundleManager模块)](https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/js-apis-bundlemanager-0000001506958104-V3)

如何查询进程的pid

适用于: HarmonyOS 3.1 Beta API 9

问题现象

如何查询进程的pid,类似linux的命令pidof。

解决措施

可以通过接口[@ohos](/user/ohos).process来获取。

import process from '[@ohos](/user/ohos).process'
private pid = process.pid;

参考链接

[@ohos.process (获取进程相关的信息)](https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-process-0000001333321101)

如何让最大化按钮不可用

适用于: HarmonyOS 3.1 Beta API 9

问题现象

如何让PC应用中的最大化按钮不可用。

解决措施

可以通过supportWindowModes字段去指定是否显示。

  • full_screen表示支持全屏显示
  • split表示支持分屏显示
  • floating表示支持窗口化显示

代码示例

"abilities": [
  {
    "name": "EntryAbility",
    "srcEntry": "./ets/entryability/EntryAbility.ts",
    "description": "$string:EntryAbility_desc",
    "icon": "$media:icon",
    "label": "$string:EntryAbility_label",
    "startWindowIcon": "$media:icon",
    "startWindowBackground": "$color:start_window_background",
    "exported": true,
    "supportWindowMode": ["split", "floating"],
    "skills": [
      {
        "entities": [
          "entity.system.home"
        ],
        "actions": [
          "action.system.home"
        ]
      }
    ]
  }
]

参考链接

supportWindowModes参考文档


更多关于HarmonyOS鸿蒙Next包管理常见开发问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

请问下,用鸿蒙4.0.0的系统版本,api9的stage模型 demo为何工程中获取的进程号,和cmd查看的进程号不一样,且tid也不一样? 且工程中获取的进程号和线程号一样,和ide控制台里面的进程号也对不上,27886不是才是进程号吗?

请问下,用鸿蒙4.0.0的系统版本,api9的stage模型 demo为何工程中获取的进程号,

和cmd查看的进程号不一样,且tid也不一样? 且工程中获取的进程号和线程号一样,

和ide控制台里面的进程号也对不上

控制台中有显示进程号3739,但是打印的pid确是30177(且打印的进程号和线程号一样)

cmd中查询到的这个demo的进程是有3739的,但是有两个这个demo的进程,另外cmd中3739的进程根本没有30177的线程号

这个api是不是有问题,上面的现象是什么情况?

搜狗截图20231029225527.png

更多关于HarmonyOS鸿蒙Next包管理常见开发问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next开发中,包管理常见问题包括:

  1. 依赖冲突:多个模块依赖不同版本的同一库,导致冲突。解决方法是使用exclude排除冲突依赖,或统一版本。

  2. 包未找到:依赖包未正确安装或路径错误。检查build.gradle配置,确保依赖包名称和版本正确。

  3. 版本不兼容:依赖包版本与系统或SDK不兼容。查阅官方文档,使用兼容版本。

  4. 包缓存问题:本地缓存导致更新未生效。清除缓存(./gradlew cleanBuildCache)后重新构建。

  5. 网络问题:下载依赖包时网络不稳定。检查网络连接,或使用镜像源加速下载。

  6. 签名问题:包签名不一致导致安装失败。确保所有模块使用相同签名配置。

回到顶部