CN115543276A - 一种用于实现软件开发的方法、系统以及电子设备 - Google Patents
一种用于实现软件开发的方法、系统以及电子设备 Download PDFInfo
- Publication number
- CN115543276A CN115543276A CN202110743630.8A CN202110743630A CN115543276A CN 115543276 A CN115543276 A CN 115543276A CN 202110743630 A CN202110743630 A CN 202110743630A CN 115543276 A CN115543276 A CN 115543276A
- Authority
- CN
- China
- Prior art keywords
- software
- development kit
- files
- tool development
- extension component
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种用于实现软件开发的方法、系统以及电子设备,该方法应用于电子设备,该电子设备可以基于第一软件的系统层中的n个文件发布系统软件工具开发包,从而可以通过该系统软件工具开发包,进行系统层能力的扩展,可以丰富系统层的能力,提高了用户的体验和降低了开发难度。
Description
技术领域
本申请涉及软件领域,并且更具体地,涉及一种用于实现软件开发的方法、系统以及电子设备。
背景技术
目前各个操作系统中,会向开发者提供SDK以方便开发者开发各种应用程序,目前提供的SDK中仅是包含应用框架层的接口,开发者可以基于该SDK支撑应用程序的编译与开发,实现操作系统的应用程序层的扩展,但是目前不能通过SDK对应用程序层以下的系统层进行能力扩展。
发明内容
本申请提供一种用于实现软件开发的方法、系统以及电子设备,该方法可以提供系统层的系统软件工具开发包,可以支持系统层能力的扩展,丰富了系统层的能力,提高了用户的体验和降低了开发难度。
第一方面,提供了一种系统,该系统包括源侧装置和目标侧装置,其中,
该源侧装置,用于获取第一软件的n个文件以生成系统软件工具开发包,并发布该系统软件工具开发包,该n个文件为该第一软件的系统层的文件,该系统软件工具开发包包括该n个文件,其中,n≥1,且n为正整数;
该目标侧装置,用于获取该第一软件和该系统软件工具开发包,利用该系统软件工具开发包编译扩展组件源代码,以生成扩展组件,并合并该第一软件和该扩展组件以生成第二软件。
本申请实施例中,源侧装置获取第一软件的n个文件以生成系统软件工具开发包,并发布系统软件工具开发包,该n个文件为第一软件的系统层的文件,从而目标侧装置可以通过该系统软件工具开发包扩展第一软件系统层的能力,丰富了系统层的能力,提高了用户的体验和降低了开发难度。
结合第一方面,在第一方面的某些实现方式中,该源侧装置还发布该第一软件。
结合第一方面,在第一方面的某些实现方式中,该第一软件包括配置文件,该配置文件用于指示该n个文件在该系统层的第一路径和在该系统软件工具开发包的第二路径;
该源侧装置,具体用于执行该配置文件,将该n个文件拷贝至该系统软件工具开发包中的该第二路径中以生成该系统软件工具开发包,并发布该系统工具开发包。
具体地,该配置文件中包括了该n个文件在第一软件的第一路径和在该系统软件工具开发包中的第二路径,当源侧装置执行该配置文件时,可以自动的将该n个文件从第一路径下拷贝至第二路径下。
本申请实施例中,第一软件中包括配置文件,从而源侧装置可以执行该配置文件,自动将系统层中n个文件拷贝至设定的路径中。
结合第一方面,在第一方面的某些实现方式中,该配置文件还用于指示该n个文件在该系统软件工具开发包中的格式;
该源侧装置,具体用于执行该配置文件,确定该n个文件在该系统软件工具开发包中的格式以生成该系统软件工具开发包,并发布该系统软件工具开发包。
结合第一方面,在第一方面的某些实现方式中,该系统软件工具开发包还包括:模块配置文件,该模块配置文件用于指示该n个文件的功能;该目标侧装置,具体用于根据该模块配置文件,编译该系统软件工具开发包和该扩展组件源代码,生成该扩展组件。
具体地,由于该模块配置文件可以指示该n个文件的功能,则该目标侧装置,可以根据该模块配置文件,编写扩展组件的源代码,完成扩展组价的源代码编写后,可以编译该系统软件工具开发包和该系统扩展组件源代码,生成扩展组件。
结合第一方面,在第一方面的某些实现方式中,该源侧装置,还用于编译该第一软件的软件源代码,生成m个文件,其中,m≥n,且m为正整数;该m个文件中包括该n个文件。
本申请实施例中,可以从编译后的m个文件中,选取n个系统层的文件,发布系统软件工具开发包,该n个文件为第一软件的系统层的文件,从而目标侧装置可以通过该系统软件工具开发包扩展第一软件系统层的能力,丰富了系统层的能力,提高了用户的体验和降低了开发难度。
结合第一方面,在第一方面的某些实现方式中,该n个文件为该第一软件未实现功能对应的接口文件。
具体地,该第一软件未实现的功能在系统层可以对应有一个或多个接口,则该n个文件可以为该一个或多个接口对应的文件。例如,该第一软件未实现的功能是5G通信功能,该5G通信功能在系统层对应通信接口,则该n个文件可以是通信接口对应的文件,则可以通过该n个文件编译支撑5G通信功能的源代码,从而生成支撑5G通信功能的扩展组件。
结合第一方面,在第一方面的某些实现方式中,该系统层包括应用框架层和/或系统库和/或硬件适配层和/或内核层。
结合第一方面,在第一方面的某些实现方式中,该目标侧装置在合并该第一软件和该扩展组件,生成该第二软件之前,该目标侧装置,还用于检测该第一软件和该扩展组件的兼容性;该合并该第一软件和该扩展组件,生成第二软件,包括:当该第一软件和该扩展组件兼容时,该目标侧装置合并该第一软件和该扩展组件,生成该第二软件。
结合第一方面,在第一方面的某些实现方式中,该目标侧装置,还用于检测该第一软件和该扩展组件的兼容性,包括:该目标侧装置检测该第一软件发布的第一系统软件工具开发包的版本和该扩展组件使用的第二系统软件工具开发包的版本;该当该第一软件和该扩展组件兼容时,包括:当该第一系统软件工具开发包的版本与该扩展组件使用的第二系统软件工具开发包的版本相同时,该第一软件和该扩展组件兼容。
具体地,为了保证第一软件和扩展组件的合并,需要检测第一软件和扩展组件的合并,由于涉及系统层能力的扩展,需要保证API兼容和ABI兼容,则需要编译得到扩展组件所使用的系统软件开发包的版本要与基于第一软件发布的系统软件开发包的版本一致。
第二方面,提供了一种用于实现软件开发的方法,获取第一软件的n个文件以生成系统软件工具开发包,并发布该系统软件工具开发包,该n个文件为所述第一软件的系统层的文件,该系统软件工具开发包包括该n个文件,其中,n≥1,且n为正整数。。
本申请实施例中,获取第一软件的n个文件以生成系统软件工具开发包,并发布系统软件工具开发包,由于该n个文件为第一软件的系统层的文件,则可以基于该系统软件工具开发包进行系统层能力的扩展。
结合第二方面,在第二方面的某些实现方式中,该第一软件还包括配置文件,该配置文件用于指示该n个文件在该系统层的第一路径和在该系统软件工具开发包的第二路径,;该获取第一软件的n个文件以生成系统软件工具开发包,并发布该系统软件工具开发包,包括:执行该配置文件,将该n个文件拷贝至该系统软件工具开发包中的该第二路径以生成该系统软件工具开发包,并发布该系统工具开发包。
具体地,该配置文件中包括了该n个文件在第一软件的第一路径和在该系统软件工具开发包中的第二路径,执行该配置文件时,可以自动的将该n个文件从第一路径下拷贝至第二路径下。
本申请实施例中,第一软件中包括配置文件,从而执行该配置文件时,可以自动将系统层中n个文件拷贝至设定的路径中。
结合第二方面,在第二方面的某些实现方式中,该配置文件还用于指示该n个文件在该系统软件工具开发包中的格式;
该获取第一软件的n个文件以生成系统软件工具开发包,并发布该系统软件工具开发包,包括,执行该配置文件,确定该n个文件在该系统软件工具开发包中的格式以生成该系统软件工具开发包,并发布该系统软件工具开发包。
结合第二方面,在第二方面的某些实现方式中,该系统软件工具开发包还包括:模块配置文件;该模块配置文件用于指示该n个文件的功能。
结合第二方面,在第二方面的某些实现方式中,该方法还包括:编译该第一软件的软件源代码,生成m个文件,其中,m≥n,且m为正整数;该m个文件中包括该n个文件。
本申请实施例中,可以从编译后的m个文件中,选取n个系统层的文件,发布系统软件工具开发包,该n个文件为第一软件的系统层的文件,从而目标侧装置可以通过该系统软件工具开发包扩展第一软件系统层的能力,丰富了系统层的能力,提高了用户的体验和降低了开发难度。
结合第二方面,在第二方面的某些实现方式中,该n个文件为该第一软件未实现功能对应的接口文件。
具体地,该第一软件未实现的功能在系统层可以对应有一个或多个接口,则该n个文件可以为该一个或多个接口对应的文件。例如,该第一软件未实现的功能是5G通信功能,该5G通信功能在系统层对应通信接口,则该n个文件可以是通信接口对应的文件,则可以通过该n个文件编译支撑5G通信功能的源代码,从而生成支撑5G通信功能的扩展组件。
结合第二方面,在第二方面的某些实现方式中,该系统层包括应用框架层和/或系统库和/或硬件适配层和/或内核层。
第三方面,提供了一种用于实现软件开发的方法,该方法包括:获取第一软件和系统软件工具开发包,该系统软件工具开发包包括n个文件,该n个文件为该第一软件的系统层的文件;利用该系统软件工具开发包编译扩展组件源代码,生成扩展组件;合并该扩展组件和该第一软件,生成第二软件。
本申请实施例中,通过获取系统软件工具开发包,由于该系统软件工具开发包中包括第一软件系统层的n个文件,因此可以基于该系统软件工具开发包进行系统层能力的扩展,丰富了系统层的能力,提高了用户的体验和降低了开发难度。
结合第三方面,在第三方面的某些实现方式中,该第一软件包括配置文件,该配置文件用于指示该n个文件在该系统层的第一路径和在该系统软件工具开发包的第二路径。
结合第三方面,在第三方面的某些实现方式中,该配置文件还用于指示该n个文件在该系统软件工具开发包的格式。
结合第三方面,在第三方面的某些实现方式中,该系统软件工具开发包还包括:模块配置文件,该模块配置文件用于指示该n个文件的功能;该利用该系统软件工具开发包编译扩展组件源代码,生成扩展组件,包括:根据该模块配置文件,利用该系统软件工具开发包编译该扩展组件源代码,生成该扩展组件。
具体地,由于该模块配置文件可以指示该n个文件的功能,则可以根据该模块配置文件,编写扩展组件的源代码,完成扩展组价的源代码编写后,可以编译该系统软件工具开发包和该系统扩展组件源代码,生成扩展组件。
结合第三方面,在第三方面的某些实现方式中,该系统层包括应用框架层和/或系统库和/或硬件适配层和/或内核层。
结合第三方面,在第三方面的某些实现方式中,该合并该扩展组件和该第一软件,生成该第二软件之前,该方法还包括:检测该第一软件和该扩展组件的兼容性;该合并该扩展组件和该第一软件,生成第二软件,包括:当该第一软件和该扩展组件兼容时,合并该扩展组件和该第一软件,生成该第二软件。
结合第三方面,在第三方面的某些实现方式中,该检测该第一软件和该扩展组件的兼容性,包括:检测该第一软件发布的第一系统软件工具开发包的版本和该扩展组件使用的第二系统软件工具开发包的版本;该当该第一软件和该扩展组件兼容时,包括:当该第一系统软件工具开发包的版本与该扩展组件使用的第二系统软件工具开发包的版本相同时,该第一软件和该扩展组件兼容。
具体地,为了保证第一软件和扩展组件的合并,需要检测第一软件和扩展组件的合并,由于涉及系统层能力的扩展,需要保证API兼容和ABI兼容,则需要编译得到扩展组件所使用的系统软件开发包的版本要与基于第一软件发布的系统软件开发包的版本一致。
第四方面,为本申请实施例的一种电子设备,该电子设备包括执行上述方面或者上述方面的任意一种可能的设计的方法的模块/单元;这些模块/单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第五方面,为本申请实施例的一种芯片,该芯片与电子设备中的存储器耦合,用于调用存储器中存储的计算机程序并执行本申请实施例上述方面及其上述方面任一可能设计的技术方案;本申请实施例中“耦合”是指两个部件彼此直接或间接地结合。
第六方面,为本申请实施例的一种计算机可读存储介质,该计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得该电子设备执行如上述方面及其上述方面任一可能设计的技术方案。
第七方面,为本申请实施例的一种计算机程序,该计算机程序包括指令,当该指令在计算机上运行时,使得该计算机执行如上述方面及其上述方面任一可能设计的技术方案。
第八方面,为本申请实施例的一种芯片,该芯片包括处理器与数据接口,该处理器通过该数据接口读取存储器上存储的指令,以执行上述方面及其上述方面任一可能设计的技术方案。
其中,第四方面至第八方面的有益效果,请参见第一方面至第三方面的有益效果,不重复赘述。
附图说明
图1是本申请实施例提供的一种电子设备的结构示意图。
图2是本申请实施例提供的一例电子设备的软件结构框图。
图3是本申请实施例提供的另一例电子设备的软件结构框图。
图4是本申请实施例提供的用于实现软件开发的方法的示例性流程图。
图5是本申请实施例提供的兼容性检查的示例性框图。
图6是本申请实施例的源侧装置的结构框图。
图7是本申请实施例的目标侧装置的结构框图。
具体实施方式
以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括例如“一个或多个”这种表达形式,除非其上下文中明确地有相反指示。还应当理解,在本申请以下各实施例中,“至少一个”、“一个或多个”是指一个、两个或两个以上。术语“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系;例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A、B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
以下介绍电子设备、用于这样的电子设备的用户界面、和用于使用这样的电子设备的实施例。在一些实施例中,电子设备可以是还包含其它功能诸如个人数字助理和/或音乐播放器功能的便携式电子设备,诸如手机、平板电脑、具备无线通讯功能的可穿戴电子设备(如智能手表)等。便携式电子设备的示例性实施例包括但不限于搭载 鸿蒙(Harmony OS)或者其它操作系统的便携式电子设备。上述便携式电子设备也可以是其它便携式电子设备,诸如膝上型计算机(Laptop)等。还应当理解的是,在其他一些实施例中,上述电子设备也可以不是便携式电子设备,而是台式计算机。
示例性的,图1示出了电子设备100的结构示意图。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,指南针190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的部件,也可以集成在一个或多个处理器中。在一些实施例中,电子设备101也可以包括一个或多个处理器110。其中,控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。在其他一些实施例中,处理器110中还可以设置存储器,用于存储指令和数据。示例性地,处理器110中的存储器可以为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。这样就避免了重复存取,减少了处理器110的等待时间,因而提高了电子设备101处理数据或执行指令的效率。
在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路间(inter-integrated circuit,I2C)接口,集成电路间音频(nter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,SIM卡接口,和/或USB接口等。其中,USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备101充电,也可以用于电子设备101与外围设备之间传输数据。该USB接口130也可以用于连接耳机,通过耳机播放音频。
可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,WiFi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像、视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD)、有机发光二极管(organic light-emittingdiode,OLED)、有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganic light emitting diode,AMOLED)、柔性发光二极管(flex light-emittingdiode,FLED)、Miniled、MicroLed、Micro-oLed、量子点发光二极管(quantum dot lightemitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或多个显示屏194。
在本申请的一些实施例中,当显示面板采用OLED、AMOLED、FLED等材料时,上述图1中的显示屏194可以被弯折。这里,上述显示屏194可以被弯折是指显示屏可以在任意部位被弯折到任意角度,并可以在该角度保持,例如,显示屏194可以从中部左右对折。也可以从中部上下对折。
电子设备100的显示屏194可以是一种柔性屏,目前,柔性屏以其独特的特性和巨大的潜力而备受关注。柔性屏相对于传统屏幕而言,具有柔韧性强和可弯曲的特点,可以给用户提供基于可弯折特性的新交互方式,可以满足用户对于电子设备的更多需求。对于配置有可折叠显示屏的电子设备而言,电子设备上的可折叠显示屏可以随时在折叠形态下的小屏和展开形态下大屏之间切换。因此,用户在配置有可折叠显示屏的电子设备上使用分屏功能,也越来越频繁。
电子设备100可以通过ISP、摄像头193、视频编解码器、GPU、显示屏194以及应用处理器等实现拍摄功能。
ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点、亮度、肤色进行算法优化。ISP还可以对拍摄场景的曝光、色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或多个摄像头193。
数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1、MPEG2、MPEG3、MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别、人脸识别、语音识别、文本理解等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储一个或多个计算机程序,该一个或多个计算机程序包括指令。处理器110可以通过运行存储在内部存储器121的上述指令,从而使得电子设备101执行本申请一些实施例中所提供的方法,以及各种应用以及数据处理等。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统;该存储程序区还可以存储一个或多个应用(比如图库、联系人等)等。存储数据区可存储电子设备101使用过程中所创建的数据(比如照片,联系人等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如一个或多个磁盘存储部件,闪存部件,通用闪存存储器(universal flash storage,UFS)等。在一些实施例中,处理器110可以通过运行存储在内部存储器121的指令,和/或存储在设置于处理器110中的存储器的指令,来使得电子设备101执行本申请实施例中所提供的方法,以及其他应用及数据处理。电子设备100可以通过音频模块170、扬声器170A、受话器170B、麦克风170C、耳机接口170D、以及应用处理器等实现音频功能。例如音乐播放、录音等。
传感器模块180可以包括压力传感器180A、陀螺仪传感器180B、气压传感器180C、磁传感器180D、加速度传感器180E、距离传感器180F、接近光传感器180G、指纹传感器180H、温度传感器180J、触摸传感器180K、环境光传感器180L、骨传导传感器180M等。
其中,压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即X、Y和Z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池142的输出电压执行升压,以避免低温导致的异常关机。
触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
图2是现有技术中电子设备100的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,系统库,以及内核层。应用程序层可以包括一系列应用程序包。
如图2所示,应用程序包可以包括相机、图库、日历、通话、地图、导航、WLAN、蓝牙、音乐、视频、短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架,应用程序框架层包括一些预先定义的函数。
如图2所示,应用程序框架层可以包括窗口管理器、内容提供器、视图系统、电话管理器、资源管理器、通知管理器等。
窗口管理器用于管理窗口程序,窗口管理器可以获取显示屏大小,判断是否有状态栏、锁定屏幕、截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频、图像、音频、拨打和接听的电话、浏览历史和书签、电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串、图标、图片、布局文件、视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息、发出提示音、电子设备振动、指示灯闪烁等。
系统库可以包括多个功能模块。例如:表面管理器(surface manager)、媒体库(media libraries)、三维图形处理库(例如:OpenGL ES)、2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频、视频格式回放和录制以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等。
三维图形处理库用于实现三维图形绘图、图像渲染、合成和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动、摄像头驱动、音频驱动、传感器驱动。
在介绍本申请实施例的之前,先介绍几个和本申请实施例相关的概念。
软件开发工具包(software development kit,SDK):SDK可以认为是辅助开发某一类软件的相关文档、范例和工具的集合,相当于开发集成工具环境,例如安卓开发工具,也有针对某项软件功能的SDK,如图像识别技术、语音识别分析技术等。
应用程序接口(application programming interface,API):API可以认为是一些预先定义的接口(例如函数、HTTP接口),目的是提供应用程序与开发人员基于一个软件或者硬件得以访问的一组例程的能力,而又无需访问源码,或者理解内部工作机制的细节。
可以理解的是,SDK可以认为是多个API和其他文件的集合体。例如,开发一款可视门铃,包括有视频对讲、访客截图、人脸识别功能,首先需要生成针对上述3个功能的API,然后该3个API可以组成SDK,然后根据SDK制作应用程序,在门铃中写入固件(firmware),当该可视门铃需要将入新功能虹膜识别,需要生成虹膜识别的API,组成新的SDK,生成新的固件,更新到门铃中就可以使该可视门铃具备上述4个功能。
应用程序二进制接口(application binary interface,ABI):ABI包含了应用程序在系统运行时必须遵守的编程约定。ABI包含一系列的系统调用和使用这些系统调用的方法,以及关于程序可以使用的内存地址和使用机器寄存器的规定。从一个应用程序的角度看,ABI既是系统架构的一部分也是硬件体系结构的重点。
目前各个操作系统中,会向开发者提供SDK以方便开发者开发各种应用程序,从而可以支撑应用程序的编译与开发。同时结合图2可以看出,一个应用程序运行时,通过应用框架层的接口与系统层交互,因此应用层与系统层之间通过应用框架层的接口关联,但是在现有技术中,由于内核层、系统库、应用框架层有着很强的耦合性,变化具有传导性,变化具有传导性可以理解为当某一层发生变化时,其他层同样会发生变化,例如,当系统库中一个功能模块发生变化时,内核层以及应用框架层中的部分内容会随之发生变化,因此在内核层、系统库、应用框架层难以对外单独提供稳定开放的接口,即无法向开发者提供带有系统层接口的SDK,系统层可以理解为除应用程序层以外的其他层,(例如内核层、系统库、应用程序框架层),在本申请另一个实施例中,系统层可以包括应用程序框架层、系统库、硬件适配层、内核层,由于现有技术中无法提供带有系统层接口的SDK,导致无法满足开发者或者用户的需求。例如,在一个场景中,第一电子设备具有4G芯片,该第一电子设备搭载有操作系统,该操作系统具备有4G的通信功能,则第一电子设备可以执行4G通信功能,当将该操作系统搭载至第二电子设备,第二电子设备具有5G芯片,由于该操作系统不支持5G通信功能,则第二电子设备无法执行5G通信功能,如果需要使第二电子设备具备5G通信功能,则需要涉及该操作系统的系统层的能力扩展,但是在现有技术中,当需要针对操作系统的系统层的能力扩展时,需要针对该操作系统的源代码进行操作,而不能通过SDK的方式扩展系统层的能力。
再例如,在另一个场景中,第一电子设备搭载的操作系统具有执行720P视频解码的功能,但是没有执行1080P视频解码的功能,视频解码能力的扩展同样需要基于系统层能力的扩展,基于上述类似的原因,不能通过SDK的方式扩展系统层的能力。
再例如,在另一个场景中,第一电子设备可以是具有操作系统的智能收银装置,该智能收银装置最初不具备显示器,当想要为该智能收银装置增加显示器,以实现每次收款后显示收款金额的功能,基于上述类似的原因,增加硬件时,涉及该操作系统的系统层的能力扩展,而现有技术中不能通过SDK的方式扩展系统层的能力。
综上所述,由于现有技术中的SDK只能支撑应用程序的编译与开发,无法支撑针对系统层的扩展能力的编译与开发。基于此,本申请实施例提供了一种软件调用接口的方法,可以提供带有系统层接口的SDK,进而可以支撑针对系统层的扩展能力的编译与开发。
为了便于描述,将操作系统称为软件。
如3所示,为一个实施例中电子设备100的软件结构框图,与图2类似,由下至上依次为内核层、系统库、应用程序框架层、应用程序层。
在另一个实施例中,电子设备100的软件结构图可以由下至上内核层、硬件适配层、系统库、应用程序框架层、应用程序层
内核层包括内核子系统和驱动子系统。
采用多内核涉及,可以针对不同资源受限设备选用适合的内核。
示例性的,内核子系统可以包括Linxu Kernel和/或Lite OS和/或鸿蒙内核。
驱动子系统可以提供统一外设访问能力和驱动开发,管理框架。
系统层是软件核心能力集合,通过应用框架层向应用程序提供服务,系统层可以包含以下几个部分:
系统基本能力子系统集:为分布式应用在多个电子设备上运行、调度、迁移等操作提供了基础能力,由分布式软总线、分布式任务调度、多模输入、公共基础库等子系统组成。
基础服务软件子系统集:为提供公共的、通用的软件服务,由时间通知、电话、多媒体等子系统组成。
增强软件服务子系统集:为提供针对不同电子设备的、差异化的能力增强型软件服务,由穿戴专有业务、物联网(internet of things,IOT)专有业务等子系统组成。
硬件服务子系统集:为提供硬件服务,由位置服务、生物识别特征、穿戴专有硬件服务等子系统组成。
需要说明的是,本申请实施例中的软件可以根据不同电子设备的部署环境,在基础服务软件子系统集、增强软件服务子系统集、硬件服务子系统集可以进行子系统的选择,每个子系统可以按照功能进行选择。
应用程序框架层:为应用程序提供了多语言(例如,Java/C/C++)的用户程序框架和Ability框架,以及各种软硬件服务对外开放的多语言框架API。不同电子设备支持的API可以不相同,这与电子设备中软件的系统层的子系统有关。
应用程序层,与图2中的应用程序层类似,在此不再赘述。
下面结合图4介绍本申请实施例提供的调用接口的方法的示意性流程图。
图4示出了本申请实施例提供的软件的编译构建方法的示例性流程图,该流程包括:
S401,编译软件源代码,生成m个文件。
编译是将软件源代码(通常是高级语言)到能直接被电子设备或者虚拟机执行的目标代码(通常为机器语言)的翻译过程。例如,源代码采用Java语言,经过编译后可以生成一个或者多个二进制文件。
本申请实施例中,软件源代码在源侧装置经过编译,可以生成m个文件,该m个文件可以实现不同的功能,该m个文件归档后构成第一系统组件,m≥1且m为正整数。
示例性的,软件源代码为鸿蒙系统的源代码,经过编译后会生成系统组件,则该系统组件可以认为是在电子设备上运行的鸿蒙系统。
该m个文件可以划分分布在系统架构中的不同层中。例如m=100,其中有10个文件属于应用程序层,40个文件属于应用程序框架层,40个文件属于系统库,10个文件属于内核层。
再例如,m=100,其中有10个文件属于应用程序层,30个文件属于应用程序框架层,40个文件属于系统库,10个文件属于硬件适配层,10个文件属于内核层。
替代性的,上述介绍中二进制文件也可以称为库,库时一种可执行代码的二进制形式,可以被软件载入内存中执行。库可以分为静态库和动态库,动态库也可以称为共享库。静态库中的所有数据在编译时被整合进代码中,而动态库中的函数在编译时并没有被编译仅代码中,而是执行相关函数时才调用动态库里相应的函数。本申请实施例中对于库的类型不作限定。
本申请实施例中,编译软件时,可以在Linux系统中编译软件源代码。本申请实施例中,在编译软件源代码时,可以采用Ubuntu进行软件源代码的编译,但并不限定于此,例如还可以采用Lubuntu编译软件源代码。
一个实施例中,采用Ubuntu进行软件源代码编译时,需要进行环境的搭建,环境的搭建可以参考现有技术,在此不再赘述。
一个实施例中,编译软件源代码时,还可以在已经搭建好各类环境的Ubuntu镜像中进行。
完成环境的搭建或在已搭建好环境的Ubuntu中可以编译源代码,生成系统组件。
可选地,开发者可以针对软件源代码进行编辑,例如增加源代码或者删除部分源代码,经过编译后,当增加源代码时,可以生成大于m个文件,当删除部分源代码时,可以生成小于m个文件。
S402,选取n个文件,生成系统软件工具开发包。
具体地,在完成软件源代码编译后,可以生成m个文件,该m个文件归档后构成第一系统组件,m≥1且m为正整数。其中,在m个文件中包括n个可以指示系统层对外接口的文件,也可以理解为软件需要对外开放的接口,或者说通过该n个文件可以与软件的系统层关联,还可以说该n个文件是系统层对外接口的集合,然后将该n个文件归档形成系统软件工具开发包。其中n≤m。
需要说明的是,该n个文件可以指示系统层中不同层的接口,例如n=10,可以由3个文件可以指示应用框架层的接口,3个文件可以指示系统库的接口,4个文件可以指示内核层的接口。由于该n个文件可以指示不同层的接口,从而在进行软件开发时,可以通过该n个文件连接到不同的系统层中,进而可以扩展系统层的能力。
例如,在一个场景中,软件源代码经过编译后得到第一系统组件,该第一系统组件没有拍照功能,但是该第一系统组件在系统层可以有拍照接口,拍照接口可以理解为在系统层中得以支持拍照功能的接口,例如,在内核层中有摄像头驱动,但是在系统库中没有针对拍照功能的功能模块,从而搭载第一系统组件的电子设备无法实现拍照功能,但是通过本申请实施例所提供的方法,可以将对应摄像头驱动的文件开放出来(也可以称为接口)并通过系统软件工具包发布出去,原始设计制造商(Original Design Manufacturer)、原始设备制造商(Original Equipment Manufacturer)、第三方开发者等在得到该系统软件工具开发包后,由于该系统软件工具开发包中有针对拍照的接口,ODM、OEM、第三方开发者可以基于该系统软件工具开发包仅开发针对拍照功能的源代码,然后将该拍照功能的源代码以及系统软件工具开发包编译后,可以得到第三系统组件,该第三系统组件就具有拍照功能,从而搭载第三系统组件的电子设备可以实现拍照功能。
再例如,在另一个场景中,软件源代码经过编译后得到第一系统组件,该第一系统组件在系统层保留有5G通信接口,由于搭载第一系统组件的电子设备所使用的芯片没有5G通信功能代码,但是可以通过系统软件工具开发包的方式将5G通信接口对外开放,从而ODM、OEM、第三方开发者等可以基于系统软件工具开发包补充5G通信功能代码,然后将该5G通信功能代码以及系统软件工具开发包编译后,可以得到第四系统组件,将该第四系统组件搭载在具有5G通信功能代码的芯片的电子设备中,则该电子设备具备了5G通信功能。
再例如,在另一个场景中,软件源代码经过编译后得到第一系统组件,该第一系统组件搭载在智能音箱中,该第一系统组件在系统层保留有显示接口,并可以通过系统软件工具包发布出去,从而ODM、OEM、第三方开发者等可以基于系统软件工具开发包增加显示功能的代码,然后将该显示功能代码以及系统软件工具开发包编译后,可以得到第五系统组件,则搭载第五系统组件的智能音箱连接显示器后,由于第五系统组件中具备了显示功能,则智能音箱和显示器可以结合起来工作。
总的来说,可以认为第一系统组件是一个具有基础功能的软件,可以保证在各类电子设备中运行,但是可以通过系统软件工具开发包将系统层的接口发布出去,然后ODM、OEM、第三方开发者等可以基于第一系统组件进行系统层能力的扩展,例如上文描述的各项功能。
示例性的,该n个文件可以通过软件源代码实现,即在编写软件源代码时确定需要指示系统层接口的文件,经过编译后,生成该n个文件。
可选地,该系统软件工具开发包中还可以包括模块配置文件,该模块配置文件用于指示n个文件的功能。
现有技术中的SDK发布时,并不会编译软件源代码,而是针对软件源代码通过桩代码的形式发布SDK,具体实现方式请参考现有技术,在此不再赘述。
为了保证ODM、OEM、第三方开发者等在基于系统软件工具开发包开发第二系统组件时的API兼容和ABI兼容,第一系统组件和系统软件工具开发包需要一次构建。
一次构建可以理解为软件源代码在编译后生成第一系统组件,然后基于第一系统组件发布系统软件工具开发包,在这一过程中,第一系统组件中的m个文件不会发生变化,且第一系统组件中也不会增加或减少文件。
下面将介绍如何保证第一系统组件和系统软件工具开发包一次构建的方法。
完成源代码的编译时,还会生成一个或者多个配置文件,该一个或多个配置文件用于指示n个文件的具体位置,并且该一个或多个配置文件中还可以指示在生成系统软件工具开发包后,该n个文件在该软件工具开发包中的位置,并将该n个文件更改为可以参与系统层扩展能力代码编译的格式。
需要说明的是,如果该n个文件中有一个或多个可以直接参与系统层扩展能力代码的编译的文件,则可以不更改该一个或多个文件的格式。
例如,完成软件源代码的编译后,可以生成native.xml配置文件,native.xml配置文件可以指示系统库中需要对外开放的二进制文件的具体位置,例如系统库中具有q个文件,通过解析该配置文件,可以自动挑选出系统库中需要对外开发的p个文件。
示例性的,具体代码如下:
由上述代码可知,当解析native.xml配置文件时,会将路径为vendor/Huawei/system_ext/adapter_sdk的Android.bp.sdk复制并拷贝到系统软件工具开发包中,路径为vendor/XXX,并将Android.bp.sdk更改为Android.bp,目的在于使Android.bp能够参与扩展系统层能力代码的编译。由于软件源代码在编译后可以生成Android.bp.sdk,Android.bp.sdk无法参与编译,若只是将Android.bp.sdk复制并拷贝至系统软件工具开发包中,则无法使Android.bp.sdk参与编译,因此需要将Android.bp.sdk更改为可以参与编译的Android.bp。
再例如,完成软件源代码的编译后,可以生成framework_boot_jar.xml配置文件,framework_boot_jar.xml配置文件可以指示应用程序框架层中需要对外开放的二进制文件的具体位置,具体代码如下:
由上述代码可知,当解析framework_boot_jar.xml配置文件时,会将路径为out/target/common/obj/JAVA_LIBRARIES/voip-common_intermediates的classes.jar复制并拷贝到系统软件工具开发包中,在软件工具开发包中的路径为voip-common,并将classes.jar修改为voip-common.jar。
需要说明的是,本申请实施例仅以framework_boot_jar.xml、native.xml配置文件为例,但不应构成任何限定。
解析配置文件并执行配置文件中的代码后,可以得到系统层中不同层需要对外开放的文件以及其在系统软件工具开发包中的路径。
例如,以系统库为例,经过软件源代码编译后,系统库中需要开发的文件及其路径的配置文件如下:native_bin.xml、native_include.xml、native_lib.xml、等,上述配置文件可以是系统库中不同功能模块对应的需要开发的文件及其路径,经过解析配置文件并执行配置文件中的代码后,在系统软件工具开发包的路径可以为:bin/、include/、lib/。
综上所述,通过软件源代码编译后生成配置文件,执行该配置文件,将需要系统层中需要对外开放的文件复制并拷贝至系统软件工具开发包中,由于软件源代码的编译后就可以自动执行复制拷贝,从而可以保证第一系统组件和系统软件工具开发包是一次构建的。
由上述可知,生成的系统软件工具开发包中包含n个已经编译好的文件,由于该n个文件经过编译并与系统层关联,从而ODM、OEM可以通过该系统软件工具开发包针对系统层进行扩展。
S403,发布系统软件工具开发包。
生成系统软件工具开发包后,可以发布该系统软件工具开发包,然后ODM、OEM、第三方开发者等可以基于该系统软件工具开发包,进行系统层能力的扩展。
S404,基于系统软件工具开发包,生成第二系统组件。
目标侧在接收到系统软件工具开发包后,可以基于该系统软件工具开发包,开发不同功能,对系统层能力进行扩展,然后生成第二系统组件,该第二系统组件中包含第一系统组件的所有功能以及基于该系统软件工具开发包扩展的功能。
目标侧可以理解为使用该系统软件工具开发包的目标侧装置。
下面将介绍目标侧生成第二系统组件的详细过程。
目标侧在得到系统软件工具开发包后,可以根据需要扩展的系统层的能力进行源代码的编写,然后编译该系统软件工具开发包以及编写好的系统扩展组件的源代码,从而可以得到系统扩展组件,该系统扩展组件扩展的系统层的能力。例如,该系统软件工具开发包中对外开放的接口是通信接口,该通信接口与系统层中的多个模块相连,目标侧可以基于该系统软件工具开发包,编写5G通信功能的源代码,然后目标侧编译该系统软件工具开发包和该5G通信功能的源代码,得到系统扩展组件,则该系统扩展组件具有5G通信功能。
目标侧在生成系统扩展组件后,由于该系统扩展组件是基于第一系统组件发布的系统软件工具开发包开发的,该系统软件工具开发包中具有一个或者多个指向第一系统组件系统层的接口,该系统扩展组件可以通过调用接口的方式调用第一系统组件,即将系统扩展组件与第一系统组件合并,生成第二系统组件,从而该第二系统组件中包含第一系统组件的所有功能以及系统扩展组件的功能。
为了保证第一系统组件和系统扩展组件能够结合并生成第二系统组件,在编译得到系统扩展组件所使用的系统软件开发包的版本要与基于第一系统组件发布的系统软件开发包的版本一致。
例如,如图5中的(a)所示,假设本申请实施例中的软件为鸿蒙系统2.0,其对外发布时可以包含了第一系统组件和基于第一系统组件得到的系统软件工具开发包,该系统软件工具开发包的版本为1.2.0。ODM基于该系统软件工具开发包开发得到第一系统扩展组件和第二系统扩展组件,可以命名为ODM1.0和ODM2.0。由于第一系统扩展组件和第二系统扩展组件都是基于版本为1.2.0的系统软件工具开发包开发的,所以第一系统扩展组件和第二系统扩展组件与第一系统组件的接口兼容,从而ODM可以将第一系统扩展组件、第二系统扩展组件与第一系统组件结合。
再例如,如图5中的(b)所示,假设本申请实施例中的软件为鸿蒙系统2.0,其对外发布时可以包含了第一系统组件和基于第一系统组件得到的系统软件工具开发包,该系统软件工具开发包的版本为1.2.0。但是ODM基于版本为1.10的系统软件工具开发包开发得到第三系统扩展组件,由于第三系统扩展组件是基于版本为1.1.0的系统软件工具开发包开发的,则第三系统扩展组件不能与第一系统组件结合。
本申请实施例中,通过编译软件源代码,生成第一系统组件,并将需要对外开放的文件以系统软件工具开发包的形式对外开发,第一系统组件和系统软件工具开发包同源发布,保证了可以通过该系统软件工具开发包进行系统层的扩展,丰富了系统层的能力,ODM、OEM、第三方开发者等可以基于该系统软件工具开发包进行定制,提高了用户的体验和降低开发难度。
图6是本申请一个实施例的源侧装置的示意性结构图。应理解,图6示出的源侧装置600仅是示例,本申请实施例的源侧装置还可以包括其他模块或单元,或者包括与图6中的各个模块的功能相似的模块,或者并非要包括图6中的所有模块。
图6所示的源侧装置600可以包括编译模块610、生成模块620、发布模块630,其中源侧装置600包括的各个模块可以通过软件和/或硬件方式实现。
编译模块610,用于编译软件源代码。
生成模块620,用于生成第一系统组件;还用于执行配置文件,以生成系统软件工具开发包。
发布模块630,用于发布第一系统组件和系统软件工具开发包。
在一些可能的实现方式中,该源侧装置600可以包括与存储器耦合的处理器,该处理器用于执行所述存储器中的程序指令。当处理器执行所述存储器中的程序指令时,该处理器实现编译模块610、生成模块620、发布模块630所执行的操作,从而实现图4中源侧装置实施的方法。
可选地,该源侧装置还可以包括存储器。
在可能的实现方式中,该源侧装置可以是芯片,例如可以是能够集成在开发设备中的芯片。
图7所示的目标侧装置700可以包括接收模块710、生成模块720、发布模块730。应理解,图7示出的目标侧装置700仅是示例,本申请实施例的源侧装置还可以包括其他模块或单元,或者包括与图7中的各个模块的功能相似的模块,或者并非要包括图6中的所有模块。
接收模块710,用于接收第一系统组件和系统软件工具开发包。
生成模块720,用于根据系统软件工具开发包生成系统扩展组件;还用于根据第一系统组件和系统扩展组件生成第二系统组件。
发布模块730,用于发布第二系统组件。
在一些可能的实现方式中,该目标侧装置700可以包括与存储器耦合的处理器,该处理器用于执行所述存储器中的程序指令。当处理器执行所述存储器中的程序指令时,该处理器实现接收模块710、生成模块720、发布模块730所执行的操作,从而实现图4中目标侧装置实施的方法。
可选地,该目标侧装置还可以包括存储器。
在可能的实现方式中,该目标侧装置可以是芯片,例如可以是能够集成在开发设备中的芯片。
需要说明的是,在前文中描述的第一系统组件也可以称为第一软件,第二系统组件也可以称为第二软件。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。应理解,本申请实施例中的处理器可以为中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (22)
1.一种系统,所述系统包括源侧装置和目标侧装置,其中,
所述源侧装置,用于获取第一软件的n个文件以生成系统软件工具开发包,并发布所述系统软件工具开发包,所述n个文件为所述第一软件的系统层的文件,所述系统软件工具开发包包括所述n个文件,其中,n≥1,且n为正整数;
所述目标侧装置,用于获取所述第一软件和所述系统工具开发包,利用所述系统工具开发包编译扩展组件源代码,以生成扩展组件,并合并所述第一软件和所述扩展组件以生成第二软件。
2.根据权利要求1所述的系统,其特征在于,所述第一软件包括配置文件,所述配置文件用于指示所述n个文件在所述系统层的第一路径和在所述系统软件工具开发包的第二路径;
所述源侧装置,具体用于执行所述配置文件,将所述n个文件拷贝至所述系统软件工具开发包中的所述第二路径以生成所述系统软件工具开发包,并发布所述系统软件工具开发包。
3.根据权利要求1或2所述的系统,其特征在于,所述系统软件工具开发包还包括:模块配置文件,所述模块配置文件用于指示所述n个文件的功能;
所述目标侧装置,具体用于根据所述模块配置文件,利用所述系统软件工具开发包编译所述扩展组件源代码,生成所述扩展组件。
4.根据权利要求1至3中任一项所述的系统,其特征在于,所述源侧装置,还用于编译所述第一软件的软件源代码,生成m个文件,其中,m≥n,且m为正整数;
所述m个文件中包括所述n个文件。
5.根据权利要求1至4中任一项所述的系统,其特征在于,所述系统层包括应用框架层和/或系统库和/或硬件适配层和/或内核层。
6.根据权利要求1至5中任一项所述的系统,其特征在于,所述目标侧装置在合并所述第一软件和所述扩展组件,生成所述第二软件之前,所述目标侧装置,还用于检测所述第一软件和所述扩展组件的兼容性;
所述合并所述第一软件和所述扩展组件以生成第二软件,包括:
当所述第一软件和所述扩展组件兼容时,所述目标侧装置合并所述第一软件和所述扩展组件,生成所述第二软件。
7.根据权利要求6所述的系统,其特征在于,所述目标侧装置,还用于检测所述第一软件和所述扩展组件的兼容性,包括:
所述目标侧装置检测所述第一软件发布的第一系统软件工具开发包的版本和所述扩展组件使用的第二系统软件工具开发包的版本;
所述当所述第一软件和所述扩展组件兼容时,包括:
当所述第一系统软件工具开发包的版本与所述扩展组件使用的第二系统软件工具开发包的版本相同时,所述第一软件和所述扩展组件兼容。
8.一种用于实现软件开发的方法,其特征在于,所述方法包括:
获取第一软件的n个文件以生成系统软件工具开发包,并发布所述系统软件工具开发包,所述n个文件为所述第一软件的系统层的文件,所述系统软件工具开发包包括所述n个文件,其中,n≥1,且n为正整数。
9.根据权利要求8所述的方法,其特征在于,所述第一软件还包括配置文件,所述配置文件用于指示所述n个文件在所述系统层的第一路径和在所述系统软件工具开发包的第二路径;
所述获取第一软件的n个文件以生成系统软件工具开发包,并发布所述系统软件工具开发包,包括:
执行所述配置文件,将所述n个文件拷贝至所述系统软件工具开发包中的所述第二路径以生成所述系统软件工具开发包,并发布所述系统工具开发包。
10.根据权利要求8或9所述的方法,其特征在于,所述系统软件工具开发包还包括:模块配置文件;
所述模块配置文件用于指示所述n个文件的功能。
11.根据权利要求8至10中任一项所述的方法,其特征在于,所述方法还包括:
编译所述第一软件的软件源代码,生成m个文件,其中,m≥n,且m为正整数;
所述m个文件中包括所述n个文件。
12.根据权利要求8至11中任一项所述的方法,其特征在于,所述系统层包括应用框架层和/或系统库和/或硬件适配层和/或内核层。
13.一种用于实现软件开发的方法,其特征在于,所述方法包括:
获取第一软件和系统软件工具开发包,所述系统软件工具开发包包括n个文件,所述n个文件为所述第一软件的系统层的文件;
利用所述系统软件工具开发包编译扩展组件源代码,生成扩展组件;
合并所述扩展组件和所述第一软件,生成第二软件。
14.根据权利要求13所述的方法,其特征在于,所述第一软件包括配置文件,所述配置文件用于指示所述n个文件在所述系统层的第一路径和在所述系统软件工具开发包的第二路径。
15.根据权利要求13或14所述的方法,其特征在于,所述系统软件工具开发包还包括:模块配置文件,所述模块配置文件用于指示所述n个文件的功能;
所述利用所述系统软件工具开发包编译扩展组件源代码,生成扩展组件,包括:
根据所述模块配置文件,利用所述系统软件工具开发包编译所述扩展组件源代码,生成所述扩展组件。
16.根据权利要求13至15中任一项所述的方法,其特征在于,所述系统层包括应用框架层和/或系统库和/或硬件适配层和/或内核层。
17.根据权利要求13至16中任一项所述的方法,其特征在于,所述合并所述扩展组件和所述第一软件,生成所述第二软件之前,所述方法还包括:
检测所述第一软件和所述扩展组件的兼容性;
所述合并所述扩展组件和所述第一软件,生成第二软件,包括:
当所述第一软件和所述扩展组件兼容时,合并所述扩展组件和所述第一软件,生成所述第二软件。
18.根据权利要求17所述的方法,其特征在于,所述检测所述第一软件和所述扩展组件的兼容性,包括:
检测所述第一软件发布的第一系统软件工具开发包的版本和所述扩展组件使用的第二系统软件工具开发包的版本;
所述当所述第一软件和所述扩展组件兼容时,包括:
当所述第一系统软件工具开发包的版本与所述扩展组件使用的第二系统软件工具开发包的版本相同时,所述第一软件和所述扩展组件兼容。
19.一种电子设备,其特征在于,包括一个或多个处理器;当所述一个或多个处理器运行时,使得所述电子设备执行上述权利要求8至12中任一项所述的方法,或者,执行上述权利要求13至18中任一项所述的方法。
20.一种计算机程序,当在计算机上运行时,使得所述计算机执行上述权利要求8至12中任一项所述的方法,或者,执行上述权利要求13至18中任一项所述的方法。
21.一种计算机可读存储介质,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行上述权利要求8至12中任一项所述的方法,或者,执行上述权利要求13至18中任一项所述的方法。
22.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行如权利要求8至12中任一项所述的方法,或者执行如权利要求13至18中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110743630.8A CN115543276A (zh) | 2021-06-30 | 2021-06-30 | 一种用于实现软件开发的方法、系统以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110743630.8A CN115543276A (zh) | 2021-06-30 | 2021-06-30 | 一种用于实现软件开发的方法、系统以及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115543276A true CN115543276A (zh) | 2022-12-30 |
Family
ID=84723194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110743630.8A Pending CN115543276A (zh) | 2021-06-30 | 2021-06-30 | 一种用于实现软件开发的方法、系统以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543276A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453189A (zh) * | 2023-12-22 | 2024-01-26 | 浪潮通用软件有限公司 | 一种应用分层开发的方法、系统、设备及介质 |
-
2021
- 2021-06-30 CN CN202110743630.8A patent/CN115543276A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117453189A (zh) * | 2023-12-22 | 2024-01-26 | 浪潮通用软件有限公司 | 一种应用分层开发的方法、系统、设备及介质 |
CN117453189B (zh) * | 2023-12-22 | 2024-03-15 | 浪潮通用软件有限公司 | 一种应用分层开发的方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021103981A1 (zh) | 分屏显示的处理方法、装置及电子设备 | |
CN109559270B (zh) | 一种图像处理方法及电子设备 | |
CN112714901B (zh) | 系统导航栏的显示控制方法、图形用户界面及电子设备 | |
WO2020253758A1 (zh) | 一种用户界面布局方法及电子设备 | |
CN115473957B (zh) | 一种图像处理方法和电子设备 | |
WO2021036770A1 (zh) | 一种分屏处理方法及终端设备 | |
CN112217923B (zh) | 一种柔性屏幕的显示方法及终端 | |
CN109359262B (zh) | 动画播放方法、装置、终端及存储介质 | |
CN113553130B (zh) | 应用执行绘制操作的方法及电子设备 | |
WO2021051982A1 (zh) | 调用硬件接口的方法及电子设备 | |
CN110401768B (zh) | 调节电子设备的工作状态的方法和装置 | |
WO2022095744A1 (zh) | Vr显示控制方法、电子设备及计算机可读存储介质 | |
CN113867848A (zh) | 图形接口的调用方法、装置、设备及可读存储介质 | |
CN112437341B (zh) | 一种视频流处理方法及电子设备 | |
CN115543276A (zh) | 一种用于实现软件开发的方法、系统以及电子设备 | |
CN114444000A (zh) | 页面布局文件的生成方法、装置、电子设备以及可读存储介质 | |
WO2021238376A1 (zh) | 功能包的加载方法、装置、服务器和电子设备 | |
CN115599565A (zh) | 发送剪贴板数据的方法和装置 | |
CN115480849A (zh) | 用户界面布局方法及相关设备 | |
WO2024067551A1 (zh) | 界面显示方法及电子设备 | |
WO2024140891A1 (zh) | 一种编译方法、电子设备及系统 | |
CN114168115B (zh) | 通信系统、应用下载方法及设备 | |
WO2023207890A1 (zh) | 一种界面显示方法及电子设备 | |
CN115145647A (zh) | 应用程序的组件加载方法及相关装置 | |
CN118043836A (zh) | 一种广告归因的系统、方法以及装置 |
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 |