修复鸿蒙一个导致安装Hap包失败的问题

2024-03-17 07:59

本文主要是介绍修复鸿蒙一个导致安装Hap包失败的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、该问题是怎么引起的?

昨天创建了一个带下划线的 Project Name:smart_test 的工程名称,因为工程名称会随之转为:

Package Name:com.example.smart_test 的package(包)

然后在Hi3516DV300 开发板中使用 :

./bm install -p smart_test.hap

无法安装该 smart_test.hap 包,报如下错误:

resultMessage is ERR_APPEXECFWK_INSTALL_FAILED_PARSE_INVALID_BUNDLENAME

二、原因(目的、解决的问题等)

因为bundleName在进行匹配的时候没有进行下划线匹配。

下划线的重要性!!!!

因为在DevEco Studio创建命名规则 规定可以使用下划线,所以下划线的判断是很有必要且重要的!!!

目的是解决该问题,并使下划线的名称的Hap包也可以安装到系统中。

三、做了什么

1、加入调试信息DEBUG,跟踪错误找到源代码中

foundation/appexecfwk/services/bundlemgr_lite/src/bundle_parser.cpp 文件中 BundleParser::ParseJsonInfo() 

函数的第326行:

CHECK_IS_TRUE(CheckBundleNameIsValid(bundleProfile.bundleName),

ERR_APPEXECFWK_INSTALL_FAILED_PARSE_INVALID_BUNDLENAME);

中判断出错。

2、继续进入BundleParser::CheckBundleNameIsValid(const char *bundleName)函数中加入相关调试信息

运行结果如下:

3、说明其中

regex_match(bundlename, re) 

有问题,其中

bundlename为com.example.smart_test,

而其中 re 为 pattern 正则表达式:

{ "([a-zA-Z0-9]+\\.)+[a-zA-Z0-9]+" }

的相关匹配。

4、然后对正则表达式分析,发现后面正则中的第二部分未进行下划线(_)的判断。

四、变更了什么

此次变更仅涉及到了

foundation/appexecfwk/services/bundlemgr_lite/src/bundle_parser.cpp 

文件中第82行代码。

  • 变更前:

std::string pattern { "([a-zA-Z0-9]+\\.)+[a-zA-Z0-9]+" };
  • 变更后:

std::string pattern { "([a-zA-Z0-9]+\\.)+[a-zA-Z0-9_]+" };

五、改动影响的功能

从DevEco Studio生成的Hap包不受制包名称的限制,均可正常安装到机器中。

测试结果:

六、解决的问题

修复了因bundleName无法识别下划线(_)导致安装Hap包失败。


关注本号,及时获取最新鸿蒙技术资讯。

 

这篇关于修复鸿蒙一个导致安装Hap包失败的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/818321

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模