一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

面向HarmonyOS的分布式应用开发、调试方法及辅助工具

2022-05-18 12:29:28 来源:中国专利 TAG:

面向harmonyos的分布式应用开发、调试方法及辅助工具
技术领域
1.本发明涉及harmonyos分布式应用开发领域,提出一种面向harmonyos的分布式应用开发、调试方法及辅助工具。


背景技术:

2.harmonyos是一款面向全场景的国产分布式操作系统,其所具备的分布式能力是与 android系统决定性的不同点与核心竞争力,据报道日前harmonyos的装机量已突破9000 万,harmonyos应用开发者已达120万,harmonyos具备广泛的应用前景。harmonyos内置分布式软总线技术,对华为官方开发的系统及分布式能力(超级终端、分布式投屏等) 提供了良好的技术支撑。
3.然而harmonyos的分布式能力对其应用生态的支持能力不足,仅京东、优酷等与华为密切合作的厂商推出了分布式应用demo,其原因在于harmonyos应用开发流程存在三个困难:其一,harmonyos的分布式能力带来了更为复杂的权限系统,除独立的分布式权限以外,分布式能力所需权限与网络、数据等权限有关。一旦权限缺失,程序会陷入无报错信息的不可执行状态,而权限过多会导致设备安全隐患。其二,harmonyos原生的扫描分布式设备的能力中,每个设备被一个24位的十六进制数表征,且由于网络、信号情况多变,每次扫描的设备数量、顺序各不相同,当存在多个设备时很难分辨。其三,由于分布式能力函数调用需要深入非面向应用开发者的harmonyos底层系统函数库,对于异常问题很多时候只能上报errorcode而无法得知异常信息。
4.应用生态作为操作系统生态的重要一环理应被重视,因此亟需一种面向harmonyos的分布式应用开发的辅助工具,解决上述问题,减少harmonyos分布式应用的开发难度,提升harmonyos应用开发者的体验,让更多拥有创意的开发者加入harmonyos开发的队伍中,促进harmonyos应用生态发展。


技术实现要素:

5.为解决上述背景技术中存在的问题,本发明针对harmonyos的特性,提出一种面向 harmonyos的分布式应用开发、调试方法及辅助工具h-dadu(harmonyos-distributedapplication development utils),用以解决harmonyos分布式应用开发机制复杂、学习成本高、debug困难等问题,使分布式应用开发者聚焦于业务逻辑的开发。
6.本发明的技术内容包括:
7.一种面向harmonyos的分布式应用开发方法,其步骤包括:
8.配置harmonyos应用开发环境,在deveco中新建工程;
9.利用分布式设备的数据文件,构建多端共享的分布式设备数据库,以使分布式应用对所有分布式设备的识别统一;
10.扫描所述工程的所有源码,以将hamronyos函数与内置的函数-权限数据库进行匹配,得到正常执行所述工程所需的最小权限集合;
11.将所述最小权限集合注入所述工程的config.json文件,并在所述工程的app入口初始化回调函数内添加权限申请代码;
12.基于config.json文件与初始化回调函数对所述分布式应用进行开发。
13.进一步地,通过以下步骤动态构建所述分布式设备数据库:
14.1)调用harmonyos函数getdevicelist(),获取当前分布式设备的十六进制数列表;
15.2)将每个十六进制数作为设备key在当前分布式设备数据库中匹配:
16.若当前分布式设备数据库中已存在该设备key,则跳过;
17.若当前分布式设备数据库中不存在该设备key,则把字符串格式的设备名称作为设备value,缺省情况下该设备value为l 1,并将设备value、设备key存入当前分布式设备数据库,其中l为当前分布式设备数据库列表长度。
18.进一步地,静态构建所述分布式设备数据库的方法包括:通过加载分布式设备的数据文件进行构建。
19.进一步地,将所述分布式设备数据库以文件的形式持久化到一存储设备。
20.进一步地,所述函数-权限数据库的属性包括:包名、函数名和权限名。
21.进一步地,通过以下步骤得到最小权限集合:
22.1)对每一文件pi,通过正则匹配import/include信息得到包名集合bi;
23.2)对每一文件pi,通过全文正则匹配法匹配函数名,获得函数名集合hi;
24.3)依据包名集合bi与函数名集合hi进行检索,得到该文件pi的权限名qi;
25.4)对各权限名qi整合并去重,得到最小权限集合。
26.一种面向harmonyos的分布式应用调试方法,其步骤包括:
27.针对通过上述方法开发的分布式应用,通过devecostudio的导出运行日志文件;
28.读取运行日志文件为内存数据;
29.基于正则脚本以errorcode-异常信息数据库中每个异常信息key作为关键字匹配所述内存数据;
30.在每一匹配项后方以字符串的形式添加异常value,得到新日志文件;
31.根据所述新日志文件,完成所述分布式应用的调试。
32.进一步地,通过以下步骤构建所述errorcode-异常信息数据库:
33.1)分析openharmony分布式能力的代码仓,捕捉分布式能力调用异常的特征;
34.2)建立errorcode与实际异常信息的关联;
35.3)将errorcode作为异常key,并异常信息作为异常value,以构建errorcode-异常信息数据库。
36.进一步地,所述特征包括:errorcode列表与注释。
37.一种面向harmonyos的分布式应用开发的辅助工具,包括:
38.分布式权限注入模块,用以扫描所述工程的所有源码,以将hamronyos函数与内置的函数-权限数据库进行匹配,得到正常执行所述工程所需的最小权限集合;将所述最小权限集合注入所述工程的config.json文件,并在所述工程的app入口初始化回调函数内添加权限申请代码;
39.分布式设备管理模块,用以利用分布式设备的数据文件,构建多端共享的分布式
设备数据库,以使分布式应用对所有分布式设备的识别统一;
40.分布式异常解析模块,用以读取运行日志文件为内存数据;基于正则脚本以 errorcode-异常信息数据库中每个异常信息key作为关键字匹配所述内存数据,其中所述 errorcode-异常信息数据库基于分布式能力调用异常的特征构建;在每一匹配项后方以字符串的形式添加异常value,得到新日志文件。
41.与现有技术相比,本发明具有以下优势:
42.1、通过分析当前工程的函数调用,自动注入所需权限的最小集合,保障程序正常运行的同时提高安全性,开发者不必烦恼权限问题;
43.2、通过构建分布式设备数据库,为开发者提供一个可读的、稳定的设备信息列表,同时数据库支持持久化与多设备同步;
44.3、通过分析openharmony源码分布式能力调用异常的特征,构建errorcode与异常信息的关联,优化日志文件,便于开发者快速定位问题。
附图说明
45.图1是一种面向harmonyos的分布式应用开发的辅助工具的原理图。
46.图2是一种面向harmonyos的分布式应用开发的辅助工具的功能与使用方法示意图。
具体实施方式
47.下面结合附图,通过实施例对本发明作进一步的说明,但不以任何方式限制本发明的范围。
48.本发明的辅助工具,其原理如图1所示。在形式上采用第三方组件库的形式开发。主要作用是提供一套函数库和可执行程序,面向harmonyos分布式应用开发,解决开发流程中的复杂问题。功能层采用模块化设计,内含分布式权限注入模块、分布式设备管理模块、分布式异常解析模块。模块之间在代码层面上完全解耦,方便功能增添与修改。具有良好的泛用性和可扩展性。
49.1、分布式权限注入模块提供分布式权限扫描和注入的能力,并提供相应的可执行程序,开发者只需运行可执行程序即可完成当前工程的权限注入。此程序具有三个功能:
50.1.1权限扫描。通过静态扫描当前工程所有源码,将所有使用的hamronyos函数,与内置的“函数-权限”数据库进行匹配,得到当前工程正常执行所需的最小权限集合。
[0051]“函数-权限”数据库构建方法如下:
[0052]
数据库属于关系型数据库,其中需要属性有“包名”、“函数名”、“权限名”,通过包名和函数名可以唯一确定任意harmonyos函数,权限名则代表当前函数执行所需的权限。
[0053]
此数据库以文件形式静态存在于分布式权限注入模块中。
[0054]“函数-权限”数据库使用方法如下:
[0055]
分布式权限注入模块通过扫描当前工程目录下所有的源码文件,对于每一个文件:
[0056]

通过正则匹配import/include信息得到包名集合。
[0057]

通过全文正则匹配法匹配函数名,获得函数名集合。
[0058]

通过包名集合和函数名集合检索对应的权限名。
[0059]
将所有权限名整合并去重,得到工程所需的最小权限集合。
[0060]
1.2权限注入。通过正则匹配方法工程的config.json文件的正确位置添加“reqpermissons”字段,并将所需的最小权限集合以字符串的形式注入这个字段中;
[0061]
1.3权限申请。使用正则匹配的方法在当前工程的app入口初始化回调函数(默认为 entry-》src-》main-》java-》com.example.myapplication-》myapplication-》oninitialize())内添加权限申请代码块。
[0062]
2、设备探知功能模块提供一整套用于管理分布式设备信息的函数,其具体工作流程如下:
[0063]
2.1分布式设备数据库。分布式设备数据库,即表征分布式设备的key-value列表,以十六进制数为key,字符串格式的设备名称为value。
[0064]
2.2分布式设备数据库自动构建。分布式设备数据库由两种构建方法,动态构建与静态构建。
[0065]
动态构建,在程序运行时通过调用harmonyos函数getdevicelist(),获取十六进制数列表,并将每个十六进制数作为key在分布式设备数据库中匹配:
[0066]

若数据库中已存在此key,则跳过这一项。
[0067]

若数据库中不存在此key,则构建新的value“设备x”,其中x=l 1,l为当前数据库列表长度,最后将这些key、value存入数据库。
[0068]
静态构建,通过加载分布式设备数据文件,构建分布式设备数据库。
[0069]
动态构建与静态构建可以互相结合,例如首先通过文件静态构建得到数据库实例,然后使用动态构建的方法向数据库中添加新识别到的设备。
[0070]
2.3分布式设备数据库手动修改。分布式设备数据库支持开发者手动修改value值,即自定义设备名称字符串。
[0071]
2.4分布式设备数据库持久化。分布式设备数据库支持以文件的形式持久化到设备存储设备上,视为分布式设备数据文件。
[0072]
2.5分布式设备数据库多设备同步。支持以字节流或文件的形式向其它设备发送分布式设备数据和文件,实现在多端共享同一份设备列表,即设备信息同步。
[0073]
3、异常信息处理模块提供一套将errorcode解析为异常信息的代码,并提供相应的可执行文件。
[0074]
3.1建立“errorcode-异常信息”数据库。基于openharmony系统源码分析构建。基于分析openharmony分布式能力相关代码仓(如distributedschedule_dms_fwk、 communication_dsoftbus等),从中捕捉分布式能力调用异常的特征,特征包括但不限于 errorcode列表与注释,建立errorcode与实际异常信息的关联,将errorcode作为key,异常信息作为value构建数据库。
[0075]
3.2基于日志数据的errorcode解析。异常信息处理功能模块通过读取日志文件为内存数据,并基于正则脚本以“errorcode-异常信息”数据库中每个key作为关键字匹配日志数据,在每一个匹配项后方以字符串的形式添加相应的value,完成添加后将新日志数据保存为新的日志文件。
[0076]
本发明一种面向harmonyos的分布式应用开发的辅助工具的总体流程如图2所示,
开发者可以自由选择其中一个或多个模块进行使用。这里仅举例一种分布式应用控制实现方案:开发分布式应用a1、a2、a3…an
,分别安装在设备d1、d2、d3…dn
上,其中任意ai可以拉起aj(i,j∈{1,2,3

n})。
[0077]
在使用本辅助工具的情况下,相应的开发流程如下:
[0078]
准备阶段:
[0079]
1)配置harmonyos应用开发环境。包括配置deveco studio、配置harmonyos sdk、配置jdk。
[0080]
2)在deveco中新建空白工程,并将本辅助工具至于工程根目录下。
[0081]
开发阶段:
[0082]
3)开发应用a1、a2、a3…an
的业务逻辑。由于引入了设备探知功能模块,开发者通过设备名称即可分辨相应设备;如果使用分布式设备数据库多设备同步功能,可以实现设备列表同步,即a1、a2、a3…an
对所有分布式设备的识别是统一的;使用分布式设备数据库持久化功能,会在设备非易失性存储介质中成相应文件,通过加载文件的方式静态构建,设备列表则不随重新运行或网络条件发生变化。
[0083]
4)调用分布式权限注入模块的可执行程序,基于每一个app的业务逻辑在config.json 文件和app初始化函数中注入权限列表和权限申请代码。
[0084]
调试阶段:
[0085]
5)在设备d1、d2、d3…dn
上安装并运行a1、a2、a3…an
,通过devecostudio的导出运行日志文件,将日志文件拖动到errorcode解析程序上即可解析,解析完成后会生成日志副本txt文件,内含分布式异常信息,开发者通过阅读异常信息定位问题并进行解决。
[0086]
在不使用本辅助工具的情况下,相应的开发流程如下:
[0087]
准备阶段:
[0088]
1)配置harmonyos应用开发环境。包括配置deveco studio、配置harmonyos sdk、配置jdk。
[0089]
2)在deveco中新建空白工程。
[0090]
开发阶段:
[0091]
3)开发应用a1、a2、a3…an
的业务逻辑。对于任意ai、aj(i≠j,i,j={1,2,3

n}),识别到的设备数量、顺序是不同的;且对于任意ai的每一次运行,其识别到的设备数量、顺序也可能是不同的;因此表征设备的有效信息只有十六进制编码,开发者只能通过自行记录十六进制编码来分辨不同设备。
[0092]
4)开发者通过自行记录a1、a2、a3…an
所使用的全部函数,并在华为开发者官方网站的api文档检索对应函数说明,方能查询到当前函数需要的权限。完成全部权限查询后,自行在config.json内逐一声明相应权限,在app的初始化函数(或其它合适位置)中写入申请权限代码。
[0093]
调试阶段:
[0094]
5)在d1、d2、d3…dn
上安装并调试a1、a2、a3…an
,通过devecostudio的导出运行日志文件,开发者需自行分析日志文件,日志中任何errorcode只是一串数字,无法提供有效信息,只能忽略,难以定位问题。
[0095]
基于同一发明构思,本发明的另一实施例提供一种电子装置(计算机、服务器、智
能手机等),其包括存储器和处理器,所述存储器存储计算机程序,所述计算机程序被配置为由所述处理器执行,所述计算机程序包括用于执行本发明方法中各步骤的指令。
[0096]
基于同一发明构思,本发明的另一实施例提供一种计算机可读存储介质(如 rom/ram、磁盘、光盘),所述计算机可读存储介质存储计算机程序,所述计算机程序被计算机执行时,实现本发明方法的各个步骤。
[0097]
本发明采用第三方组件的形式开发,文中提及的“模块”(例:设备探知模块)实质上是一系列代码构成的集合,只有当代码编译成为可执行文件时,描述中本组件的功能才能够发挥作用。
[0098]
以上公开的本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的普通技术人员可以理解,在不脱离本发明的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书的实施例所公开的内容,本发明的保护范围以权利要求书界定的范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献