CN111651156A - 一种适配多种开发语言的软件开发工具包和调用方法 - Google Patents
一种适配多种开发语言的软件开发工具包和调用方法 Download PDFInfo
- Publication number
- CN111651156A CN111651156A CN202010500481.8A CN202010500481A CN111651156A CN 111651156 A CN111651156 A CN 111651156A CN 202010500481 A CN202010500481 A CN 202010500481A CN 111651156 A CN111651156 A CN 111651156A
- Authority
- CN
- China
- Prior art keywords
- interface
- dynamic library
- language
- core dynamic
- functions
- 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
- G06F8/36—Software reuse
-
- 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
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Abstract
本发明属于通信领域,公开了一种适配多种开发语言的软件开发工具包,包括接口层、核心动态库;所述接口层含有多种不同语言的接口API;所述核心动态库采用C或C++语言开发生成,其内封装有多种不同功能的函数;各接口API通过不同的工具调用核心动态库的函数。该工具包包含了接口层、核心动态库,各种不同开发语言的APP可通过接口层调用不同功能函数,且核心动态库采用C或C++语言生成,其统一对核心业务逻辑进行编译加密,实现了对核心业务逻辑统一加密的目的。此外,本发明还公开了一种不同开发语言的APP调用核心动态库的方法。
Description
技术领域
本发明涉及通讯领域,特别是一种适配多种开发语言的软件开发工具包和调用方法。
背景技术
现有平台针对设备端提供不同语言的软件开发工具包(SDK)都是通过不同的语言,然后封装一套SDK,同样的业务逻辑或功能需要在不同的语言中实现一遍,对于SDK的加密需要根据不同的语言支持力度借助第三方工具进行实现。
以JAVA语言打包SDK为例,具体可参考网站:
“https://blog.csdn.net/weixin_30565199/article/details/95161643”,其内记载了如何通过JAVA程序去生成一个SDK,包括如下步骤:
步骤1:将java通过jni生成头文件,并导入到c++项目并对c++进行jni方法继承;
步骤2:c++是多线程回调,需要将当前线程注册到虚拟机中用到AttachCurrentThread;
步骤3:在java写主调函数和回调函数在主调初始化的时候将回调类做为参数传进去;
步骤4:将c++动态库回调数据进行处理的可以继承回调类接口;
步骤5:将项目进行打包并提供动态库给客户。
由此可见,当任意的不同的开发语言如果要使用动态库,需要通过对应语言进行实现。
这对于多种不同的开发语言的应用要调用相同或类似的动态库时,造成了大量的重复性的工作。特别是对于动态库提供的厂家来说,如果还需要对动态库中各种功能的函数的实现方法进行加密时,需要采用适用于不同语言的加密手段来进行,其操作难度更大,保密性更差。
所以,本案所要解决的技术问题是:如何开发出一种可为多种不同开发语言的app调用的SDK,同时保证其功能函数的破译难度。
发明内容
本发明的目的是提供一种适配多种开发语言的软件开发工具包,该工具包包含了接口层、核心动态库,各种不同开发语言的APP可通过接口层调用不同功能函数,且核心动态库采用C或C++语言生成,其统一对核心业务逻辑进行编译加密,实现了对核心业务逻辑统一加密的目的。
此外,本发明还公开了一种不同开发语言的APP调用核心动态库的方法。
本发明提供的技术方案为:一种适配多种开发语言的软件开发工具包,包括接口层、核心动态库;
所述接口层含有多种不同语言的接口API;
所述核心动态库采用C或C++语言开发生成,其内封装有多种不同功能的函数;
各接口API通过不同的工具调用核心动态库的函数。
在上述的适配多种开发语言的软件开发工具包中,所述接口API包括JAVA语言的接口、python语言的接口、C#语言的接口、NodeJs语言的接口中的两种或多种。
在上述的适配多种开发语言的软件开发工具包中,所述JAVA语言的接口通过JNI或JNA技术调用核心动态库的函数;所述python语言的接口通过ctypes模块调用核心动态库的函数;所述NodeJs语言的接口通过ffi技术调用核心动态库的函数。
在上述的适配多种开发语言的软件开发工具包中,所述核心动态库的多种函数用于分别实现报文压缩、报文加密、注册平台、激活客户端、版本控制、统一数据格式、与平台交互中的两种或多种功能。
同时,本发明还公开了一种不同开发语言的APP调用核心动态库的方法,所述方法涉及应用APP和如上所述软件开发工具包;
所述方法具体为:根据应用APP的开发语言的种类调用接口层中对应的语言的接口API,通过调用接口API调用核心动态库应用APP所需的功能的函数。
本发明在采用上述技术方案后,其具有的有益效果为:
本方案提出的方案使用户只需要基于接口编程即可实现SDK内部功能的调用,从而解决不同开发语言下相同业务的重复开发问题和对核心业务逻辑统一加密的目的。
附图说明
图1是本发明实施例1的结构方框图。
具体实施方式
下面结合具体实施方式,对本发明的技术方案作进一步的详细说明,但不构成对本发明的任何限制。
实施例1:
参考图1,一种适配多种开发语言的软件开发工具包,包括接口层、核心动态库;
所述接口层含有多种不同语言的接口API;所述接口API包括JAVA语言的接口、python语言的接口、C#语言的接口、NodeJs语言的接口中的两种或多种;
所述核心动态库采用C或C++语言开发生成,其内封装有多种不同功能的函数;所述函数用于分别实现报文压缩、报文加密、注册平台、激活客户端、版本控制、统一数据格式、与平台交互中的两种或多种功能。
其中,各接口API通过不同的工具调用核心动态库的函数,比如:JAVA语言的接口通过JNI或JNA技术调用核心动态库的函数;所述python语言的接口通过ctypes模块调用核心动态库的函数;所述NodeJs语言的接口通过ffi技术调用核心动态库的函数。
在APP调用相关的软件开发工具包时的具体操作如下:
以Android手机应用为例,其在需要调用核心数据库的函数时,通过SDK内自带的JAVA语言的接口(JAVA-API)来调用核心动态库的函数;JAVA-API通过JNI或JNA技术调用基于C或C++语言的核心动态库的函数,优选通过JNA技术。
Android手机应用如果要调用SDK时,在Android应用中使用SDK流程如下:
1.在Android应用中导入sdk包,也可以通过比如Maven,gralde工具自动构建;
2.在Android应用中通过调用SDK暴露的Java-ApiQueryJava-API对接口进行调用
举例说明,如下:
比如提供一个查询天气的SDK,具体查询天气的执行操作通过c或c++语言封装并生成了一个.so的库,主要提供queryWeather(city)的方法,然后通过Java语言进行了一次包装Java的WeatherHelp类,对外提供getWeather(String city)的方法,在其内部通过Java-JNI的方式调用.so的queryWeather方法。以上内容更统一被打包成一个weather.jar的java-sdk提供给Android程序,其调用如下
1.在Android中引入weather.jar包(maven构建方式)
2.直接在应用中通过调用WeatherHelp类的getWeather()方法查询对应城市的天气信息
与Android手机应用同理,IOS应用通过SDK内自带的python语言的接口,python语言的接口中自带ctypes模块,基于ctypes模块,python语言和C或C++语言能够进行数据交互,以此调用核心动态库的函数。
本发明的优势在于:使用户只需要基于接口编程即可实现SDK内部功能的调用,从而解决不同开发语言下相同业务的重复开发问题和达到对核心业务逻辑统一加密的目的。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其它的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (5)
1.一种适配多种开发语言的软件开发工具包,其特征在于,包括接口层、核心动态库;
所述接口层含有多种不同语言的接口API;
所述核心动态库采用C或C++语言开发生成,其内封装有多种不同功能的函数;
各接口API通过不同的工具调用核心动态库的函数。
2.根据权利要求1所述的适配多种开发语言的软件开发工具包,其特征在于,所述接口API包括JAVA语言的接口、python语言的接口、C#语言的接口、NodeJs语言的接口中的两种或多种。
3.根据权利要求2所述的适配多种开发语言的软件开发工具包,其特征在于,所述JAVA语言的接口通过JNI或JNA技术调用核心动态库的函数;所述python语言的接口通过ctypes模块调用核心动态库的函数;所述NodeJs语言的接口通过ffi技术调用核心动态库的函数。
4.根据权利要求1所述的适配多种开发语言的软件开发工具包,其特征在于,所述核心动态库的多种函数用于分别实现报文压缩、报文加密、注册平台、激活客户端、版本控制、统一数据格式、与平台交互中的两种或多种功能。
5.一种不同开发语言的APP调用核心动态库的方法,其特征在于,所述方法涉及应用APP和如权利要求1-4任一所述软件开发工具包;
所述方法具体为:根据应用APP的开发语言的种类调用接口层中对应的语言的接口API,通过调用接口API调用核心动态库应用APP所需的功能的函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010500481.8A CN111651156A (zh) | 2020-06-04 | 2020-06-04 | 一种适配多种开发语言的软件开发工具包和调用方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010500481.8A CN111651156A (zh) | 2020-06-04 | 2020-06-04 | 一种适配多种开发语言的软件开发工具包和调用方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111651156A true CN111651156A (zh) | 2020-09-11 |
Family
ID=72347298
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010500481.8A Pending CN111651156A (zh) | 2020-06-04 | 2020-06-04 | 一种适配多种开发语言的软件开发工具包和调用方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111651156A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113326033A (zh) * | 2021-06-09 | 2021-08-31 | 北京八分量信息科技有限公司 | 一种带有多种语言API的key-value存储系统 |
CN113778394A (zh) * | 2021-08-18 | 2021-12-10 | 北京城市网邻信息技术有限公司 | Sdk适配方法、装置、电子设备及存储介质 |
CN114157996A (zh) * | 2021-11-09 | 2022-03-08 | 天津七一二移动通信有限公司 | 一种基于lte的无线调度台的实现方法 |
CN113645303B (zh) * | 2021-08-11 | 2024-04-23 | 曙光信息产业(北京)有限公司 | 数据传输方法、装置、计算机设备及存储介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635737A (zh) * | 2003-12-26 | 2005-07-06 | 华为技术有限公司 | 一种智能业务的实现方法 |
CN102331928A (zh) * | 2011-06-24 | 2012-01-25 | 浙大网新科技股份有限公司 | 一种源码级兼容混合api的方法 |
CN102622211A (zh) * | 2011-01-27 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种应用程序开发的方法和装置 |
CN102750152A (zh) * | 2012-06-21 | 2012-10-24 | 新浪网技术(中国)有限公司 | 一种基于描述语言生成多种编程语言的应用的方法及装置 |
CN102760219A (zh) * | 2011-12-20 | 2012-10-31 | 北京安天电子设备有限公司 | 一种Android平台软件保护系统、方法及设备 |
CN103051946A (zh) * | 2012-12-26 | 2013-04-17 | 四川九洲电器集团有限责任公司 | 基于Android系统的通用RTSP流播放器 |
JP2013097747A (ja) * | 2011-11-05 | 2013-05-20 | Kyocera Document Solutions Inc | ソフトウェア開発キット |
CN103309718A (zh) * | 2012-03-08 | 2013-09-18 | 上海振华重工(集团)股份有限公司 | 在工业组态软件中二次开发的方法 |
CN105183470A (zh) * | 2015-09-06 | 2015-12-23 | 东南大学 | 一种自然语言处理系统化服务平台 |
CN105718251A (zh) * | 2014-12-03 | 2016-06-29 | 苏宁云商集团股份有限公司 | 多语言sdk自动化实现方法及系统 |
US20170102925A1 (en) * | 2014-03-26 | 2017-04-13 | Syed Adeel Ali | Automatch process and system for software development kit for application programming interface |
CN108897533A (zh) * | 2018-06-06 | 2018-11-27 | 北京奇虎科技有限公司 | 一种函数调用的方法、装置及终端 |
CN109299587A (zh) * | 2018-09-11 | 2019-02-01 | 平安科技(深圳)有限公司 | 基于go语言的算法保护方法、装置、设备及存储介质 |
CN109871284A (zh) * | 2017-12-05 | 2019-06-11 | 北京元比特科技有限责任公司 | 一种应用程序跨语言运行时环境执行的虚拟化技术及方法 |
CN110032451A (zh) * | 2019-04-18 | 2019-07-19 | 成都四方伟业软件股份有限公司 | 分布式多语言消息实现方法、装置及服务器 |
-
2020
- 2020-06-04 CN CN202010500481.8A patent/CN111651156A/zh active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1635737A (zh) * | 2003-12-26 | 2005-07-06 | 华为技术有限公司 | 一种智能业务的实现方法 |
CN102622211A (zh) * | 2011-01-27 | 2012-08-01 | 腾讯科技(深圳)有限公司 | 一种应用程序开发的方法和装置 |
CN102331928A (zh) * | 2011-06-24 | 2012-01-25 | 浙大网新科技股份有限公司 | 一种源码级兼容混合api的方法 |
JP2013097747A (ja) * | 2011-11-05 | 2013-05-20 | Kyocera Document Solutions Inc | ソフトウェア開発キット |
CN102760219A (zh) * | 2011-12-20 | 2012-10-31 | 北京安天电子设备有限公司 | 一种Android平台软件保护系统、方法及设备 |
CN103309718A (zh) * | 2012-03-08 | 2013-09-18 | 上海振华重工(集团)股份有限公司 | 在工业组态软件中二次开发的方法 |
CN102750152A (zh) * | 2012-06-21 | 2012-10-24 | 新浪网技术(中国)有限公司 | 一种基于描述语言生成多种编程语言的应用的方法及装置 |
CN103051946A (zh) * | 2012-12-26 | 2013-04-17 | 四川九洲电器集团有限责任公司 | 基于Android系统的通用RTSP流播放器 |
US20170102925A1 (en) * | 2014-03-26 | 2017-04-13 | Syed Adeel Ali | Automatch process and system for software development kit for application programming interface |
CN105718251A (zh) * | 2014-12-03 | 2016-06-29 | 苏宁云商集团股份有限公司 | 多语言sdk自动化实现方法及系统 |
CN105183470A (zh) * | 2015-09-06 | 2015-12-23 | 东南大学 | 一种自然语言处理系统化服务平台 |
CN109871284A (zh) * | 2017-12-05 | 2019-06-11 | 北京元比特科技有限责任公司 | 一种应用程序跨语言运行时环境执行的虚拟化技术及方法 |
CN108897533A (zh) * | 2018-06-06 | 2018-11-27 | 北京奇虎科技有限公司 | 一种函数调用的方法、装置及终端 |
CN109299587A (zh) * | 2018-09-11 | 2019-02-01 | 平安科技(深圳)有限公司 | 基于go语言的算法保护方法、装置、设备及存储介质 |
CN110032451A (zh) * | 2019-04-18 | 2019-07-19 | 成都四方伟业软件股份有限公司 | 分布式多语言消息实现方法、装置及服务器 |
Non-Patent Citations (1)
Title |
---|
张飞: "《高性能Android开发技术》", pages: 321 - 322 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113326033A (zh) * | 2021-06-09 | 2021-08-31 | 北京八分量信息科技有限公司 | 一种带有多种语言API的key-value存储系统 |
CN113326033B (zh) * | 2021-06-09 | 2023-08-11 | 北京八分量信息科技有限公司 | 一种带有多种语言API的key-value存储系统 |
CN113645303B (zh) * | 2021-08-11 | 2024-04-23 | 曙光信息产业(北京)有限公司 | 数据传输方法、装置、计算机设备及存储介质 |
CN113778394A (zh) * | 2021-08-18 | 2021-12-10 | 北京城市网邻信息技术有限公司 | Sdk适配方法、装置、电子设备及存储介质 |
CN114157996A (zh) * | 2021-11-09 | 2022-03-08 | 天津七一二移动通信有限公司 | 一种基于lte的无线调度台的实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111651156A (zh) | 一种适配多种开发语言的软件开发工具包和调用方法 | |
CN108733988B (zh) | 安卓平台上可执行程序的保护方法 | |
CN107526624B (zh) | 一种基于Java虚拟机的智能合约执行引擎 | |
US9396313B2 (en) | Apparatus for tamper protection of application code and method thereof | |
CN108255545B (zh) | 组件间的功能调用方法、装置及组件化架构系统 | |
CN103902859A (zh) | 基于JAVA下hook技术的代码保护方法及系统 | |
CN105068818A (zh) | 生成渠道包的方法、装置与批量生成渠道包的方法、系统 | |
JP2016503543A (ja) | 自己書換え基盤のアプリケーションコード難読化装置及びその方法 | |
CN106548046B (zh) | 一种保护代码的装置和方法 | |
CN105022936A (zh) | 一种类class文件加密解密方法和装置 | |
US20180067777A1 (en) | Application protection method, server, and terminal | |
CN103218549A (zh) | 一种Java源代码加解密的方法及装置 | |
CN110414261A (zh) | 一种数据脱敏方法、装置、设备及可读存储介质 | |
CN104254835A (zh) | 软件定义的无线电应用的分发、设置及执行方法 | |
CN109784039B (zh) | 移动终端安全运行空间的构建方法、电子设备、存储介质 | |
CN105978929B (zh) | 不同移动终端平台与后端服务器的数据交互方法及系统 | |
CN109840400B (zh) | 提供安全性的设备和方法以及针对通用中间语言执行安全性的设备和方法 | |
CN111416816A (zh) | 联调接口的访问方法、装置、计算机设备和存储介质 | |
CN105005497A (zh) | 一种Java卡虚拟机中本地函数的调用方法及装置 | |
CN112988175A (zh) | 跨平台应用安装包的生成方法、装置、介质及电子设备 | |
CN115238298A (zh) | 一种实现数据库敏感字段脱敏的方法及装置 | |
WO2012129864A1 (zh) | 一种以脚本形式表示增值业务流程的实现方法和系统 | |
CN111381816A (zh) | 应用程序的获取方法、装置、设备及存储介质 | |
CN108804088B (zh) | 协议处理方法和装置 | |
US20110321009A1 (en) | Implementing encryption via aspect oriented programming |
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: 511356 Room 501, building 2, No. 63, Yong'an Avenue, Huangpu District, Guangzhou, Guangdong Applicant after: Guangzhou lubangtong Internet of things Technology Co.,Ltd. Address before: 510653 room F315, No. 95, Daguan Middle Road, Tianhe District, Guangzhou, Guangdong Province (office only) (not for plant use) Applicant before: GUANGZHOU ROBUSTEL TECHNOLOGIES Co.,Ltd. |