CN112882690A - 一种应用开发方法及装置 - Google Patents

一种应用开发方法及装置 Download PDF

Info

Publication number
CN112882690A
CN112882690A CN202110117320.5A CN202110117320A CN112882690A CN 112882690 A CN112882690 A CN 112882690A CN 202110117320 A CN202110117320 A CN 202110117320A CN 112882690 A CN112882690 A CN 112882690A
Authority
CN
China
Prior art keywords
code
development
target
platform
calling
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
Application number
CN202110117320.5A
Other languages
English (en)
Other versions
CN112882690B (zh
Inventor
张全鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing ByteDance Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing ByteDance Network Technology Co Ltd filed Critical Beijing ByteDance Network Technology Co Ltd
Priority to CN202110117320.5A priority Critical patent/CN112882690B/zh
Publication of CN112882690A publication Critical patent/CN112882690A/zh
Application granted granted Critical
Publication of CN112882690B publication Critical patent/CN112882690B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种应用开发方法及装置,该方法包括:在利用跨平台开发引擎进行应用开发时,确定待调用的目标代码是否为原生开发平台的代码;若所述目标代码为所述原生开发平台的代码,则基于所述目标代码的属性信息,通过预设的外部接口调用所述原生开发平台上预设的目标函数;所述目标函数用于调用所述原生开发平台的代码;利用所述目标函数反馈的所述目标代码的调用结果进行应用开发。本公开实施例不需要对目标代码的属性信息进行编解码处理,代码调用效率较高。

Description

一种应用开发方法及装置
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种应用开发方法及装 置。
背景技术
在进行应用程序的开发时,需要使用到开发引擎,在跨平台开发引擎 中,通常包含一种或以上系统平台所需的代码,如应用程序接口(Application ProgrammingInterface,API),在需要使用这些代码时,可以直接从开发引 擎中调用。
然而,开发引擎只包含部分的针对不同平台的代码,在需要使用开发 引擎中不包含的平台代码时,需要开发人员在平台侧的集成开发环境中打 开工程项目,在工程项目中编写针对开发引擎发送给的参数的解析逻辑, 还要在开发引擎的集成开发环境中打开工程项目,编写发送参数的代码, 并且,在发送参数的前后,还需要开发引擎和开发平台对参数进行编码和 解码,整体流程较为繁琐,效率较低,且需要占用较多的计算资源。
发明内容
本公开实施例至少提供一种应用开发方法及装置。
第一方面,本公开实施例提供了一种应用开发方法,包括:
在利用跨平台开发引擎进行应用开发时,确定待调用的目标代码是否 为原生开发平台的代码;
若所述目标代码为所述原生开发平台的代码,则基于所述目标代码的 属性信息,通过预设的外部接口调用所述原生开发平台上预设的目标函数; 所述目标函数用于调用所述原生开发平台的代码;
利用所述目标函数反馈的所述目标代码的调用结果进行应用开发。
一种可选的实施方式中,所述基于所述目标代码的属性信息,通过预 设的外部接口调用所述原生开发平台上预设的目标函数,包括:
基于所述目标代码的属性信息,确定所述目标函数的调用参数;
通过所述外部接口,将所述调用参数输入至所述目标函数,以使所述 目标函数基于所述调用参数调用所述目标代码。
一种可选的实施方式中,所述基于所述目标代码的属性信息,确定所 述目标函数的调用参数,包括:
基于所述目标代码的属性信息,确定所述目标代码的类名及方法名;
将所述目标代码的类名及方法名作为所述目标函数的调用参数。
一种可选的实施方式中,所述目标函数具体用于:
基于所述调用参数中指示的类名及方法名,从所述原生开发平台的代 码中筛选出所述目标代码;
执行所述目标代码,并将执行所述目标代码产生的执行结果反馈给所 述跨平台开发引擎。
一种可选的实施方式中,所述基于所述调用参数中指示的类名及方法 名,从所述原生开发平台的代码中筛选出所述目标代码,包括:
利用原生开发工具包NDK以及Java反射机制,确定所述类名与方法 名对应的目标代码。
一种可选的实施方式中,所述跨平台开发引擎为flutter开发引擎;所 述外部接口为所述flutter开发引擎中配置的dart ffi接口。
第二方面,本公开实施例还提供一种应用开发装置,包括:
确定模块,用于在利用跨平台开发引擎进行应用开发时,确定待调用 的目标代码是否为原生开发平台的代码;
调用模块,用于若所述目标代码为所述原生开发平台的代码,则基于 所述目标代码的属性信息,通过预设的外部接口调用所述原生开发平台上 预设的目标函数;所述目标函数用于调用所述原生开发平台的代码;
开发模块,用于利用所述目标函数反馈的所述目标代码的调用结果进 行应用开发。
一种可选的实施方式中,所述调用模块在基于所述目标代码的属性信 息,通过预设的外部接口调用所述原生开发平台上预设的目标函数时,具 体用于:
基于所述目标代码的属性信息,确定所述目标函数的调用参数;
通过所述外部接口,将所述调用参数输入至所述目标函数,以使所述 目标函数基于所述调用参数调用所述目标代码。
一种可选的实施方式中,所述调用模块在基于所述目标代码的属性信 息,确定所述目标函数的调用参数时,具体用于:
基于所述目标代码的属性信息,确定所述目标代码的类名及方法名;
将所述目标代码的类名及方法名作为所述目标函数的调用参数。
一种可选的实施方式中,所述目标函数具体用于:
基于所述调用参数中指示的类名及方法名,从所述原生开发平台的代 码中筛选出所述目标代码;
执行所述目标代码,并将执行所述目标代码产生的执行结果反馈给所 述跨平台开发引擎。
一种可选的实施方式中,所述目标函数在基于所述调用参数中指示的 类名及方法名,从所述原生开发平台的代码中筛选出所述目标代码时,具 体用于:
利用原生开发工具包NDK以及Java反射机制,确定所述类名与方法 名对应的目标代码。
一种可选的实施方式中,所述跨平台开发引擎为flutter开发引擎;所 述外部接口为所述flutter开发引擎中配置的dart ffi接口。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存 储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计 算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器 可读指令被所述处理器执行时执行上述应用开发方法中任一种可能的实施 方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机 可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上 述应用开发方法中任一种可能的实施方式中的步骤。
关于上述代码调用装置、计算机设备、及计算机可读存储介质的效果 描述参见上述代码调用方法的说明,这里不再赘述。
本公开实施例提供的应用开发方法及装置,在利用跨平台开发引擎进 行应用开发时,确定待调用的目标代码是否为原生开发平台的代码;若所 述目标代码为所述原生开发平台的代码,则基于所述目标代码的属性信息, 通过预设的外部接口调用所述原生开发平台上预设的目标函数;所述目标 函数用于调用所述原生开发平台的代码;利用所述目标函数反馈的所述目 标代码的调用结果进行应用开发。本公开实施例中的目标函数能够直接利 用通过外部接口发送的目标代码的属性信息,对目标代码进行调用,只需 预先对目标代码进行配置,就能够实现通过目标代码对不同的目标函数进 行调用,不需要在原生开发平台重新编写解析逻辑,也不需要对目标代码 的属性信息进行编码与解码,开发效率较高,并降低了占用的计算资源。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实 施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需 要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书 中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于 说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施 例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在 不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种代码调用系统的示意图;
图2示出了本公开实施例所提供的一种代码调用方法的流程图;
图3示出了本公开实施例所提供的一种代码调用装置的示意图;
图4示出了本公开实施例所提供的一种计算机设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本 公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述, 显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。 通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配 置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描 述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实 施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前 提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,应用程序的开发工具所提供的代码有限,在利用开发引 擎进行某个系统平台的应用程序开发时,若需要调用开发引擎中没有提供 的代码,需要从应用程序原生的系统平台中调用。然而,开发引擎只包含 部分的针对不同平台的代码,在需要使用开发引擎中不包含的平台代码时, 需要开发人员在平台侧的集成开发环境中打开工程项目,在工程项目中编 写针对开发引擎发送给的参数的解析逻辑,还要在开发引擎的集成开发环 境中打开工程项目,编写发送参数的代码,并且,在发送参数的前后,还 需要开发引擎和开发平台对参数进行编码和解码,整体流程较为繁琐,效 率较低,且需要占用较多的计算资源。比如,在开发引擎Flutter中,在使 用Method Channel这一API进行参数传输时,需要跨平台开发引擎先对传 输的内容进行编码,才能通过Method Channel发送,在原生开发平台接收 到传输的内容后,还需要再对传输的内容进行解码,才能够使用传输的内 容,调用代码的过程复杂,效率较低。并且,要实现通过Method Channel 进行参数传输,还要对跨平台开发引擎与原生开发平台分别进行代码编写, 为了使代码编写生效,还需要重新启动原生开发平台,不利于应用程序的 开发。
具体的,利用Method Channel从安卓系统调用代码时,首先需要打开 安卓系统的集成开发环境(Integrated Development Environment,IDE),在 安卓系统上写好MethodChannel的解析逻辑,以及调用代码的逻辑,之后 再打开Flutter的集成开发环境,使用Flutter中的Method Channel传输调用 参数,较为繁琐,且需要对传输的参数进行编码和解码。
基于上述研究,本公开提供了一种代码调用方法及装置,能够通过目 标代码直接利用通过外部接口发送的目标代码的属性信息,对目标代码进 行调用,只需预先对目标代码进行配置,就能够实现通过目标代码对不同 的目标函数进行调用,不需要在原生开发平台重新编写解析逻辑,也不需 要对目标代码的属性信息进行编码与解码,开发效率较高,并降低了占用 的计算资源。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得 出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所 提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一 旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步 定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种代码 调用系统进行详细介绍。
参见图1所示,为本公开实施例所提供的一种应用开发系统。本公开 实施例所提供的应用开发系统一般为具有一定计算能力的计算机设备,该 计算机设备上可以运行有跨平台开发引擎以及原生开发平台。跨平台开发 引擎可以为Flutter,原生开发平台可以为应用程序的运行系统的开发平台, 如安卓开发平台、iOS开发平台等。跨平台开发引擎可以通过自身携带的 API与原生开发平台进行通信,将需要调用的目标代码的属性信息传输给原 生开发平台,原生开发平台能够通过定义的API基于跨平台开发引擎发送 的目标代码的属性信息,确定并执行目标代码,再将执行目标代码的返回 值传输给跨平台开发引擎。
下面以执行主体为上述代码调用系统为例对本公开实施例提供的应用 开发方法加以说明。
参见图2所示,为本公开实施例提供的应用开发方法的流程图,所述 方法包括步骤S201~S203,其中:
S201:在利用跨平台开发引擎进行应用开发时,确定待调用的目标代 码是否为原生开发平台的代码。
其中,跨平台开发引擎可以是Flutter平台,Flutter是一种开发引擎, 能够跨平台进行应用程序的开发,能够实现一套代码,在多种系统上运行。 在Flutter平台需要从原生的原生开发平台调用代码时,可以先获取待调用 的目标代码的属性信息。原生开发平台可以为安卓开发平台。
这里,目标代码的属性信息可以包括目标代码的类名和方法名。目标 代码可以是一个方法或方法集合,如API。
S202:若所述目标代码为所述原生开发平台的代码,则基于所述目标 代码的属性信息,通过预设的外部接口调用所述原生开发平台上预设的目 标函数;所述目标函数用于调用所述原生开发平台的代码。
该步骤中,跨平台开发引擎可以先获取目标代码的属性信息,在获取 了目标代码的属性信息后,可以利用预设的外部接口,调用原生开发平台 上预设的目标函数,将待调用的目标代码的属性信息作为目标函数输入的 调用参数,使目标函数利用目标代码的属性信息调用目标代码。
示例性的,预设的外部接口可以是跨平台开发引擎提供的dart:ffi接口, 该接口能够向原生开发平台传输信息,传输信息的形式可以为字符串。相 较于Method Channel端口,dart:ffi接口不需要对传输的信息进行编码,原 生开发平台也不需要对传输的信息进行解码即可直接使用,传输信息以及 代码调用的效率更高。
具体的,跨平台开发引擎可以基于属性信息确定目标函数的调用参数, 再通过外部接口,将调用参数输入至目标函数中,以使所述目标函数基于 调用参数调用目标代码。
进一步的,目标函数可以基于调用参数中指示的类名及方法名,从原 生开发平台的代码中筛选出目标代码;再执行目标代码,并将执行目标代 码产生的执行结果反馈给跨平台开发引擎。
具体的,目标函数可以利用原生开发工具包(Native Development Kit, NDK)以及Java反射机制,确定类名与方法名对应的目标代码。
其中,原生开发工具包NDK是一组可以实现在安卓应用中利用C和 C++代码的工具。
其中,目标函数可以通过原生开发工具包NDK以及Java反射机制, 确定属性信息对应的目标代码。在生成目标函数的逻辑之后,可以将其打 包成静态链接库LIB,得到目标函数。
示例性的,目标函数可以利用NDK加载Java虚拟机,从而实现在C++ 环境下运行Java代码,并基于Java反射机制,确定类名、方法名对应的目 标代码。
其中,Java反射机制是指在程序的运行状态中,可以构造任意一个类 的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变 量和方法,可以调用任意一个对象的属性和方法。
这里,目标函数的加载方式可以为分享shared方式,能够被跨平台开 发引擎调用。
S203:利用所述目标函数反馈的所述目标代码的调用结果进行应用开 发。
在获取到目标代码的调用结果后,可以利用调用结果继续进行应用的 开发,执行跨平台开发引擎后续的指令。
本公开实施例提供的应用开发方法,在利用跨平台开发引擎进行应用 开发时,确定待调用的目标代码是否为原生开发平台的代码;若所述目标 代码为所述原生开发平台的代码,则基于所述目标代码的属性信息,通过 预设的外部接口调用所述原生开发平台上预设的目标函数;所述目标函数 用于调用所述原生开发平台的代码;利用所述目标函数反馈的所述目标代 码的调用结果进行应用开发。
本公开实施例中的目标函数能够直接利用通过外部接口发送的目标代 码的属性信息,对目标代码进行调用,只需预先对目标代码进行配置,就 能够实现通过目标代码对不同的目标函数进行调用,不需要在原生开发平 台重新编写解析逻辑,也不需要对目标代码的属性信息进行编码与解码, 开发效率较高,并降低了占用的计算资源。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的 撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤 的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与代码调用方法对应的 代码调用装置,由于本公开实施例中的装置解决问题的原理与本公开实施 例上述代码调用方法相似,因此装置的实施可以参见方法的实施,重复之 处不再赘述。
参照图3所示,为本公开实施例提供的一种代码调用装置的架构示意 图,所述应用开发装置300包括:
确定模块310,用于在利用跨平台开发引擎进行应用开发时,确定待调 用的目标代码是否为原生开发平台的代码;
调用模块320,用于若所述目标代码为所述原生开发平台的代码,则基 于所述目标代码的属性信息,通过预设的外部接口调用所述原生开发平台 上预设的目标函数;所述目标函数用于调用所述原生开发平台的代码;
开发模块330,用于利用所述目标函数反馈的所述目标代码的调用结果 进行应用开发。
一种可选的实施方式中,所述调用模块320在基于所述目标代码的属 性信息,通过预设的外部接口调用所述原生开发平台上预设的目标函数时, 具体用于:
基于所述目标代码的属性信息,确定所述目标函数的调用参数;
通过所述外部接口,将所述调用参数输入至所述目标函数,以使所述 目标函数基于所述调用参数调用所述目标代码。
一种可选的实施方式中,所述调用模块320在基于所述目标代码的属 性信息,确定所述目标函数的调用参数时,具体用于:
基于所述目标代码的属性信息,确定所述目标代码的类名及方法名;
将所述目标代码的类名及方法名作为所述目标函数的调用参数。
一种可选的实施方式中,所述目标函数具体用于:
基于所述调用参数中指示的类名及方法名,从所述原生开发平台的代 码中筛选出所述目标代码;
执行所述目标代码,并将执行所述目标代码产生的执行结果反馈给所 述跨平台开发引擎。
一种可选的实施方式中,所述目标函数在基于所述调用参数中指示的 类名及方法名,从所述原生开发平台的代码中筛选出所述目标代码时,具 体用于:
利用原生开发工具包NDK以及Java反射机制,确定所述类名与方法 名对应的目标代码。
一种可选的实施方式中,所述跨平台开发引擎为flutter开发引擎;所 述外部接口为所述flutter开发引擎中配置的dart ffi接口。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述 可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图4 所示,为本公开实施例提供的计算机设备400的结构示意图,包括处理器 401、存储器402、和总线403。其中,存储器402用于存储执行指令,包 括内存4021和外部存储器4022;这里的内存4021也称内存储器,用于暂 时存放处理器401中的运算数据,以及与硬盘等外部存储器4022交换的数 据,处理器401通过内存4021与外部存储器4022进行数据交换,当计算 机设备400运行时,处理器401与存储器402之间通过总线403通信,使 得处理器401在执行上述方法实施例中所述的应用开发方法的步骤。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介 质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施 例中所述的应用开发方法的步骤。其中,该存储介质可以是易失性或非易 失的计算机可读取存储介质。
本公开实施例所提供的代码调用方法的计算机程序产品,包括存储了 程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上 述方法实施例中所述的应用开发方法的步骤,具体可参见上述方法实施例, 在此不再赘述。
本公开实施例还提供一种计算机程序,该计算机程序被处理器执行时 实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、 软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具 体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体 体现为软件产品,例如软件开发包(SoftwareDevelopment Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述 描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过 程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭 露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实 施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分, 实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或 者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所 显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信 接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形 式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的, 作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地 方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的 部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元 中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在 一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使 用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。 基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的 部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软 件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可 以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述 方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读 存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用 以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于 此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术 人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围 内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变 化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都 应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利 要求的保护范围为准。

Claims (10)

1.一种应用开发方法,其特征在于,包括:
在利用跨平台开发引擎进行应用开发时,确定待调用的目标代码是否为原生开发平台的代码;
若所述目标代码为所述原生开发平台的代码,则基于所述目标代码的属性信息,通过预设的外部接口调用所述原生开发平台上预设的目标函数;所述目标函数用于调用所述原生开发平台的代码;
利用所述目标函数反馈的所述目标代码的调用结果进行应用开发。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标代码的属性信息,通过预设的外部接口调用所述原生开发平台上预设的目标函数,包括:
基于所述目标代码的属性信息,确定所述目标函数的调用参数;
通过所述外部接口,将所述调用参数输入至所述目标函数,以使所述目标函数基于所述调用参数调用所述目标代码。
3.根据权利要求2所述的方法,其特征在于,所述基于所述目标代码的属性信息,确定所述目标函数的调用参数,包括:
基于所述目标代码的属性信息,确定所述目标代码的类名及方法名;
将所述目标代码的类名及方法名作为所述目标函数的调用参数。
4.根据权利要求3所述的方法,其特征在于,所述目标函数具体用于:
基于所述调用参数中指示的类名及方法名,从所述原生开发平台的代码中筛选出所述目标代码;
执行所述目标代码,并将执行所述目标代码产生的执行结果反馈给所述跨平台开发引擎。
5.根据权利要求4所述的方法,其特征在于,所述基于所述调用参数中指示的类名及方法名,从所述原生开发平台的代码中筛选出所述目标代码,包括:
利用原生开发工具包NDK以及Java反射机制,确定所述类名与方法名对应的目标代码。
6.根据权利要求1至5任一所述的方法,其特征在于,所述跨平台开发引擎为flutter开发引擎;所述外部接口为所述flutter开发引擎中配置的dart ffi接口。
7.一种应用开发装置,其特征在于,包括:
确定模块,用于在利用跨平台开发引擎进行应用开发时,确定待调用的目标代码是否为原生开发平台的代码;
调用模块,用于若所述目标代码为所述原生开发平台的代码,则基于所述目标代码的属性信息,通过预设的外部接口调用所述原生开发平台上预设的目标函数;所述目标函数用于调用所述原生开发平台的代码;
开发模块,用于利用所述目标函数反馈的所述目标代码的调用结果进行应用开发。
8.根据权利要求7所述的装置,其特征在于,所述跨平台开发引擎为flutter开发引擎;所述外部接口为所述flutter开发引擎中配置的dart ffi接口。
9.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一项所述的应用开发的方法的步骤。
10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一项所述的应用开发的方法的步骤。
CN202110117320.5A 2021-01-28 2021-01-28 一种应用开发方法及装置 Active CN112882690B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110117320.5A CN112882690B (zh) 2021-01-28 2021-01-28 一种应用开发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110117320.5A CN112882690B (zh) 2021-01-28 2021-01-28 一种应用开发方法及装置

Publications (2)

Publication Number Publication Date
CN112882690A true CN112882690A (zh) 2021-06-01
CN112882690B CN112882690B (zh) 2024-04-19

Family

ID=76052969

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110117320.5A Active CN112882690B (zh) 2021-01-28 2021-01-28 一种应用开发方法及装置

Country Status (1)

Country Link
CN (1) CN112882690B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113076209A (zh) * 2021-06-08 2021-07-06 贝壳技术有限公司 通信方法、装置、电子设备及存储介质
CN113687879A (zh) * 2021-07-22 2021-11-23 成都鲁易科技有限公司 跨平台框架与平台交互库的交互方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110247016A1 (en) * 2007-01-22 2011-10-06 Young-Sook Seong Method for generating cross platform program and middleware platform engine thereof
CN107678778A (zh) * 2017-03-14 2018-02-09 平安科技(深圳)有限公司 基于Hybrid的兼容方法、适配件、运行装置及系统
CN110780863A (zh) * 2019-10-25 2020-02-11 苏州浪潮智能科技有限公司 一种存储系统的跨平台开发方法、装置、设备及介质
CN110908704A (zh) * 2019-11-14 2020-03-24 亚信科技(中国)有限公司 一种移动端跨平台原生功能的调用方法及装置
CN110908712A (zh) * 2019-12-04 2020-03-24 北京中启智源数字信息技术有限责任公司 移动端跨平台的数据处理方法和设备
CN111176629A (zh) * 2019-12-24 2020-05-19 中国建设银行股份有限公司 一种应用开发的方法和装置
CN111381852A (zh) * 2020-03-10 2020-07-07 江苏满运软件科技有限公司 基于Flutter的应用动态更新方法、装置、存储介质及电子设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110247016A1 (en) * 2007-01-22 2011-10-06 Young-Sook Seong Method for generating cross platform program and middleware platform engine thereof
CN107678778A (zh) * 2017-03-14 2018-02-09 平安科技(深圳)有限公司 基于Hybrid的兼容方法、适配件、运行装置及系统
CN110780863A (zh) * 2019-10-25 2020-02-11 苏州浪潮智能科技有限公司 一种存储系统的跨平台开发方法、装置、设备及介质
CN110908704A (zh) * 2019-11-14 2020-03-24 亚信科技(中国)有限公司 一种移动端跨平台原生功能的调用方法及装置
CN110908712A (zh) * 2019-12-04 2020-03-24 北京中启智源数字信息技术有限责任公司 移动端跨平台的数据处理方法和设备
CN111176629A (zh) * 2019-12-24 2020-05-19 中国建设银行股份有限公司 一种应用开发的方法和装置
CN111381852A (zh) * 2020-03-10 2020-07-07 江苏满运软件科技有限公司 基于Flutter的应用动态更新方法、装置、存储介质及电子设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113076209A (zh) * 2021-06-08 2021-07-06 贝壳技术有限公司 通信方法、装置、电子设备及存储介质
CN113687879A (zh) * 2021-07-22 2021-11-23 成都鲁易科技有限公司 跨平台框架与平台交互库的交互方法及装置
CN113687879B (zh) * 2021-07-22 2023-05-05 成都鲁易科技有限公司 跨平台框架与平台交互库的交互方法及装置

Also Published As

Publication number Publication date
CN112882690B (zh) 2024-04-19

Similar Documents

Publication Publication Date Title
CN109408373B (zh) 智能合约的测试方法、计算机可读存储介质及测试终端
US9477450B2 (en) Manual refinement of specialized classes in runtime environments
TWI536263B (zh) 將作業系統之原始應用程式介面投射至其它程式語言
CN111367510B (zh) 一种安卓功能模块开发的方法及装置
US9965257B2 (en) Automatic configuration of project system from project capabilities
CN114089975B (zh) 计算软件的扩展方法、装置、非易失性存储介质及处理器
CN106850650B (zh) 用于游戏客户端访问数据的方法及客户端游戏系统
CN100492387C (zh) 基于Keil C51的软件保护开发的方法和系统
CN112765023A (zh) 测试用例生成方法、装置
CN112882690A (zh) 一种应用开发方法及装置
CN110795091B (zh) 一种模块化路由解耦方法、存储介质、电子设备及系统
CN115357898A (zh) 一种java组件的依赖分析方法、装置及介质
CN111159301A (zh) 一种基于智能合约的数据创建方法、装置、设备及存储介质
US7096453B2 (en) Data definition language
CN110018831B (zh) 程序处理方法、装置及计算机可读存储介质
CN111625225A (zh) 一种程序指定数据输出方法和装置
CN113835748B (zh) 基于html5的应用程序的打包方法、系统和可读介质
CN116257867A (zh) 秘钥加密方法及装置
CN106547519B (zh) 信息处理方法及系统
CN111625830B (zh) 数据处理方法、数据展示方法、系统及设备
CN112052051A (zh) 插件处理方法、装置、设备及存储介质
CN112068814A (zh) 可执行文件的生成方法、装置、系统及介质
CN110647405A (zh) 系统消息处理方法、电子设备和计算机可读存储介质
CN112306844B (zh) 软件开发系统的接口测试方法、装置、设备及存储介质
CN113778564B (zh) 一种高效执行evm智能合约的方法、设备及储存介质

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: Tiktok vision (Beijing) Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant