CN109977008B - 一种应用程序依赖的js代码与原生库兼容的方法及终端 - Google Patents
一种应用程序依赖的js代码与原生库兼容的方法及终端 Download PDFInfo
- Publication number
- CN109977008B CN109977008B CN201910131329.4A CN201910131329A CN109977008B CN 109977008 B CN109977008 B CN 109977008B CN 201910131329 A CN201910131329 A CN 201910131329A CN 109977008 B CN109977008 B CN 109977008B
- Authority
- CN
- China
- Prior art keywords
- version number
- sdk version
- code
- sdk
- number corresponding
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Abstract
本发明公开了一种应用程序依赖的JS代码与原生库兼容的方法及终端,通过在原生库和JS代码中分别添加对应JS SDK版本号的声明,在具体实现时分别获取原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号,根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容,可以保证应用程序依赖的JS代码与原生库的兼容性,避免不兼容带来的问题,防止出现JS代码构建的应用程序由于不兼容问题不可使用的情况,并且可以适用于各种JS代码与原生库的兼容检测,适用性广。
Description
技术领域
本发明涉及JS技术领域,尤其是涉及一种应用程序依赖的JS代码与原生库兼容的方法及终端。
背景技术
随着移动市场的迅速崛起,强调团队的快速响应与迭代,纯原生的开发方式已经难以满足需求,H5与React-native的开发方式凭借热更新渐渐成为主流应用的重要开发方式。
然而,H5与React-native的JS代码功能往往依赖于原生的代码支持,需要通过JS代码调用原生的注入方法来实现特定的功能,这时就需要考虑JS代码与原生代码的兼容性,否则,会因为原生代码更新而JS代码未同步导致功能异常,或者是JS代码更新后调用原生代码的接口不存在,从而导致应用崩溃等问题。
目前H5没有通用的兼容方法,而React-native官方提供的react-native link方式,仅支持相对的文件路径,且不适合热更新的兼容检查,也难以满足大型应用依赖复杂的场景(如iOS使用cocoapods引入依赖的方式)。
总之,当前还没有一种完善的方法解决JS代码与原生代码的兼容问题,需要依赖开发人员对业务进行判断和预防。
发明内容
本发明所要解决的技术问题是:提供一种应用程序依赖的JS代码与原生库兼容的方法及终端,可以保证应用程序依赖的JS代码与原生库的兼容性。
为了解决上述技术问题,本发明采用的一种技术方案为:
一种应用程序依赖的JS代码与原生库兼容的方法,包括步骤:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
为了解决上述技术问题,本发明采用的另一种技术方案为:
一种应用程序依赖的JS代码与原生库兼容的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
本发明的有益效果在于:通过在原生库和JS代码中分别添加对应JS SDK版本号的声明,在具体实现时分别获取原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号,根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容,可以保证应用程序依赖的JS代码与原生库的兼容性,避免不兼容带来的问题,防止出现JS代码构建的应用程序由于不兼容问题不可使用的情况,并且可以适用于各种JS代码与原生库的兼容检测,适用性广。
附图说明
图1为本发明实施例的一种应用程序依赖的JS代码与原生库兼容的方法的步骤流程图;
图2为本发明实施例的一种应用程序依赖的JS代码与原生库兼容的终端的结构示意图;
图3为本发明实施例的JS SDK示意图;
图4为本发明实施例的原生库声明对应JS SDK版本号的步骤流程图;
图5为本发明实施例的一种应用程序依赖的JS代码声明对应JS SDK版本号的步骤流程图;
图6为本发明实施例的一种构建应用程序的方法的步骤流程图;
图7为本发明实施例的一种热更新的方法的步骤流程图;
标号说明:
1、一种应用程序依赖的JS代码与原生库兼容的终端;2、存储器;
3、处理器。
具体实施方式
为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
名词解释:
JS SDK:JS SDK是对原生库提供的能力的抽象,原生库是提供的能力的具体实现,可以理解为是提供原生库具体实现方法的接口的集合。
本发明最关键的构思在于:根据预先声明的原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
请参照图1,一种应用程序依赖的JS代码与原生库兼容的方法,包括步骤:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
从上述描述可知,本发明的有益效果在于:通过在原生库和JS代码中分别添加对应JS SDK版本号的声明,在具体实现时分别获取原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号,根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容,可以保证应用程序依赖的JS代码与原生库的兼容性,避免不兼容带来的问题,防止出现JS代码构建的应用程序由于不兼容问题不可使用的情况,并且可以适用于各种JS代码与原生库的兼容检测,适用性广。
进一步的,所述JS SDK版本号包括高位数和低位数;
所述步骤S3具体为:
判断所述原生库对应的JS SDK版本号的高位数是否与所述JS代码对应的JS SDK版本号的高位数一致,且所述JS代码对应的JS SDK版本号的低位数是否小于或等于所述原生库对应的JS SDK版本号的低位数,若是,则判定为兼容,若否,则为不兼容。
由上述描述可知,通过比较版本号高低位判断JS代码与原生库的JS SDK是否兼容,从而确定JS代码与原生库是否兼容,可以简单快捷地进行兼容检测,提高便利性。
进一步的,所述步骤S2中获取原生库对应的JS SDK版本号具体为:
通过脚本获取所述原生库的版本信息;
根据所述原生库的版本信息从服务端查询对应的JS SDK版本号;
校验查询到的JS SDK版本号,判断校验是否通过,若是,则将该JS SDK版本号作为所述原生库对应的JS SDK版本号,若否,则报错。
由上述描述可知,获取所述原生库对应的JS SDK版本号时,通过脚本读取JS SDK的版本信息,从服务端获取对应的JS SDK版本号,再进行检验从而得出所述原生库对应的JS SDK版本号,确保所述原生库对应的JS SDK版本号无误,提高了兼容检验的可靠性。
进一步的,所述JS代码中包括预设域名;
所述步骤S1包括:
通过在JS代码的第一文件中预设字段声明JS代码对应的JS SDK版本号;
所述步骤S2中获取JS代码对应的JS SDK版本号具体为:
遍历所述预设域名下的所有第一文件,获取所有预设字段的值;
解析所有预设字段的值,获得所述预设域名下的所有JS SDK版本号;
判断所述预设域名下的所有JS SDK版本号是否互相兼容,若否,则报错,若是,则获取所述所有JS SDK版本号中最高版本的JS SDK版本号,并将所述最高版本的JS SDK版本号作为所述JS代码对应的JS SDK版本号。
由上述描述可知,通过获取所述预设域名下的所有JS SDK版本号,判断所有JSSDK版本号是否互相兼容,可以确保JS代码中的代码是互相兼容的,避免应用程序在后续使用中出错,提高可靠性,再将其中最高版本的JS SDK版本号作为所述JS代码对应的JS SDK版本号用于与原生库的兼容判断,最高版本的JS SDK版本号可以兼容剩余所有的JS SDK版本号,能够将比较JS SDK版本号的次数降到最低,快捷地实现兼容性判断,提高便利性。
进一步的,所述步骤S3还包括:
若所述应用程序依赖的JS代码和原生库兼容,则根据当前原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号构建应用程序,否则,报错;
或者,根据判断结果反馈与所述判断结果对应的JS代码构建的服务的地址。
由上述描述可知,判断JS代码和原生库是否兼容可以用于构建应用程序,可以及时检测构建的应用程序所依赖的JS代码是否与原生库兼容,在不兼容时及时报错,输出不兼容信息,避免构建的应用程序后续因不兼容导致的问题;也可以将判断结果用于已经构建好的应用程序的热更新,根据判断结果反馈与所述判断结果对应的JS代码构建的服务的地址,帮助判断下发给应用程序的代码版本,保证更新后的应用程序的可用性。
请参照图2,一种应用程序依赖的JS代码与原生库兼容的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
从上述描述可知,本发明的有益效果在于:通过在原生库和JS代码中分别添加对应JS SDK版本号的声明,在具体实现时分别获取原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号,根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容,可以保证应用程序依赖的JS代码与原生库的兼容性,避免不兼容带来的问题,防止出现JS代码构建的应用程序由于不兼容问题不可使用的情况,并且可以适用于各种JS代码与原生库的兼容检测,适用性广。
进一步的,所述JS SDK版本号包括高位数和低位数;
所述步骤S3具体为:
判断所述原生库对应的JS SDK版本号的高位数是否与所述JS代码对应的JS SDK版本号的高位数一致,且所述JS代码对应的JS SDK版本号的低位数是否小于或等于所述原生库对应的JS SDK版本号的低位数,若是,则判定为兼容,若否,则为不兼容。
由上述描述可知,通过比较版本号高低位判断JS代码与原生库的JS SDK是否兼容,从而确定JS代码与原生库是否兼容,可以简单快捷地进行兼容检测,提高便利性。
进一步的,所述步骤S2中获取原生库对应的JS SDK版本号具体为:
通过脚本获取所述原生库的版本信息;
根据所述原生库的版本信息从服务端查询对应的JS SDK版本号;
校验查询到的JS SDK版本号,判断校验是否通过,若是,则将该JS SDK版本号作为所述原生库对应的JS SDK版本号,若否,则报错。
由上述描述可知,获取所述原生库对应的JS SDK版本号时,通过脚本读取JS SDK的版本信息,从服务端获取对应的JS SDK版本号,再进行检验从而得出所述原生库对应的JS SDK版本号,确保所述原生库对应的JS SDK版本号无误,提高了兼容检验的可靠性。
进一步的,所述JS代码中包括预设域名;
所述步骤S1包括:
通过在JS代码的第一文件中预设字段声明JS代码对应的JS SDK版本号;
所述步骤S2中获取JS代码对应的JS SDK版本号具体为:
遍历所述预设域名下的所有第一文件,获取所有预设字段的值;
解析所有预设字段的值,获得所述预设域名下的所有JS SDK版本号;
判断所述预设域名下的所有JS SDK版本号是否互相兼容,若否,则报错,若是,则获取所述所有JS SDK版本号中最高版本的JS SDK版本号,并将所述最高版本的JS SDK版本号作为所述JS代码对应的JS SDK版本号。
由上述描述可知,通过获取所述预设域名下的所有JS SDK版本号,判断所有JSSDK版本号是否互相兼容,可以确保JS代码中的代码是互相兼容的,避免应用程序在后续使用中出错,提高可靠性,再将其中最高版本的JS SDK版本号作为所述JS代码对应的JS SDK版本号用于与原生库的兼容判断,最高版本的JS SDK版本号可以兼容剩余所有的JS SDK版本号,能够将比较JS SDK版本号的次数降到最低,快捷地实现兼容性判断,提高便利性。
进一步的,所述步骤S3还包括:
若所述应用程序依赖的JS代码和原生库兼容,则根据当前原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号构建应用程序,否则,报错;
或者,根据判断结果反馈与所述判断结果对应的JS代码构建的服务的地址。
由上述描述可知,判断JS代码和原生库是否兼容可以用于构建应用程序,可以及时检测构建的应用程序所依赖的JS代码是否与原生库兼容,在不兼容时及时报错,输出不兼容信息,避免构建的应用程序后续因不兼容导致的问题;也可以将判断结果用于已经构建好的应用程序的热更新,根据判断结果反馈与所述判断结果对应的JS代码构建的服务的地址,帮助判断下发给应用程序的代码版本,保证更新后的应用程序的可用性。
实施例一
请参照图1和图3-6,一种应用程序依赖的JS代码与原生库兼容的方法,包括步骤:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
其中,由于iOS端和Android端的原生库名称及版本号可能不一致,因此采用JSSDK表示原生库实现的功能,如图3所示,一个JS SDK分别对应各端的一个原生库,JS SDK是对原生库提供的能力的抽象,原生库是提供能力的具体实现。
例如JS SDK名称为rn_image,用于提供图片的下载及展示功能,对应的功能由iOS的原生库image_ios和Android的原生库image_android来实现,不同的系统有对应的原生库。
JS SDK的一个版本对应一个或者多个的原生库版本,每个JS SDK的版本提供的能力与接口都是一致的,与同一个JS SDK版本对应的原生库的多个版本,是对提供能力的具体实现,高版本的原生库是对bug的进行了修复或者功能完善;
所述JS SDK版本号包括高位数和低位数,例如JS SDK的版本号定义为x.y,x表示不兼容修改(如代码重构,接口变更),y表示兼容修改(如新增功能,已有功能不变)。
所述JS代码中包括预设域名;
具体地,如图4所示,通过在原生库的特定文件中声明所述原生库对应的JS SDK版本号,例如:
所述"rn_image":"1.0"为声明的原生库对应的JS SDK版本号;
发布所述原生库的原生版本,通过脚本读取JS SDK版本号,生成映射关系,通过接口将发布的原生库版本和对应的JS SDK版本号的映射关系保存到服务端;
如图5所示,通过在JS代码的第一文件中预设字段声明JS代码对应的JS SDK版本号;
所述JS代码的第一文件为package.json文件,所述预设字段为jssdkDependencies字段;
例如:
所述“@sdp.nd”为所述预设域名,即JS代码默认的私有的域名;
所述"jssdkDependencies"中包括各个功能各自对应的JS SDK版本号;
发布npm版本的JS代码;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
具体地,如图6所示,构建应用程序时,安装依赖的原生库,通过脚本获取所述原生库的版本信息;
根据所述原生库的版本信息从服务端查询对应的JS SDK版本号;
校验查询到的JS SDK版本号,判断校验是否通过,若是,则将该JS SDK版本号作为所述原生库对应的JS SDK版本号,若否,则报错;
其中,判断一个原生库是否提供唯一的一个JS SDK版本号,即每个原生库提供的JS SDK版本号是否都不相同,若是,则校验通过,若否,则出现多个原生库声明了相同的JSSDK版本号等情况,这时则校验不通过。
安装依赖的JS代码,通过脚本遍历所述预设域名下的所有第一文件,获取所有预设字段的值,即通过脚本遍历预设域名目录下各个包的package.json文件,获取所有jssdkDependencies字段的值;
解析所有预设字段的值,获得所述预设域名下的所有JS SDK版本号;
校验所有JS SDK版本号,判断所述预设域名下的所有JS SDK版本号是否互相兼容,若否,则报错,若是,则获取所述所有JS SDK版本号中最高版本的JS SDK版本号,并将所述最高版本的JS SDK版本号作为所述JS代码对应的JS SDK版本号,令每个功能对应的JSSDK仅存在一个版本号用于兼容判断;
其中,所述JS SDK版本号的高位数不同则表示不兼容,高位数相同,并且低位数不同或相同时则表示兼容,例如,1.1和2.0是不兼容的,1.0和1.1是兼容的,在兼容时取最高版本的JS SDK版本号即1.1作为JS代码对应的JS SDK版本号。
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
具体地,对比所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号,判断同一功能的所述原生库对应的JS SDK版本号的高位数是否与所述JS代码对应的JSSDK版本号的高位数一致,且所述JS代码对应的JS SDK版本号的低位数是否小于或等于所述原生库对应的JS SDK版本号的低位数,若是,则判定为兼容,若否,则为不兼容;
例如,JS代码声明的JS SDK版本号(a.b),原生库声明的JS SDK的版本号(c.d),在两个版本号的高位一致,并且JS代码的JS SDK版本号低位小于等于原生库的JS SDK版本号时,即a==c&&b<=d时,所述JS代码与原生库兼容;
若所述应用程序依赖的JS代码和原生库兼容,则根据当前原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号构建应用程序,具体地,上传当前的JS代码版本和原生库对应的JS SDK版本号列表完成构建,否则,输出不兼容信息,进行报错,提示哪些功能的JS SDK版本号不兼容,方便后续排查;
或者,在已有的应用程序热更新时,根据判断结果反馈与所述判断结果对应的JS代码构建的服务的地址,帮助判断下发的代码版本,保证更新后的JS代码的可用性;
具体地,若判断结果为兼容,则向请求更新的应用程序下发已构建的与所述应用程序原生库兼容的服务的地址;
若判断结果为不兼容,则返回无新的构建的服务信息,或是返回旧的构建的服务及地址。
实施例二
请参照图6,将实施例一应用于构建应用程序的具体场景,构建的应用程序依赖的JS代码与原生库不匹配,在构建阶段就阻断构建,防止应用程序上线后出现问题,避免后续的耗时处理:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
开发人员修改JS代码,修改后的JS代码需要依赖原生库的修改;
发布新的JS代码版本,同时修改jssdkDependencies字段中依赖的JS SDK的版本号高位数;
但此时原生库的开发并未完成,依旧使用原有的原生库,未对原生库进行修改;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
构建服务,安装原生库依赖,根据原生库的版本信息从服务器获取对应的JS SDK版本号;
安装新的JS代码版本,得到对应的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
对比原生库对应的JS SDK版本号和新的JS代码对应的JS SDK版本号,判断是否兼容,由于原生库未修改,因此原生库对应的JS SDK版本号和新的JS代码对应的JS SDK版本号不兼容,进行报错,从而避免JS代码与原生库不兼容在后续带来的问题,避免后续的耗时处理;
重新构建服务,指定旧版本的JS代码进行应用程序的重新构建,打包旧版本的、与原生库兼容的JS代码,上传打包好的旧版本JS代码,正常发布服务。
实施例三
请参照图7,将实施例一应用于应用程序热更新的具体场景,在修复移动应用的线上bug时:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
例如在页面样式异常时,开发人员修复导致样式异常的JS代码,但不修改原生库的代码,因此不修改原生库对应的JS SDK版本号,所述JS SDK版本号即为图中的JS SDK依赖;
发布新的JS代码版本,但不修改jssdkDependencies字段的值,即也未修改JS代码对应的JS SDK版本号;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
构建服务,安装新的JS代码版本,收集所述新的JS代码中的JS SDK版本号,完成服务的构建,得到构建结果及所述新的JS代码依赖的JS SDK版本号,并将构建结果及所述新的JS代码依赖的JS SDK版本号保存到服务端;
移动应用提供自身依赖的JS代码对应的JS SDK版本号等信息向服务端请求更新包;
服务端获取移动应用提供的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
具体地,服务端通过比对JS SDK版本号判定移动应用的JS代码和原生库兼容,返回最新的、兼容的构建结果地址,即返回服务端保存的所述新的JS代码的构建结果地址;
移动应用比对本地JS代码的JS SDK版本号与下发的构建结果地址中的JS代码对应的JS SDK版本号,决定是否更新,若本地的JS SDK版本号比下发的JS SDK版本号更高级,即本地的JS代码版本更新,则移动应用不需要进行更新,反之,则移动应用进行更新,具体的,通过下载最新的构建结果,展示最新页面,修复bug。
实施例四
请参照图7,将实施例一应用于应用程序热更新的具体的场景,在发布新功能时:
新功能依赖原生库的修改,需要在不影响线上应用的情况下实现新功能;
例如增加新的定位功能,开发人员开发了定位的功能,所述定位功能需要依赖原生库的修改;
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明;
修改原生库后更新对应JS SDK版本号的高位数,JS SDK版本号高位数不一致表示不兼容,发布新的原生库版本;
发布新的JS代码版本,同时修改jssdkDependenc ies字段中的JS SDK版本号的高位数;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
构建服务,安装新的JS代码版本,收集所述新的JS代码中的JS SDK版本号,完成服务的构建,得到构建结果及新的JS代码对应的JS SDK版本号,并将构建结果及新的JS代码对应的JS SDK版本号保存到服务端;
移动应用提供自身依赖的JS代码对应的JS SDK版本号等信息向服务端请求更新包;
服务端获取移动应用提供的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容。
具体地,服务端通过比对得出移动应用提供的JS SDK版本号与最新构建结果依赖的JS SDK不兼容,返回无新的构建结果,或返回旧的构建结果及地址;
移动应用不进行更新,从而避免了更新到新的JS代码而原生库不支持导致的功能异常问题。
实施例五
请参照图2,一种应用程序依赖的JS代码与原生库兼容的终端1,包括存储器2、处理器3及存储在存储器2上并可在所述处理器3上运行的计算机程序,所述处理器3执行所述计算机程序时实现实施例一中的各个步骤。
综上所述,本发明提供的一种应用程序依赖的JS代码与原生库兼容的方法及终端,通过在原生库和JS代码中分别添加对应JS SDK版本号的声明,在具体实现时分别通过脚本获取原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号,分别校验原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号,若校验不通过,则报错,校验通过后才根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容,提高了兼容检验的可靠性,可以保证应用程序依赖的JS代码与原生库的兼容性,避免不兼容带来的问题,防止出现JS代码构建的应用程序由于不兼容问题不可使用的情况,并且可以适用于各种JS代码与原生库的兼容检测,适用性广。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种应用程序依赖的JS代码与原生库兼容的方法,其特征在于,包括步骤:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明,所述JS SDK版本号包括高位数和低位数,所述JS代码中包括预设域名;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
所述步骤S2中获取原生库对应的JS SDK版本号具体为:
通过脚本获取所述原生库的版本信息;
根据所述原生库的版本信息从服务端查询对应的JS SDK版本号;
校验查询到的JS SDK版本号,判断校验是否通过,若是,则将该JS SDK版本号作为所述原生库对应的JS SDK版本号,若否,则报错;
所述步骤S2中获取JS代码对应的JS SDK版本号具体为:
遍历所述预设域名下的所有第一文件,获取所有预设字段的值;
解析所有预设字段的值,获得所述预设域名下的所有JS SDK版本号;
判断所述预设域名下的所有JS SDK版本号是否互相兼容,若否,则报错,若是,则获取所述所有JS SDK版本号中最高版本的JS SDK版本号,并将所述最高版本的JS SDK版本号作为所述JS代码对应的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容;
所述步骤S3具体为:
判断所述原生库对应的JS SDK版本号的高位数是否与所述JS代码对应的JS SDK版本号的高位数一致,且所述JS代码对应的JS SDK版本号的低位数是否小于或等于所述原生库对应的JS SDK版本号的低位数,若是,则判定为兼容,若否,则为不兼容;
所述步骤S3还包括:
若所述应用程序依赖的JS代码和原生库兼容,则根据当前原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号构建应用程序。
2.根据权利要求1所述的一种应用程序依赖的JS代码与原生库兼容的方法,其特征在于,所述步骤S1包括:
通过在JS代码的第一文件中预设字段声明JS代码对应的JS SDK版本号。
3.根据权利要求1所述的一种应用程序依赖的JS代码与原生库兼容的方法,其特征在于,所述步骤S3还包括:
若所述应用程序依赖的JS代码和原生库不兼容,报错;
或者,根据判断结果反馈与所述判断结果对应的JS代码构建的服务的地址。
4.一种应用程序依赖的JS代码与原生库兼容的终端,包括存储器、处理器及存储在存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现以下步骤:
S1、在原生库和JS代码中分别添加对应JS SDK版本号的声明,所述JS SDK版本号包括高位数和低位数,所述JS代码中包括预设域名;
S2、获取原生库对应的JS SDK版本号,获取JS代码对应的JS SDK版本号;
所述步骤S2中获取原生库对应的JS SDK版本号具体为:
通过脚本获取所述原生库的版本信息;
根据所述原生库的版本信息从服务端查询对应的JS SDK版本号;
校验查询到的JS SDK版本号,判断校验是否通过,若是,则将该JS SDK版本号作为所述原生库对应的JS SDK版本号,若否,则报错;
所述步骤S2中获取JS代码对应的JS SDK版本号具体为:
遍历所述预设域名下的所有第一文件,获取所有预设字段的值;
解析所有预设字段的值,获得所述预设域名下的所有JS SDK版本号;
判断所述预设域名下的所有JS SDK版本号是否互相兼容,若否,则报错,若是,则获取所述所有JS SDK版本号中最高版本的JS SDK版本号,并将所述最高版本的JS SDK版本号作为所述JS代码对应的JS SDK版本号;
S3、根据所述原生库对应的JS SDK版本号和所述JS代码对应的JS SDK版本号判断应用程序依赖的JS代码和原生库是否兼容;
所述步骤S3具体为:
判断所述原生库对应的JS SDK版本号的高位数是否与所述JS代码对应的JS SDK版本号的高位数一致,且所述JS代码对应的JS SDK版本号的低位数是否小于或等于所述原生库对应的JS SDK版本号的低位数,若是,则判定为兼容,若否,则为不兼容;
所述步骤S3还包括:
若所述应用程序依赖的JS代码和原生库兼容,则根据当前原生库对应的JS SDK版本号和JS代码对应的JS SDK版本号构建应用程序。
5.根据权利要求4所述的一种应用程序依赖的JS代码与原生库兼容的终端,其特征在于,所述步骤S1包括:
通过在JS代码的第一文件中预设字段声明JS代码对应的JS SDK版本号。
6.根据权利要求4所述的一种应用程序依赖的JS代码与原生库兼容的终端,其特征在于,所述步骤S3还包括:
若所述应用程序依赖的JS代码和原生库不兼容,报错;
或者,根据判断结果反馈与所述判断结果对应的JS代码构建的服务的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910131329.4A CN109977008B (zh) | 2019-02-22 | 2019-02-22 | 一种应用程序依赖的js代码与原生库兼容的方法及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910131329.4A CN109977008B (zh) | 2019-02-22 | 2019-02-22 | 一种应用程序依赖的js代码与原生库兼容的方法及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109977008A CN109977008A (zh) | 2019-07-05 |
CN109977008B true CN109977008B (zh) | 2022-03-29 |
Family
ID=67077228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910131329.4A Active CN109977008B (zh) | 2019-02-22 | 2019-02-22 | 一种应用程序依赖的js代码与原生库兼容的方法及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109977008B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061643B (zh) * | 2019-12-24 | 2023-03-31 | 五八同城信息技术有限公司 | Sdk集群的兼容性检测方法、装置、电子设备及存储介质 |
CN112597423B (zh) * | 2021-01-04 | 2023-11-03 | 聚好看科技股份有限公司 | 一种网页内容显示方法、终端及服务器 |
CN112764797B (zh) * | 2021-01-06 | 2023-03-21 | 浙江大华技术股份有限公司 | 软件兼容性检测方法、装置、电子装置和存储介质 |
CN112905231A (zh) * | 2021-02-04 | 2021-06-04 | 浪潮电子信息产业股份有限公司 | 一种业务系统重构方法、系统及相关装置 |
CN117421252A (zh) * | 2023-12-18 | 2024-01-19 | 荣耀终端有限公司 | 代码检测方法、装置及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017151546A1 (en) * | 2016-03-01 | 2017-09-08 | 650 Industries, Inc. | Method and apparatus for loading multiple differing versions of a native library into a native environment |
CN107391104A (zh) * | 2017-05-31 | 2017-11-24 | 杭州大搜车汽车服务有限公司 | 一种客户端与react native代码的更新依赖管理方法、装置及系统 |
CN107577491A (zh) * | 2017-08-09 | 2018-01-12 | 时趣互动(北京)科技有限公司 | 一种基于Weex的移动应用内版本更新的方法、系统 |
CN107832099A (zh) * | 2017-10-26 | 2018-03-23 | 咪咕数字传媒有限公司 | 一种客户端版本兼容的方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150193241A1 (en) * | 2012-10-24 | 2015-07-09 | OpenMobile World Wide, Inc. | Multi-operating system mobile and other computing devices with proxy applications running under a browser |
-
2019
- 2019-02-22 CN CN201910131329.4A patent/CN109977008B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017151546A1 (en) * | 2016-03-01 | 2017-09-08 | 650 Industries, Inc. | Method and apparatus for loading multiple differing versions of a native library into a native environment |
CN107391104A (zh) * | 2017-05-31 | 2017-11-24 | 杭州大搜车汽车服务有限公司 | 一种客户端与react native代码的更新依赖管理方法、装置及系统 |
CN107577491A (zh) * | 2017-08-09 | 2018-01-12 | 时趣互动(北京)科技有限公司 | 一种基于Weex的移动应用内版本更新的方法、系统 |
CN107832099A (zh) * | 2017-10-26 | 2018-03-23 | 咪咕数字传媒有限公司 | 一种客户端版本兼容的方法、装置及存储介质 |
Non-Patent Citations (3)
Title |
---|
JavaScript in mobile applications: React native vs ionic vs NativeScript vs native development;H. Brito 等;《 2018 13th Iberian Conference on Information Systems and Technologies (CISTI)》;20180628;1-6 * |
基于动态分析的javascript代码推荐;吴通 等;《计算机工程》;20141031(第10期);66-70 * |
嵌入式浏览器中Javascript和dom的支持;周林 等;《计算机工程》;20050317(第01期);114-117 * |
Also Published As
Publication number | Publication date |
---|---|
CN109977008A (zh) | 2019-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109977008B (zh) | 一种应用程序依赖的js代码与原生库兼容的方法及终端 | |
US11281570B2 (en) | Software testing method, system, apparatus, device medium, and computer program product | |
CN108459962B (zh) | 代码规范性检测方法、装置、终端设备及存储介质 | |
US9940225B2 (en) | Automated error checking system for a software application and method therefor | |
US10509693B2 (en) | Method for identifying a cause for a failure of a test | |
US20160048391A1 (en) | Systems and methods for incremental software development | |
US20160026519A1 (en) | Application Compatibility Leveraging Successful Resolution of Issues | |
US20200034282A1 (en) | Object-oriented regression-candidate filter | |
US11113050B2 (en) | Application architecture generation | |
US20230036357A1 (en) | Method and apparatus for authority control, computer device and storage medium | |
US10579513B2 (en) | Test run control method and apparatus | |
CN112395202B (zh) | 接口自动化测试方法、装置、计算机设备和存储介质 | |
US11573780B2 (en) | Automated generation of status chains for software updates | |
US20210089297A1 (en) | Automated check for ticket status of merged code | |
CN113568839A (zh) | 软件测试和统计测试覆盖率的方法、装置、设备及介质 | |
CN116775079A (zh) | 车辆零部件刷写方法、装置、电子设备及存储介质 | |
US20210026756A1 (en) | Deriving software application dependency trees for white-box testing | |
CN110737985A (zh) | 运行数据验证方法、装置、计算机设备和可读存储介质 | |
CN111240987B (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN112241370A (zh) | 一种api接口类的校验方法、系统及装置 | |
CN116594635A (zh) | 一种云原生持续集成与交付的方法及装置 | |
CN115934129A (zh) | 软件项目更新方法、装置、计算机设备及存储介质 | |
CN115757172A (zh) | 测试执行方法、装置、存储介质及计算机设备 | |
CN111367796B (zh) | 应用程序调试方法及装置 | |
US11347533B2 (en) | Enhanced virtual machine image management system |
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 |