CN117785281A - 一种基于操作系统移植nfc功能的方法 - Google Patents
一种基于操作系统移植nfc功能的方法 Download PDFInfo
- Publication number
- CN117785281A CN117785281A CN202410219971.9A CN202410219971A CN117785281A CN 117785281 A CN117785281 A CN 117785281A CN 202410219971 A CN202410219971 A CN 202410219971A CN 117785281 A CN117785281 A CN 117785281A
- Authority
- CN
- China
- Prior art keywords
- nfc
- operating system
- data
- nfc function
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 230000006870 function Effects 0.000 claims abstract description 218
- 238000004891 communication Methods 0.000 claims description 106
- 238000004590 computer program Methods 0.000 claims description 18
- 230000002159 abnormal effect Effects 0.000 claims description 10
- 238000013508 migration Methods 0.000 claims description 9
- 230000005012 migration Effects 0.000 claims description 9
- 230000004048 modification Effects 0.000 claims description 7
- 238000012986 modification Methods 0.000 claims description 7
- 238000011161 development Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 10
- 230000003068 static effect Effects 0.000 description 7
- 230000006978 adaptation Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000013509 system migration Methods 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请涉及一种基于操作系统移植NFC功能的方法,涉及NFC开发技术领域。方法包括:获取第一设备中NFC功能的第一NFC数据,将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统,进而获取第二设备中NFC功能的第二NFC数据,根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。采用本方法可以将第一操作系统的NFC功能移植到第二操作系统,并根据第一操作系统和第二操作系统分别对应的NFC数据,对所移植的NFC功能进行适应配置,无需为第二操作系统单独重新开发一套NFC功能,有效提升了在第二操作系统上部署NFC功能的效率。
Description
技术领域
本申请涉及NFC开发技术领域,特别是涉及一种基于操作系统移植NFC功能的方法。
背景技术
NFC(Near Field Communication,近场通信)是终端设备的成熟功能,使用NFC的终端设备可以在彼此靠近的情况下进行数据交换,比较常规的NFC功能有NFC标签读写和NFC模拟卡等。
目前,基于OpenHarmony系统的终端设备,由于OpenHarmony软件和生态的欠缺,还不能很好地支持NFC功能。如果为OpenHarmony系统重新开发一套支持NFC功能的软件,那么需要在开发过程中针对NFC模组的使用问题,咨询各模组厂家,这极大影响了在OpenHarmony系统上部署NFC功能的效率。
发明内容
基于此,有必要针对上述技术问题,提供一种在不同系统的终端设备上快速部署NFC功能的基于操作系统移植NFC功能的方法。
第一方面,本申请提供了一种基于操作系统移植NFC功能的方法,该方法包括:
获取第一设备中NFC功能的第一NFC数据;
将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统;
获取第二设备中NFC功能的第二NFC数据;
根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。
在其中一个实施例中,将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统,包括:
根据第一设备的第一操作系统下NFC功能的组件代码,生成第二设备的第二操作系统下NFC功能的组件代码;
将第二操作系统下NFC功能的组件代码添加到第二操作系统,并对添加到第二操作系统的NFC功能的组件代码进行编译。
在其中一个实施例中,对添加到第二操作系统的NFC功能的组件代码进行编译,包括:
将添加到第二操作系统的NFC功能的组件代码所依赖的公共组件,更换为第二操作系统的公共组件;
采用第二操作系统的公共组件,对添加到第二操作系统的NFC功能的组件代码进行编译。
在其中一个实施例中,NFC数据包括通信数据和系统日志;
获取第一设备中近场通信NFC功能的第一NFC数据,包括:
在第一设备开启NFC功能的情况下,和/或,在第一设备使用NFC功能的情况下,获取第一设备中NFC功能的第一通信数据和第一系统日志。
在其中一个实施例中,获取第二设备中NFC功能的第二NFC数据,包括:
在第二设备开启NFC功能的情况下,和/或,在第二设备使用NFC功能的情况下,获取第二设备中NFC功能的第二通信数据和第二系统日志。
在其中一个实施例中,根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改,包括:
将第一通信数据与第二通信数据进行比较;
根据比较结果、第一系统日志和第二系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
在其中一个实施例中,根据比较结果、第一系统日志和第二系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改,包括:
若比较结果为第一通信数据与第二通信数据之间存在差异,则确定差异通信数据对应的异常消息流程;
从第一系统日志和第二系统日志中,确定异常消息流程对应的差异系统日志,并根据差异系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
第二方面,本申请还提供了一种基于操作系统移植NFC功能的装置,该装置包括:
第一获取模块,用于获取第一设备中NFC功能的第一NFC数据;
代码移植模块,用于将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统;
第二获取模块,用于获取第二设备中NFC功能的第二NFC数据;
代码修改模块,用于根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。
第三方面,本申请还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述第一方面的方法的步骤。
第四方面,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面的方法的步骤。
第五方面,本申请还提供了一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述第一方面的方法的步骤。
上述一种基于操作系统移植NFC功能的方法,获取第一设备中NFC功能的第一NFC数据,将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统,进而获取第二设备中NFC功能的第二NFC数据,根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。本申请将第一操作系统的NFC功能组件代码移植到第二操作系统,并根据第一操作系统和第二操作系统分别对应的NFC数据,对所移植的NFC功能组件代码进行适应配置,无需为第二操作系统单独重新开发一套NFC功能,有效提升了在第二操作系统上部署NFC功能的效率。
附图说明
图1为一个实施例中一种基于操作系统移植NFC功能的方法的应用场景图;
图2为一个实施例中一种基于操作系统移植NFC功能的方法的流程示意图;
图3为一个实施例中新的静态模型的框架示意图;
图4为一个实施例中移植组件代码的流程示意图;
图5为一个实施例中获取第一通信数据和第一系统日志的流程示意图;
图6为一个实施例中修改组件代码的流程示意图;
图7为另一个实施例中一种基于操作系统移植NFC功能的方法的流程示意图;
图8为又一个实施例中一种基于操作系统移植NFC功能的方法的流程示意图;
图9为一个实施例中一种基于操作系统移植NFC功能的装置的结构框图;
图10为另一个实施例中一种基于操作系统移植NFC功能的装置的结构框图;
图11为又一个实施例中一种基于操作系统移植NFC功能的装置的结构框图;
图12为一个实施例中实施一种基于操作系统移植NFC功能的方法的计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的一种基于操作系统移植NFC功能的方法,可以应用于如图1所示的应用环境中。其中,第一设备101和第二设备102均为移动终端设备,如智能手机、智能手表、智能手环或平板电脑等,第一设备101和第二设备102可以是同一部设备,也可以是不同的设备。当第一设备101和第二设备102是同一部设备时,将该设备与控制计算机103有线或无线连接;当第一设备101和第二设备102是不同的设备时,将两部设备均与控制计算机103有线或无线连接。进一步的,通过控制计算机103获取第一设备101中NFC功能的第一NFC数据;将NFC功能的组件代码,从第一设备101的第一操作系统移植到第二设备102的第二操作系统;获取第二设备102中NFC功能的第二NFC数据;根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。
可选的,控制计算机103可以通过网络与服务器104进行通信,数据存储系统可以存储控制计算机103上传至服务器104,以及后续需要从服务器104获取的数据,如第一设备101中NFC功能的第一NFC数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。
控制计算机103可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。
在一个实施例中,如图2所示,提供了一种基于操作系统移植NFC功能的方法,包括以下步骤:
S201,获取第一设备中近场通信NFC功能的第一NFC数据。
其中,第一设备为移动终端设备,如智能手机、智能手表、智能手环或平板电脑等,第一设备安装有第一操作系统,其中,第一操作系统为当前具有NFC功能的操作系统。
可选的,在第一设备的操作系统不具有NFC功能的情况下,在第一设备上安装第一操作系统,以使第一设备可以开启和/或使用NFC功能。
可选的,第一操作系统为Android(安卓)系统。
在第一设备开启和/或使用NFC功能的情况下,实时获取第一设备的第一NFC数据,或者,直接获取预存储的第一设备的第一NFC数据,其中,第一NFC数据为NFC功能的相关数据,如通信数据和系统日志,即,第一NFC数据为第一操作系统的NFC功能正常运行时的相关数据。
S202,将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统。
其中,第二设备也为移动终端设备,第二设备安装有第二操作系统,第二操作系统为当前不具有NFC功能的操作系统。
可选的,第二操作系统为OpenHarmony(开放鸿蒙)系统,OpenHarmony系统是一种开源分布式操作系统。
需要说明的是,第一设备和第二设备可以是同一部设备,也可以是不同的设备,当第一设备和第二设备是同一部设备时,在该设备上安装第一操作系统和第二操作系统,其中,第一操作系统和第二操作系统不必然是同时安装的。
将第一操作系统的NFC功能的组件代码移植到第二操作系统,以形成第二操作系统的NFC功能的软硬件框架,例如,将Android系统的NFC功能的组件代码移植到OpenHarmony系统,以形成如图3所示的新的静态模型,该静态模型描述了OpenHarmony系统下NFC组件的软硬件框架。
具体的,基于软件分层思想,将Android系统的NFC框架中的6个子层整体迁移至OpenHarmony系统的系统服务器层、HDI(Hardware Device Interfaces,硬件设备接口)层和驱动层,并在层与层之间进行适配处理,如解决编译错误,修改依赖库,以及打通层间通信等。
可选的,6个子层即为6个组件,分别为Adaptation(适应)组件、GKI(GenericKernel Image,通用内核映像)组件、nfa组件、nfc组件、HAL impl(Hardware AbstractLayer implement,硬件抽象层实现)组件和I2C driver(Inter-Integrated Circuitdriver,集成电路总线驱动)组件,其中,Adaptation组件、GKI组件、nfa组件和nfc组件的组件代码迁移至系统服务层,HAL impl组件的组件代码迁移至HDI层,I2C driver组件的组件代码迁移至内核的驱动层。
相应的,静态模型还包括OpenHarmony系统下应用层的应用程序,系统服务层的nfc SA(System Ability,系统能力)服务,HDI层的nfc HDI,以及NFC controller(NFC模组),主控芯片device host与NFC controller之间的接口为NCI接口(NFC ControllerInterface,NFC控制器接口),物理上使用I2C总线(Inter-Integrated Circui,集成电路总线)连接。
S203,获取第二设备中NFC功能的第二NFC数据。
可以理解的是,将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统之后,原本不具有NFC功能的第二操作系统可以运行NFC功能,即,第二设备可以开启和/或使用NFC功能。
在第二设备开启和/或使用NFC功能的情况下,实时获取第二设备的第二NFC数据,其中,第二NFC数据为NFC功能的相关数据,如通信数据和系统日志,即,第二NFC数据为第二操作系统的NFC功能运行时的相关数据。
可选的,采用相同的方式获取第一NFC数据和第二NFC数据,以使二者易于比较。
S204,根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。
对移植到第二操作系统的NFC功能进行调测,例如,比较第一NFC数据和第二NFC数据,以确定第一NFC数据和第二NFC数据之间的差异,进而基于二者之间的差异对移植到第二操作系统的NFC功能的组件代码进行修改,以使第二操作系统的NFC功能可以交付使用。
可选的,对移植到第二操作系统的NFC功能的I2C驱动程序、日志输出函数、NCI通信码流的输出代码等进行调测,以及对NFC功能的NFC开启流程和NFC刷卡流程进行调测。
可选的,比较第一NFC数据和第二NFC数据,以确定可能存在问题的消息流程,以及具体的可能存在问题的消息处理代码,进而对代码进行修改。
上述方案,获取第一设备中NFC功能的第一NFC数据,将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统,进而获取第二设备中NFC功能的第二NFC数据,根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。本实施例将第一操作系统的NFC功能移植到第二操作系统,并根据第一操作系统和第二操作系统分别对应的NFC数据,对所移植的NFC功能进行适应配置,无需为第二操作系统单独重新开发一套NFC功能,也就无需针对新的NFC模组的使用问题咨询模组厂家,有效提升了在第二操作系统上部署NFC功能的效率。
为了确保第一操作系统的NFC功能的组件代码可以在第二操作系统正常运行,在上述实施例的基础上,在一个实施例中,如图4所示,上述S202包括:
S401,根据第一设备的第一操作系统下NFC功能的组件代码,生成第二设备的第二操作系统下NFC功能的组件代码。
针对第一操作系统下NFC功能的每一组件,均根据该组件的组件代码,编写对应的第二操作系统下NFC功能的组件代码,如build.gn文件,其中,build.gn文件包括统一包含的头ohos.gni、头文件路径和源文件路径,其中,ohos.gni用于定义编译所需的基本环境。
例如,根据Android系统下的(*.bp)文件中的内容,如头文件路径和源文件路径,生成OpenHarmony系统下的头文件路径和源文件路径。可选的,直接将Android系统下的头文件路径和源文件路径复制到对应的build.gn文件中。
可选的,build.gn文件还包括预先定义的宏标识符,宏标识符在c_flag中定义,可以控制程序参与编译的功能。根据Android系统下的编译文件中的内容,生成OpenHarmony系统下的宏标识符。
可选的,build.gn文件还包括依赖的目标和生成文件的位置,在编译过程的链接阶段会搜索所有依赖的目标,并从所有依赖的目标中确定所有定义的具体实现,生成文件的位置用于确定生成库文件在设备中的存储位置。根据Android系统下的依赖的目标和生成文件的位置,生成OpenHarmony系统下的依赖的目标和生成文件的位置。
可选的,Adaptation组件是一个提供大量接口供上层NFC服务调用的适配层。根据Android系统中调用到的接口,生成OpenHarmony系统中调用到的接口,而对于其中OpenHarmony系统中未调用到的接口,则不进行编译和适配处理,从而简化Adaptation组件的组件代码,降低移植工作量。
S402,将第二操作系统下NFC功能的组件代码添加到第二操作系统,并对添加到第二操作系统的NFC功能的组件代码进行编译。
将新生成的各组件的组件代码添加到第二操作系统,与第二操作系统的NFC框架整合,进一步的,对添加到第二操作系统的各组件的组件代码进行编译。
例如,基于图3所示的静态模型,将OpenHarmony系统下NFC功能的组件代码,分别添加到OpenHarmony系统的对应层,并通过OpenHarmony系统的编译工具对添加的组件代码进行编译。
可选的,将添加到第二操作系统的NFC功能的组件代码所依赖的公共组件,更换为第二操作系统的公共组件,采用第二操作系统的公共组件,对添加到第二操作系统的NFC功能的组件代码进行编译。
可以理解的是,Android系统的NFC功能的组件代码的编译依赖于Android的公共组件,需要将添加到OpenHarmony系统的NFC功能的组件代码所依赖的Android的公共组件,替换为OpenHarmony系统的公共组件。例如,将日志输出的公共组件替换为OpenHarmony系统的hilog组件,从而对添加到OpenHarmony系统的NFC功能的组件代码进行编译。
进一步的,在编译通过的情况下,移植到第二操作系统的组件代码已经可以作为组件被引用,还需要将这些组件添加到编译目标中。例如,在foundation的nfc子目录下的bundle.json中添加编译目标。
可选的,在OpenHarmony系统添加SELinux(Security-Enhanced Linux,安全增强型Linux)访问权限,由于OpenHarmony系统存在安全组件SELinux,nfc服务在读写文件时存在调用库函数的限制,需要在SELinux中添加相关规则,如使用USB(Universal SerialBus,通用串行总线)连接设备,控制台输入hdc shell进入设备控制台。此外,通过过滤内核日志中的avc关键字,确定被SELinux阻止的访问,以及根据日志添加SELinux的白名单规则。
上述实施例提供了将NFC功能的组件代码从第一操作系统移植到第二操作系统的具体方式,可以解决组件代码移植过程中的兼容性问题,使得第二操作系统的NFC功能的组件代码可以正常运行,有效提升了在第二操作系统上部署NFC功能的可靠性。
为了确保在第二操作系统上运行NFC功能的可靠性,在上述实施例的基础上,在一个实施例中,可以分别获取第一操作系统对应的第一NFC数据和第二操作系统对应的第二NFC数据,以供后续调测使用。
具体的,NFC数据包括通信数据和系统日志,通信数据可以包括I2C通信数据和NCI通信数据,I2C通信数据即为I2C接口对应的通信数据,用于调测I2C驱动程序,NCI通信数据即为NCI接口对应的通信数据,用于确定NFC功能的消息流程,系统日志可以是NFC-nci运行日志,用于分析NFC功能的具体消息处理代码问题,发现运行错误,NFC-nci运行日志为明文形式。
可选的,采用逻辑分析仪抓取第一NFC数据中的I2C通信数据和/或第二NFC数据中的I2C通信数据,逻辑分析仪是分析数字系统逻辑关系的仪器,利用时钟从设备上采集和显示数字信号。
可选的,采用Android调试桥抓取第一NFC数据中的NCI通信数据和/或第二NFC数据中的NCI通信数据,Android调试桥,即adb,是一种命令行工具,adb命令可用于执行安装、调试等设备操作。例如,执行adb shell dumpsys nfc命令抓取NCI通信数据。
可选的,NCI通信数据使用了zlib压缩,并使用base64算法加密,因此,抓取到NCI通信数据后,需要先对其进行base64解密,进而解压缩得到解码后的NCI通信数据。
可选的,修改Android源代码,执行nfc_debug_enabled = true命令打开nfc调测日志开关,然后编译Android烧录镜像,将镜像烧录到设备中,启动设备,进而使用USB连接线连接设备和调测终端,如PC(Personal Computer,个人计算机),在调测终端上打开命令行程序,输入adb shell以启动adb,进一步的,执行logcat | grep “nfc-nci”命令抓取NFC-nci运行日志。
可选的,上述S201包括在第一设备开启NFC功能的情况下,和/或,在第一设备使用NFC功能的情况下,获取第一设备中NFC功能的第一通信数据和第一系统日志。
相应的,上述S203包括在第二设备开启NFC功能的情况下,和/或,在第二设备使用NFC功能的情况下,获取第二设备中NFC功能的第二通信数据和第二系统日志。
其中,第一通信数据包括第一I2C通信数据和第一NCI通信数据,第二通信数据包括第二I2C通信数据和第二NCI通信数据。
具体的,第一I2C通信数据还包括第一设备开启NFC功能时的第一I2C通信数据“I2C-1-data”和第一设备使用NFC功能时的第一I2C通信数据“I2C-2-data”,第一NCI通信数据还包括第一设备开启NFC功能时的第一NCI通信数据“NCI-1-data”和第一设备使用NFC功能时的第一NCI通信数据“NCI-2-data”,第一系统日志包括第一设备开启NFC功能时的第一系统日志“nfc-nci-log1”和第一设备使用NFC功能时的第一系统日志“nfc-nci-log2”。
相应的,第二I2C通信数据还包括第二设备开启NFC功能时的第二I2C通信数据和第二设备使用NFC功能时的第二I2C通信数据,第二NCI通信数据还包括第二设备开启NFC功能时的第二NCI通信数据和第二设备使用NFC功能时的第二NCI通信数据,第二系统日志包括第二设备开启NFC功能时的第二系统日志和第二设备使用NFC功能时的第二系统日志。
这样,将获取NFC数据的步骤划分为开启NFC功能和使用NFC功能两个阶段,有利于后续更准确定位NFC功能的运行问题。
上述实施例提供了获取NFC数据的具体方式,在准确获取到第一设备和第二设备各自对应的NFC数据的情况下,可以确保后续基于NFC数据进行NFC功能调测的准确性。
在一个实施例中,如图5所示,提供了一种在第一设备开启NFC功能的情况下,和/或,在第一设备使用NFC功能的情况下,获取第一设备中NFC功能的第一通信数据和第一系统日志的可选实施方式。
具体的,在第一设备上安装Android系统,将第一设备与逻辑分析仪相连接,进而将第一设备与adb相连接,并执行adb shell dumpsys nfc命令,通过nfc_debug_enabled =true命令打开nfc调测日志,通过logcat | grep “nfc-nci”命令过滤nfc-nci运行日志。
进一步的,开启NFC功能,抓取I2C通信数据(I2C-1-data)并保存备用,保存adb输出的NFCSnoop日志(NCI-1-data)备用,保存nfc-nci日志(nfc-nci-log1)备用;使用NFC功能,保存adb输出的NFCSnoop日志(NCI-2-data)备用,保存nfc-nci日志(nfc-nci-log2)备用,开发或移植NFCSnoop解码工具,对NCI-1-data进行解码得到NCI-1-decodeData,对NCI-2-data进行解码得到NCI-2-decodeData。
在上述实施例的基础上,在一个实施例中,如图6所示,上述S204包括:
S601,将第一通信数据与第二通信数据进行比较。
例如,将第一设备开启NFC功能时的第一NCI通信数据与第二设备开启NFC功能时的第二NCI通信数据进行比较,以及将第一设备使用NFC功能时的第一NCI通信数据与第二设备使用NFC功能时的第二NCI通信数据进行比较,从第一NCI通信数据和第二NCI通信数据中确定存在差异的NCI通信数据。
可选的,I2C通信数据还包括I2C设备地址,基于I2C设备地址对移植到OpenHarmony系统的NFC功能的I2C驱动程序进行调测;在OpenHarmony系统中替换日志输出函数,以支持NFC相关日志打印。
S602,根据比较结果、第一系统日志和第二系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
具体的,根据比较结果确定第一操作系统和第二操作系统之间存在差异的NCI通信数据,进而结合第一系统日志和第二系统日志,找到相关的NFC功能的组件代码进行修改。
可选的,若比较结果为第一通信数据与第二通信数据之间存在差异,则确定差异通信数据对应的异常消息流程;从第一系统日志和第二系统日志中,确定异常消息流程对应的差异系统日志,并根据差异系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
Android系统下NCI通信数据为倒序输出,先发的NCI通信数据在最底部,OHOS(OpenHarmony Operating System,开放鸿蒙操作系统)在最上部,OHOS输出的NCI通信数据有头部信息,对比时忽略前7个字节,从第8个字节开始对比,其中,由于存在格式差异,OHOS输出的NCI通信数据中每个字节都加了0X,且字节间加了空格,可以将Android系统下的NCI通信数据与OpenHarmony系统下的NCI通信数据转换为相同的格式进行对比。
可以理解的是,移植时OHOS的NCI通信数据的输出方式不同,可能导致对比方式存在差异。
上述实施例提供了对移植到第二操作系统的NFC功能的组件代码进行修改和配置的具体方式,可以解决组件代码的兼容性问题,并且不影响第二操作系统原本的软件框架,从而提升在第二操作系统上实现NFC功能的效率。
在一个实施例中,提供了一种基于操作系统移植NFC功能的方法的可选实例,如图7所示,一种基于操作系统移植NFC功能的方法包括如下步骤:安装Android系统,连接逻辑分析仪和adb,进行NFC开启和刷卡操作,抓取Android系统下的通信数据和系统日志,将Android系统下的NFC功能代码移植到OpenHarmony系统并编译通过,调试NFC流程,对比通信数据和系统日志以修改NFC功能代码,直至OpenHarmony系统下的NFC功能可用。
在一个实施例中,提供了一种基于操作系统移植NFC功能的方法的可选实例,如图8所示,一种基于操作系统移植NFC功能的方法包括如下步骤:
S801,在第一设备开启NFC功能的情况下,和/或,在第一设备使用NFC功能的情况下,获取第一设备中NFC功能的第一通信数据和第一系统日志。
S802,根据第一设备的第一操作系统下NFC功能的组件代码,生成第二设备的第二操作系统下NFC功能的组件代码。
S803,将第二操作系统下NFC功能的组件代码添加到第二操作系统。
S804,将添加到第二操作系统的NFC功能的组件代码所依赖的公共组件,更换为第二操作系统的公共组件。
S805,采用第二操作系统的公共组件,对添加到第二操作系统的NFC功能的组件代码进行编译。
S806,在第二设备开启NFC功能的情况下,和/或,在第二设备使用NFC功能的情况下,获取第二设备中NFC功能的第二通信数据和第二系统日志。
S807,将第一通信数据与第二通信数据进行比较。
S808,根据比较结果、第一系统日志和第二系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
具体的,若比较结果为第一通信数据与第二通信数据之间存在差异,则确定差异通信数据对应的异常消息流程;从第一系统日志和第二系统日志中,确定异常消息流程对应的差异系统日志,并根据差异系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
上述步骤的具体过程可以参见上述方法实施例的描述,其实现原理和技术效果类似,在此不再赘述。
应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的一种基于操作系统移植NFC功能的方法的一种基于操作系统移植NFC功能的装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个一种基于操作系统移植NFC功能的装置实施例中的具体限定可以参见上文中对于一种基于操作系统移植NFC功能的方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种基于操作系统移植NFC功能的装置1,包括第一获取模块10、代码移植模块20、第二获取模块30和代码修改模块40,其中:
第一获取模块10,用于获取第一设备中NFC功能的第一NFC数据。
代码移植模块20,用于将NFC功能的组件代码,从第一设备的第一操作系统移植到第二设备的第二操作系统。
第二获取模块30,用于获取第二设备中NFC功能的第二NFC数据。
代码修改模块40,用于根据第一NFC数据和第二NFC数据,对移植到第二操作系统的NFC功能的组件代码进行修改。
在一个实施例中,在图9的基础上,如图10所示,上述代码移植模块20可以包括:
代码生成单元21,用于根据第一设备的第一操作系统下NFC功能的组件代码,生成第二设备的第二操作系统下NFC功能的组件代码。
代码移植单元22,用于将第二操作系统下NFC功能的组件代码添加到第二操作系统,并对添加到第二操作系统的NFC功能的组件代码进行编译。
在一个实施例中,上述代码移植单元22可以包括:
组件更换子单元,用于将添加到第二操作系统的NFC功能的组件代码所依赖的公共组件,更换为第二操作系统的公共组件。
代码编译子单元,用于采用第二操作系统的公共组件,对添加到第二操作系统的NFC功能的组件代码进行编译。
在一个实施例中,NFC数据包括通信数据和系统日志;上述第一获取模块10具体用于在第一设备开启NFC功能的情况下,和/或,在第一设备使用NFC功能的情况下,获取第一设备中NFC功能的第一通信数据和第一系统日志;相应的,上述第二获取模块30具体用于在第二设备开启NFC功能的情况下,和/或,在第二设备使用NFC功能的情况下,获取第二设备中NFC功能的第二通信数据和第二系统日志。
在一个实施例中,在图9的基础上,如图11所示,上述代码修改模块40可以包括:
数据比较单元41,用于将第一通信数据与第二通信数据进行比较。
代码修改单元42,用于根据比较结果、第一系统日志和第二系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
在一个实施例中,上述代码修改单元42可以包括:
流程确定子单元,用于在比较结果为第一通信数据与第二通信数据之间存在差异的情况下,确定差异通信数据对应的异常消息流程。
代码修改子单元,用于从第一系统日志和第二系统日志中,确定异常消息流程对应的差异系统日志,并根据差异系统日志,对移植到第二操作系统的NFC功能的组件代码进行修改。
上述一种基于操作系统移植NFC功能的装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、移动蜂窝网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于操作系统移植NFC功能的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述一种基于操作系统移植NFC功能的方法的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述一种基于操作系统移植NFC功能的方法的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述一种基于操作系统移植NFC功能的方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于操作系统移植NFC功能的方法,其特征在于,所述方法包括:
获取第一设备中近场通信NFC功能的第一NFC数据;
将NFC功能的组件代码,从所述第一设备的第一操作系统移植到第二设备的第二操作系统;
获取所述第二设备中NFC功能的第二NFC数据;
根据所述第一NFC数据和所述第二NFC数据,对移植到所述第二操作系统的NFC功能的组件代码进行修改。
2.根据权利要求1所述的方法,其特征在于,所述将NFC功能的组件代码,从所述第一设备的第一操作系统移植到第二设备的第二操作系统,包括:
根据所述第一设备的第一操作系统下NFC功能的组件代码,生成第二设备的第二操作系统下NFC功能的组件代码;
将所述第二操作系统下NFC功能的组件代码添加到所述第二操作系统,并对添加到所述第二操作系统的NFC功能的组件代码进行编译。
3.根据权利要求2所述的方法,其特征在于,所述对添加到所述第二操作系统的NFC功能的组件代码进行编译,包括:
将添加到所述第二操作系统的NFC功能的组件代码所依赖的公共组件,更换为所述第二操作系统的公共组件;
采用所述第二操作系统的公共组件,对添加到所述第二操作系统的NFC功能的组件代码进行编译。
4.根据权利要求1所述的方法,其特征在于,NFC数据包括通信数据和系统日志;
所述获取第一设备中近场通信NFC功能的第一NFC数据,包括:
在第一设备开启NFC功能的情况下,和/或,在所述第一设备使用NFC功能的情况下,获取所述第一设备中NFC功能的第一通信数据和第一系统日志。
5.根据权利要求4所述的方法,其特征在于,所述获取所述第二设备中NFC功能的第二NFC数据,包括:
在所述第二设备开启NFC功能的情况下,和/或,在所述第二设备使用NFC功能的情况下,获取所述第二设备中NFC功能的第二通信数据和第二系统日志。
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一NFC数据和所述第二NFC数据,对移植到所述第二操作系统的NFC功能的组件代码进行修改,包括:
将所述第一通信数据与所述第二通信数据进行比较;
根据比较结果、所述第一系统日志和所述第二系统日志,对移植到所述第二操作系统的NFC功能的组件代码进行修改。
7.根据权利要求6所述的方法,其特征在于,所述根据比较结果、所述第一系统日志和所述第二系统日志,对移植到所述第二操作系统的NFC功能的组件代码进行修改,包括:
若比较结果为所述第一通信数据与所述第二通信数据之间存在差异,则确定差异通信数据对应的异常消息流程;
从所述第一系统日志和所述第二系统日志中,确定所述异常消息流程对应的差异系统日志,并根据所述差异系统日志,对移植到所述第二操作系统的NFC功能的组件代码进行修改。
8.一种基于操作系统移植NFC功能的装置,其特征在于,所述装置包括:
第一获取模块,用于获取第一设备中NFC功能的第一NFC数据;
代码移植模块,用于将NFC功能的组件代码,从所述第一设备的第一操作系统移植到第二设备的第二操作系统;
第二获取模块,用于获取所述第二设备中NFC功能的第二NFC数据;
代码修改模块,用于根据所述第一NFC数据和所述第二NFC数据,对移植到所述第二操作系统的NFC功能的组件代码进行修改。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410219971.9A CN117785281B (zh) | 2024-02-28 | 2024-02-28 | 一种基于操作系统移植nfc功能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410219971.9A CN117785281B (zh) | 2024-02-28 | 2024-02-28 | 一种基于操作系统移植nfc功能的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117785281A true CN117785281A (zh) | 2024-03-29 |
CN117785281B CN117785281B (zh) | 2024-08-06 |
Family
ID=90385711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410219971.9A Active CN117785281B (zh) | 2024-02-28 | 2024-02-28 | 一种基于操作系统移植nfc功能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117785281B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210203768A1 (en) * | 2018-09-01 | 2021-07-01 | Jean-Luc DUPRE | Method for transmitting an electronic alarm via a smartphone, and device for implementing the method |
CN115543440A (zh) * | 2021-06-30 | 2022-12-30 | 阿里巴巴新加坡控股有限公司 | 安卓项目迁移到类安卓系统的方法、电子设备和存储介质 |
CN116009959A (zh) * | 2023-01-17 | 2023-04-25 | 广州创盒信息科技有限公司 | Flash项目的移植方法、装置、系统及存储介质 |
CN116737174A (zh) * | 2023-08-15 | 2023-09-12 | 中国兵器装备集团兵器装备研究所 | 一种基于开源鸿蒙系统的子系统自动生成工具及方法 |
CN116774993A (zh) * | 2022-03-11 | 2023-09-19 | 华为技术有限公司 | 代码转换方法、装置及存储介质 |
-
2024
- 2024-02-28 CN CN202410219971.9A patent/CN117785281B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210203768A1 (en) * | 2018-09-01 | 2021-07-01 | Jean-Luc DUPRE | Method for transmitting an electronic alarm via a smartphone, and device for implementing the method |
CN115543440A (zh) * | 2021-06-30 | 2022-12-30 | 阿里巴巴新加坡控股有限公司 | 安卓项目迁移到类安卓系统的方法、电子设备和存储介质 |
CN116774993A (zh) * | 2022-03-11 | 2023-09-19 | 华为技术有限公司 | 代码转换方法、装置及存储介质 |
CN116009959A (zh) * | 2023-01-17 | 2023-04-25 | 广州创盒信息科技有限公司 | Flash项目的移植方法、装置、系统及存储介质 |
CN116737174A (zh) * | 2023-08-15 | 2023-09-12 | 中国兵器装备集团兵器装备研究所 | 一种基于开源鸿蒙系统的子系统自动生成工具及方法 |
Non-Patent Citations (1)
Title |
---|
孙李斌;赵明明;: "基于Linux的嵌入式日志系统设计与实现", 电子科学技术, no. 03, 10 May 2017 (2017-05-10), pages 101 - 103 * |
Also Published As
Publication number | Publication date |
---|---|
CN117785281B (zh) | 2024-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10459823B1 (en) | Debugging using dual container images | |
CN111158741A (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
US10303388B1 (en) | Storage filtering using container images | |
CN106484779B (zh) | 文件操作方法及装置 | |
US20120110383A1 (en) | Method and apparatus for off-line analyzing crashed programs | |
CN109460187A (zh) | 一种qcow2文件数据一致性验证方法及验证终端 | |
KR102405593B1 (ko) | 전자 장치 및 그의 데이터 운용 방법 | |
US11604656B2 (en) | Method and apparatus for managing application | |
CN117785281B (zh) | 一种基于操作系统移植nfc功能的方法 | |
CN115599618B (zh) | 寄存器动态改配验证方法、装置、存储介质和处理器 | |
US8819494B2 (en) | Automatically changing parts in response to tests | |
CN103235745B (zh) | 一种地址冲突检测方法及装置 | |
CN110908644A (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN116628773A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN114546823B (zh) | 用于重现逻辑系统设计的调试场景的方法及相关设备 | |
CN112534409A (zh) | 电子设备及其操作方法 | |
WO2021203591A1 (zh) | 异构云存储系统的数据处理方法及其可读介质和系统 | |
US10698790B1 (en) | Proactive debugging | |
CN112306723A (zh) | 一种应用于小程序的运行信息获取方法和装置 | |
CN109542531A (zh) | 一种文件布局调整方法及装置 | |
KR102717790B1 (ko) | 프로세서 코어들과 다양한 버전의 isa들을 이용하여 명령어들을 실행하는 전자 장치 | |
US7702890B2 (en) | Information processing apparatus and program | |
CN115982018B (zh) | 一种基于ocr的ui测试方法、系统、计算机设备和存储介质 | |
CN115827080B (zh) | 基于串口通讯的嵌入式设备适配方法、装置和计算机设备 | |
CN117931555B (zh) | 在内核态下模拟scsi设备故障的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |