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"
]
}
]
}
]
参考链接
更多关于HarmonyOS鸿蒙Next包管理常见开发问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
请问下,用鸿蒙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是不是有问题,上面的现象是什么情况?
更多关于HarmonyOS鸿蒙Next包管理常见开发问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next开发中,包管理常见问题包括:
-
依赖冲突:多个模块依赖不同版本的同一库,导致冲突。解决方法是使用
exclude
排除冲突依赖,或统一版本。 -
包未找到:依赖包未正确安装或路径错误。检查
build.gradle
配置,确保依赖包名称和版本正确。 -
版本不兼容:依赖包版本与系统或SDK不兼容。查阅官方文档,使用兼容版本。
-
包缓存问题:本地缓存导致更新未生效。清除缓存(
./gradlew cleanBuildCache
)后重新构建。 -
网络问题:下载依赖包时网络不稳定。检查网络连接,或使用镜像源加速下载。
-
签名问题:包签名不一致导致安装失败。确保所有模块使用相同签名配置。