CN106775768B - Native代码调用系统、方法及APP混合开发系统 - Google Patents

Native代码调用系统、方法及APP混合开发系统 Download PDF

Info

Publication number
CN106775768B
CN106775768B CN201710026000.2A CN201710026000A CN106775768B CN 106775768 B CN106775768 B CN 106775768B CN 201710026000 A CN201710026000 A CN 201710026000A CN 106775768 B CN106775768 B CN 106775768B
Authority
CN
China
Prior art keywords
native
htm
request
result
native code
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.)
Active
Application number
CN201710026000.2A
Other languages
English (en)
Other versions
CN106775768A (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.)
Shenzhen Lutong Network Technology Co ltd
Original Assignee
Shenzhen Lutong 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 Shenzhen Lutong Network Technology Co ltd filed Critical Shenzhen Lutong Network Technology Co ltd
Priority to CN201710026000.2A priority Critical patent/CN106775768B/zh
Publication of CN106775768A publication Critical patent/CN106775768A/zh
Application granted granted Critical
Publication of CN106775768B publication Critical patent/CN106775768B/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/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • 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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

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)
  • Devices For Executing Special Programs (AREA)

Abstract

本申请公开了一种Native代码调用系统,包括:HTML,用于将Native代码调用请求发送至HTML代理模块,以及获取HTML代理模块发送的解析后结果;HTML代理模块,用于对Native代码代用请求进行封装,得到封装后请求,并通过Native浏览器引擎,将封装后请求传递至Native代理模块,以及对获取到的封装后结果进行解析,并将解析后结果发送至HTML;Native代理模块,用于对封装后请求进行解析,并利用解析后的请求以及Native反射机制,从Native代码库中调取并执行相应的Native代码,得到相应的调用结果,然后将调用结果进行封装,得到封装后结果,以及通过Native浏览器引擎将该封装后结果传递至HTML代理模块。本申请能够提升APP的开发效率。另外,本申请还公开了一种Native代码调用方法及APP混合开发系统。

Description

Native代码调用系统、方法及APP混合开发系统
技术领域
本发明涉及软件开发技术领域,特别涉及一种Native代码调用系统、方法及APP混合开发系统。
背景技术
在目前的APP混合开发模式中,如果HTML要调用Native代码方法,一般的做法是将Native的代码方法封装为插件,在使用之前将插件实例化为对象,然后注入到浏览器容器中。在使用时,HTML将直接使用之前注入的对象,以达到调用Native代码方法的目的;另外,也可以将Native的代码方法封装为插件,在使用之前将插件配置到插件管理模块中,在使用时HTML将需要调用的插件名称、方法名、参数等传递给插件管理模块,再由插件管理模块完成Native代码方法的调用。
然而,以上两种方式均需要将Native的代码方法封装为插件之后才能被HTML调用,由于将Native代码封装成插件的过程较为复杂,需要消耗较多的时间,并且由于在实际的APP开发过程中,通常存在大量的Native代码,这样便需要消耗更多的时间,导致APP的开发效率非常低。
综上所述可以看出,如何提高APP的开发效率是目前亟待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种Native代码调用系统、方法及APP混合开发系统,能够提高APP的开发效率。其具体方案如下:
一种应用于混合开发的Native代码调用系统,包括HTML、HTML代理模块、Native浏览器引擎、Native代理模块和Native代码库;其中,
所述HTML,用于将Native代码调用请求发送至所述HTML代理模块,以及获取所述HTML代理模块发送的解析后结果;
所述HTML代理模块,用于对所述Native代码代用请求进行封装,得到封装后请求,并通过所述Native浏览器引擎,将所述封装后请求传递至所述Native代理模块,以及对获取到的封装后结果进行解析,并将解析后结果发送至所述HTML;
所述Native代理模块,用于对所述封装后请求进行解析,并利用解析后的请求以及Native反射机制,从所述Native代码库中调取并执行相应的Native代码,得到相应的调用结果,然后将所述调用结果进行封装,得到封装后结果,以及通过所述Native浏览器引擎将该封装后结果传递至所述HTML代理模块。
可选的,所述Native代码库中包括Native语言本身自带的代码和/或基于所述Native语言开发的代码;
其中,所述Native语言包括Objective-C语言和/或Java语言和/或C#语言。
可选的,所述Native反射机制包括Objective-C反射机制和/或Java反射机制和/或C#反射机制。
可选的,所述Native浏览器引擎包括WebKit或Chromium或Trident。
本发明进一步公开了一种APP混合开发系统,包括前述公开的Native代码调用系统。
本发明还相应公开了一种应用于混合开发的Native代码调用方法,包括:
获取HTML发送的Native代码调用请求;
对所述Native代码代用请求进行封装,得到封装后请求,并将所述封装后请求传递至Native浏览器引擎;
对所述Native浏览器引擎输出的所述封装后请求进行解析;
根据解析后的请求以及Native反射机制,从Native代码库中调取并执行相应的Native代码,得到相应的调用结果;
将所述调用结果进行封装,得到封装后结果,并将所述封装后结果传递至所述Native浏览器引擎;
对所述Native浏览器引擎输出的所述封装后结果进行解析,并将解析后结果发送至所述HTML。
可选的,所述Native代码库中包括Native语言本身自带的代码和/或基于所述Native语言开发的代码;
其中,所述Native语言包括Objective-C语言和/或Java语言和/或C#语言。
可选的,所述Native反射机制包括Objective-C反射机制和/或Java反射机制和/或C#反射机制。
可选的,所述Native浏览器引擎包括WebKit或Chromium或Trident。
本发明中,Native代码调用系统,包括HTML、HTML代理模块、Native浏览器引擎、Native代理模块和Native代码库;其中,HTML,用于将Native代码调用请求发送至HTML代理模块,以及获取HTML代理模块发送的解析后结果;HTML代理模块,用于对Native代码代用请求进行封装,得到封装后请求,并通过Native浏览器引擎,将封装后请求传递至Native代理模块,以及对获取到的封装后结果进行解析,并将解析后结果发送至HTML;Native代理模块,用于对封装后请求进行解析,并利用解析后的请求以及Native反射机制,从Native代码库中调取并执行相应的Native代码,得到相应的调用结果,然后将调用结果进行封装,得到封装后结果,以及通过Native浏览器引擎将该封装后结果传递至HTML代理模块。
可见,本发明通过设置HTML代理模块和Native代理模块,并利用Native反射机制,实现对Native代码的直接调用,这样便无需预先将Native代码封装成插件,从而避免了封装插件这一繁琐过程,由此可大幅提升APP的开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种应用于混合开发的Native代码调用系统结构示意图;
图2为本发明实施例公开的一种应用于混合开发的Native代码调用方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种应用于混合开发的Native代码调用系统,参见图1所示,该系统包括HTML11、HTML代理模块12、Native浏览器引擎13、Native代理模块14和Native代码库15;其中,
HTML11,用于将Native代码调用请求发送至HTML代理模块12,以及获取HTML代理模块12发送的解析后结果;
HTML代理模块12,用于对Native代码代用请求进行封装,得到封装后请求,并通过Native浏览器引擎13,将封装后请求传递至Native代理模块14,以及对获取到的封装后结果进行解析,并将解析后结果发送至HTML11;
Native代理模块14,用于对封装后请求进行解析,并利用解析后的请求以及Native反射机制,从Native代码库15中调取并执行相应的Native代码,得到相应的调用结果,然后将调用结果进行封装,得到封装后结果,以及通过Native浏览器引擎13将该封装后结果传递至HTML代理模块12。
具体的,上述Native代码库中包括Native语言本身自带的代码和/或基于Native语言开发的代码;
本实施例中,上述Native语言可以包括Objective-C语言和/或Java语言和/或C#语言。
相应的,上述Native反射机制具体可以包括Objective-C反射机制和/或Java反射机制和/或C#反射机制。
另外,本实施例中的Native浏览器引擎包括WebKit或Chromium或Trident。
可见,本发明实施例通过设置HTML代理模块和Native代理模块,并利用Native反射机制,实现对Native代码的直接调用,这样便无需预先将Native代码封装成插件,从而避免了封装插件这一繁琐过程,由此可大幅提升APP的开发效率。
进一步,本发明实施例还公开了一种APP混合开发系统,包括前述实施例公开的Native代码调用系统。关于该Native代码调用系统的具体构造可以参考前述实施例中公开的相应内容,在此不再进行赘述。
相应的,本发明实施例还公开了一种应用于混合开发的Native代码调用方法,参见图2所示,该方法包括:
步骤S11:获取HTML发送的Native代码调用请求;
步骤S12:对Native代码代用请求进行封装,得到封装后请求,并将封装后请求传递至Native浏览器引擎;
步骤S13:对Native浏览器引擎输出的封装后请求进行解析;
步骤S14:根据解析后的请求以及Native反射机制,从Native代码库中调取并执行相应的Native代码,得到相应的调用结果;
步骤S15:将调用结果进行封装,得到封装后结果,并将封装后结果传递至Native浏览器引擎;
步骤S16:对Native浏览器引擎输出的封装后结果进行解析,并将解析后结果发送至HTML。
本实施例中,上述Native代码库中包括Native语言本身自带的代码和/或基于Native语言开发的代码;其中,Native语言包括Objective-C语言和/或Java语言和/或C#语言。
另外,上述Native反射机制包括Objective-C反射机制和/或Java反射机制和/或C#反射机制。
进一步的,上述Native浏览器引擎包括WebKit或Chromium或Trident。
可见,本发明实施例可基于Native反射机制实现了对Native代码的直接调用,这样便无需预先将Native代码封装成插件,从而避免了封装插件这一繁琐过程,由此可大幅提升APP的开发效率。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的一种Native代码调用系统、方法及APP混合开发系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (7)

1.一种应用于混合开发的Native代码调用系统,其特征在于,包括HTML、HTML代理模块、Native浏览器引擎、Native代理模块和Native代码库;其中,
所述HTML,用于将Native代码调用请求发送至所述HTML代理模块,以及获取所述HTML代理模块发送的解析后结果;
所述HTML代理模块,用于对所述Native代码代用请求进行封装,得到封装后请求,并通过所述Native浏览器引擎,将所述封装后请求传递至所述Native代理模块,以及对获取到的封装后结果进行解析,并将解析后结果发送至所述HTML;
所述Native代理模块,用于对所述封装后请求进行解析,并利用解析后的请求以及Native反射机制,从所述Native代码库中调取并执行相应的Native代码,得到相应的调用结果,然后将所述调用结果进行封装,得到封装后结果,以及通过所述Native浏览器引擎将该封装后结果传递至所述HTML代理模块;
其中,所述Native浏览器引擎包括WebKit或Chromium或Trident。
2.根据权利要求1所述的Native代码调用系统,其特征在于,
所述Native代码库中包括Native语言本身自带的代码和/或基于所述Native语言开发的代码;
其中,所述Native语言包括Objective-C语言和/或Java语言和/或C#语言。
3.根据权利要求1所述的Native代码调用系统,其特征在于,
所述Native反射机制包括Objective-C反射机制和/或Java反射机制和/或C#反射机制。
4.一种APP混合开发系统,其特征在于,包括如权利要求1至3任一项所述的Native代码调用系统。
5.一种应用于混合开发的Native代码调用方法,其特征在于,包括:
获取HTML发送的Native代码调用请求;
对所述Native代码代用请求进行封装,得到封装后请求,并将所述封装后请求传递至Native浏览器引擎;
对所述Native浏览器引擎输出的所述封装后请求进行解析;
根据解析后的请求以及Native反射机制,从Native代码库中调取并执行相应的Native代码,得到相应的调用结果;
将所述调用结果进行封装,得到封装后结果,并将所述封装后结果传递至所述Native浏览器引擎;
对所述Native浏览器引擎输出的所述封装后结果进行解析,并将解析后结果发送至所述HTML;
其中,所述Native浏览器引擎包括WebKit或Chromium或Trident。
6.根据权利要求5所述的Native代码调用方法,其特征在于,
所述Native代码库中包括Native语言本身自带的代码和/或基于所述Native语言开发的代码;
其中,所述Native语言包括Objective-C语言和/或Java语言和/或C#语言。
7.根据权利要求5所述的Native代码调用方法,其特征在于,
所述Native反射机制包括Objective-C反射机制和/或Java反射机制和/或C#反射机制。
CN201710026000.2A 2017-01-13 2017-01-13 Native代码调用系统、方法及APP混合开发系统 Active CN106775768B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710026000.2A CN106775768B (zh) 2017-01-13 2017-01-13 Native代码调用系统、方法及APP混合开发系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710026000.2A CN106775768B (zh) 2017-01-13 2017-01-13 Native代码调用系统、方法及APP混合开发系统

Publications (2)

Publication Number Publication Date
CN106775768A CN106775768A (zh) 2017-05-31
CN106775768B true CN106775768B (zh) 2020-08-07

Family

ID=58945379

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710026000.2A Active CN106775768B (zh) 2017-01-13 2017-01-13 Native代码调用系统、方法及APP混合开发系统

Country Status (1)

Country Link
CN (1) CN106775768B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115185712B (zh) * 2022-09-08 2022-12-27 中化现代农业有限公司 数据交互方法、装置、电子设备和存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102945169A (zh) * 2012-12-05 2013-02-27 江苏鸿信系统集成有限公司 一种基于Android的Native APP融合Web APP开发系统
CN103677843B (zh) * 2013-12-19 2017-05-10 深圳市蓝凌软件股份有限公司 一种跨移动终端的native能力开发方法及装置
CN106909361B (zh) * 2015-12-23 2020-07-14 任子行网络技术股份有限公司 基于模版引擎的web开发方法和装置

Also Published As

Publication number Publication date
CN106775768A (zh) 2017-05-31

Similar Documents

Publication Publication Date Title
CN111176626B (zh) 跨编程语言的代码调用方法及装置、介质、设备
CN109002362B (zh) 一种服务方法、装置、系统以及电子设备
CN109857515B (zh) 桥接通信方法、装置、设备及计算机可读存储介质
CN110377438B (zh) 跨进程通信接口的路由方法、装置和系统
CN111240684B (zh) 一种js代码的裁剪方法、装置、介质和电子设备
US9569292B2 (en) Remotable contracts for the web
CN109240697B (zh) 调用处理方法及装置、存储介质
CN111381817A (zh) 实现跨平台多语言开发的方法、装置、介质和电子设备
WO2013097592A1 (zh) 脚本加载技术
CN113805890B (zh) 小程序跨应用迁移方法、设备、终端、系统及存储介质
CN109343975B (zh) 用于页面间异步通信的方法和装置
CN103618699A (zh) 一种调用组件的方法及装置
JP2006195979A (ja) ウェブアプリケーションアーキテクチャ
CN114116062A (zh) 一种在鸿蒙兼容运行安卓h5的方法、设备、存储介质
US20110145699A1 (en) Annotation driven representational state transfer (rest) web services
CN105743955A (zh) 一种扩展JavaScript对象方法
CN107977274B (zh) Sdk调用的控制方法及装置
US9942267B1 (en) Endpoint segregation to prevent scripting attacks
CN109725887B (zh) 基于消息研发框架的数据交互方法、装置及终端设备
CN106775768B (zh) Native代码调用系统、方法及APP混合开发系统
CN105243088A (zh) Android系统中获取网页内容的方法及装置
CN113094026A (zh) 代码处理方法和装置
CN107239265B (zh) Java函数与C函数的绑定方法及装置
CN111443946A (zh) Ios系统与页面的交互方法、系统、服务器和存储介质
CN113055393B (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
GR01 Patent grant
GR01 Patent grant