本发明涉及应用程序技术领域,尤其涉及一种调试发布包的方法、装置、电子设备及介质。
背景技术:
应用程序(application,app)能够在移动终端中实现各种功能,在用户使用移动终端时不可或缺。在应用程序的开发、维护过程中,调试是重要环节。
目前,对于已发布到各个应用商店公开给用户的应用程序发布包,常用的调试方法是直接将控制代码植入到发布包内部,通过点击隐藏按钮或者是长按某个按钮来触发控制页面,然后通过控制页面中预埋好的调试代码来控制发布包的业务功能的开关或者是日志打印等操作。或者,也可以不直接调试发布包,而是改动发布包对应的源代码,然后重新打包模拟为发布包来进行调试。
然而,现有的方法会将用于调试的代码植入到发布包内部,有可能会被很多用户获得,无疑劣化了代码的安全性。不止如此,类似点击隐藏按钮或长按某个按钮来触发控制页面的方式有一定几率被用户误触发,导致控制页面暴露在用户面前,降低用户体验的同时,也会导致信息泄漏等未知的风险。
如果选择改动源代码之后重新打包模拟的方式进行调试,虽然不会被用户发现控制页面,但是随之出现了重新打包的调试包与真正的发布包变量不同的问题,而这些变量会对调试结果造成影响。
技术实现要素:
本发明提供一种调试发布包的方法、调试发布包的装置以及相应的电子设备和非暂态计算机可读存储介质,用以解决现有技术中调试发布包时的代码安全与数据安全等问题,实现高效、灵活、安全的调试方案。
第一方面,本发明提供一种调试发布包的方法,包括以下步骤:
启动发布包;
检测发布包所在的终端设备上是否存在调试控制程序;
当检测到终端设备上存在调试控制程序时,连接调试控制程序;并且
通过调试控制程序来调试发布包。
根据本发明提供的调试发布包的方法,还包括:在启动发布包之前,在终端设备上启动调试控制程序。
根据本发明提供的调试发布包的方法,还包括:在连接调试控制程序之后,通过进程间通信的方式来发布和接收信息。
根据本发明提供的调试发布包的方法,还包括:发布包根据所接收的信息来执行与预埋好的命令相对应的操作。
根据本发明提供的调试发布包的方法,其中,由发布包检测发布包所在的终端设备上是否存在调试控制程序,具体包括:通过安全加密方法生成加密字符串,然后检测终端设备中是否存在能够处理该加密字符串的组件,以确定终端设备上是否存在调试控制程序。
根据本发明提供的调试发布包的方法,还包括:
在启动发布包之前,在调试控制程序中设置配置信息,并存储配置信息;以及,
相应地,当检测到终端设备上存在调试控制程序时,读取配置信息,并对发布包应用该配置信息。
第二方面,本发明还提供一种调试发布包的装置,包括:
启动模块,用于启动发布包;
检测模块,用于检测发布包所在的终端设备上是否存在调试控制程序;
连接模块,用于在检测到该终端设备上存在调试控制程序时,连接该调试控制程序;以及
调试模块,通过调试控制程序来调试发布包。
第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该计算机程序时实现如上述任一种的调试发布包的方法的步骤。
第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种的调试发布包的方法的步骤。
第五方面,本发明还提供一种计算机程序产品,该计算机程序产品包括有计算机程序,该计算机程序被处理器执行时实现如上述任一种的调试发布包的方法的步骤。
由上述技术方案可知,本发明提供的调试发布包的方法、调试发布包的装置、电子设备、存储介质及程序产品,通过将调试控制程序设置在终端设备上,避免了现有技术的一类调试方案中会产生的重新打包的调试包与真正的发布包调试结果不同的情况,以及由此带来的各种调试问题,包括错误的判断等;并且,通过隔离发布包和调试控制程序,避免了现有技术的另一类调试方案中代码和数据的泄漏风险以及用户的误触发操作带来的不佳体验。
因此,本发明的技术方案改善了现有技术中不够灵活、不够安全、也较为低效率的调试方案,在数据安全性和开发测试效率上均有显著的提高。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍。显而易见地,下面描述中的附图是本发明的一部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是示出本发明一实施例提供的调试发布包的方法的流程图;
图2是示出本发明另一实施例提供的调试发布包的方法的流程图;
图3是示出本发明一实施例提供的调试发布包的装置的结构示意图;
图4是示出本发明一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明提供了一种调试发布包的方法,如图1所示,该方法包括以下步骤:
启动发布包;
检测发布包所在的终端设备上是否存在调试控制程序;
当检测到终端设备上存在调试控制程序时,连接调试控制程序;并且
通过调试控制程序来调试发布包。
根据本实施例,在软件开发工具包或者集成开发环境(ide)上完成对应用程序的初步开发之后,编译源程序,生成应用程序发布包,然后通过应用商店等网络途径将该发布包发布给公众或指定范围的用户群体。经过用户的下载等操作,将发布包部署至用户的设备,优选地,该设备为移动终端,诸如手机、平板电脑等。
此时,如果希望对发布包进行调试,可以启动发布包,继而通过发布包在其所在的移动终端上检测是否存在调试控制程序。具体地,可以通过字符串安全加密方法对字符串进行加密处理,并检测该移动终端中是否有组件能够处理所生成的加密字符串。如果检测到这种组件,或者说有组件对处理该加密字符串的请求作出应答,则可以确定在移动终端上存在针对该发布包设置的调试控制程序。
如果发布包程序检测到调试控制程序的存在,则连接调试控制程序,例如,使用bindservice的方式对作出应答的组件进行绑定连接。另一方面,如果发布包程序经过检测认为调试控制程序不存在,则正常运行发布包程序。
基于本实施例的技术方案,也能够安全地更改发布包的配置。具体来说,可以通过调试控制程序改动配置参数,发送相应的指令到发布包。或者,根据需要,也可以借由该方法对发布包的配置进行初始化。
由于对功能的改进和对漏洞的修补,应用程序需要不断的更新和调试。对于发布到各个应用商店并可供大批量用户使用的发布包,这种调试在现有技术中变得困难且不安全。针对上述问题,本发明的技术方案优选用于已发布的、已部署到移动端的包。但本发明不限于此,对于未公开发布的发布包,除了在软件开发工具包或者集成开发环境(ide)上进行调试,也适用前述本发明的技术方案。
与现有技术相比,本实施例所提供的调试发布包的方法,将调试控制程序设置在移动终端设备上,避免了重新打包的调试包与真正的发布包调试结果不一致的情况,并且通过将调试控制程序单独拆分出来,避免了代码的泄漏风险和用户的误触发操作。
可见,该调试方法同时解决了现有技术中调试发布包时的数据安全性和结果可靠性的问题,实现了高效、灵活、安全的调试方案,还可以实现发布包配置的安全初始化和/或更新,大幅提升开发测试效率。
基于上述实施例的内容,在本实施例中,在启动发布包之前,在终端设备上启动调试控制程序。
由于已经将调试控制程序与发布包完全隔离,通常,在移动终端上先启动调试控制程序,此时发布包程序处于未启动状态。
通过这样的方式,本实施例提出的技术方案解决了调试控制程序的代码安全与数据安全问题,不会像现有技术中那样通过将控制程序嵌入发布包来控制发布包而使得代码和数据的安全面临泄漏的危险。
基于上述实施例的内容,在本实施例中,在连接调试控制程序之后,通过进程间通信的方式来发布和接收信息。
在根据本实施例的调试进程中,如果连接调试控制程序成功,则利用进程间通信的方式(例如,messenger)来开始进行信息的发布与接收。优选地,采用服务器-客户机架构,即cs架构来发布/接收信息。
进程间通信实现了调试进程中的通信控制,例如,如前所述的,通过调试控制程序改动配置参数时,就可以将调试控制程序改动的配置参数通过messenger发送指令到发布包。
由此,本发明的调试发布包的方法操作灵活便捷,能够大幅提高开发测试的效率。例如,应用程序中的某一功能在原测试环境中表现正常,但在线上环境出现了问题,现有技术的处理方式通常是提供多个环境的发布包进行测试来复现,而按照本发明的技术方案,通过调试控制程序直接配置环境信息为线上环境,就可以在发布包启动时读取配置信息,从而将环境切换为线上环境来复现问题。
基于上述实施例的内容,在本实施例中,发布包根据所接收的信息来执行与预埋好的命令相对应的操作。
通过messenger收到信息后,发布包程序可以根据其中的指令执行对应于预设命令的操作,因而可以在发布包启动时就控制很多程序环境或行为等,有助于提高开发测试效率。
基于上述实施例的内容,在本实施例中,由发布包检测发布包所在的终端设备上是否存在调试控制程序,具体包括:通过安全加密方法生成加密字符串,然后检测终端设备中是否存在能够处理该加密字符串的组件,以确定终端设备上是否存在调试控制程序。
在启动发布包程序后,发布包程序首先检测移动终端上是否存在调试控制程序,其该检测优选采用一种字符串安全加密方法,生成加密字符串(例如,action),然后使用intent检测移动终端中是否有能接收该intent的组件,如果存在这样的组件,即存在能够处理加密字符串的组件,则判定移动终端上存在调试控制程序。
当检测到移动终端上存在调试控制程序时,对接收该intent的组件使用bindservice进行连接,还可以根据需要读取配置信息。
字符串安全加密方法是在应用程序中不直接将明文字符串写在代码中的一种方案,该方案的目的是在代码中隐藏一些可能存在安全风险的字符串。在此,例示一种优选的字符串安全加密方法,其包含以下步骤:
拆解源字符串,将其均分为三个部分,若不能均分时,例如按第一部分、第二部分、第三部分的顺序依次分发,可以存在第三部分少一个字符或第二、三部分各少一个字符的情况;
将第一部分中的字符生成相应的byte数组,再将该byte数组均分为两组,第一组直接使用byte参数的方式进行传递,第二组直接放到数组中使用;
第二部分使用字符串组合的方式,以多个程序函数包裹字符,从而达到混淆的目的;
第三部分中的字符串仍然生成二进制数组,进行位运算后传参,在使用时再进行反向位运算。
在使用时,可将前述三个部分重新组合为字符串。
通过对字符串的加密使用,进一步提高了调试进程的数据安全性。本发明中采用的字符串安全加密方法不限于此,只要是能够保证代码安全性的加密方法均可应用。
虽然上文描述了android系统下的示例,但本发明不限于此,而是也可以适用于ios等其它终端设备上的操作系统。
本发明的另一实施例也提供了一种调试发布包的方法,参见图2,该方法包括以下步骤:
在调试控制程序中设置配置信息,并存储配置信息;
启动发布包;
检测发布包所在的终端设备上是否存在调试控制程序;
当检测到终端设备上存在调试控制程序时,连接调试控制程序,并读取配置信息,对发布包应用该配置信息;以及
通过调试控制程序来调试发布包。
根据本实施例的技术方案,可以使发布包程序在启动时就能读取到配置信息。具体来说:
在调试控制程序中配置信息,此时会将配置信息序列化为例如json格式,然后将其持久化地存储到磁盘,持久化存储的位置通常是共享存储区域;
如果在终端设备中检测到调试控制程序,就将代码中预埋的debug模式设置为true,同时使用bindservice调试控制程序,并读取共享存储区域中存储的配置信息;
读取配置信息后,根据协议对该配置信息进行反序列化,然后应用该配置信息,以达到控制配置的目的。
本实施例中的其它细节可以参考前述各实施例,在此不再赘述。
由上述技术方案可知,本发明提供的调试发布包的方法,通过拆分调试控制程序来隔离发布包和调试程序,提高了调试程序的安全性,实现了安全更改发布包配置的目的。并且,这样的发布包控制简单,无需繁琐的多次点击或者长按按钮等隐藏操作,开发和使用都变得更加简洁高效。
下面对本发明提供的调试发布包的装置进行描述,下文描述的装置与上文描述的调试发布包的方法可相互对应参照。参见图3,本实施例提供的调试发布包的装置具体包括:
启动模块21,用于启动发布包;
检测模块23,用于检测发布包所在的终端设备上是否存在调试控制程序;
连接模块25,用于在检测到该终端设备上存在调试控制程序时,连接该调试控制程序;以及
调试模块27,通过调试控制程序来调试发布包。
由于本发明实施例提供的调试发布包的装置,可以用于执行上述实施例所述的调试发布包的方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
在本实施例中,需要说明的是,本发明实施例的装置可以由软件和/或硬件的方式实现,并可以集成在诸如手机、平板电脑等用户终端设备中。该装置中的单元只是按照功能逻辑进行划分的,并且不局限于上述的划分,只要能够实现相应的功能即可。各个单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图4,所述电子设备可以包括:处理器810、通信接口820、存储器830和通信总线840,其中,处理器810、通信接口820、存储器830通过通信总线840完成相互间的通信。
处理器810可以调用存储器830中的计算机程序,以执行一种调试发布包的方法,该方法例如包括以下步骤:启动发布包;检测发布包所在的终端设备上是否存在调试控制程序;当检测到终端设备上存在调试控制程序时,连接调试控制程序;并且,通过调试控制程序来调试发布包。
本领域技术人员可以理解,处理器810还可以实现本发明任意实施例所提供的调试发布包的方法,并且图4所示的电子设备仅仅是一种示例,其也可以通过能够调用指令实现前述调试发布包的方法的任意设备来实现。
上述的存储器830中的逻辑指令也可以通过软件功能单元的形式实现并作为独立的产品销售或使用,这时将其存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
基于前述发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述调试发布包的方法的步骤。例如,处理器执行该计算机程序时实现下述过程:启动发布包;检测发布包所在的终端设备上是否存在调试控制程序;当检测到终端设备上存在调试控制程序时,连接调试控制程序;并且,通过调试控制程序来调试发布包。
通常,前述存储介质可包括诸如u盘、移动硬盘、只读存储器(rom)、随机存取存储器(ram)、磁碟或者光盘等各种可以存储程序代码的介质。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上述实施例的描述。
基于相同的发明构思,本发明又一实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现上述调试发布包的方法的步骤。例如,处理器执行该计算机程序时实现下述过程:启动发布包;检测发布包所在的终端设备上是否存在调试控制程序;当检测到终端设备上存在调试控制程序时,连接调试控制程序;并且,通过调试控制程序来调试发布包。
可以理解的是,所述计算机程序可以执行的细化功能和扩展功能可参照上述实施例的描述。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
1.一种调试发布包的方法,其特征在于,包括以下步骤:
启动所述发布包;
检测所述发布包所在的终端设备上是否存在调试控制程序;
当检测到所述终端设备上存在所述调试控制程序时,连接所述调试控制程序;并且
通过所述调试控制程序来调试所述发布包。
2.根据权利要求1所述的调试发布包的方法,其特征在于,
在启动所述发布包之前,在所述终端设备上启动调试控制程序。
3.根据权利要求1所述的调试发布包的方法,其特征在于,
在连接所述调试控制程序之后,通过进程间通信的方式来发布和接收信息。
4.根据权利要求3所述的调试发布包的方法,其特征在于,还包括:
所述发布包根据所接收的信息来执行与预埋好的命令相对应的操作。
5.根据权利要求1所述的调试发布包的方法,其特征在于,所述由所述发布包检测所述发布包所在的终端设备上是否存在调试控制程序,具体包括:
通过安全加密方法生成加密字符串,然后检测所述终端设备中是否存在能够处理所述加密字符串的组件,以确定所述终端设备上是否存在所述调试控制程序。
6.根据权利要求1-5中任一项所述的调试发布包的方法,其特征在于,还包括:
在启动所述发布包之前,在所述调试控制程序中设置配置信息,并存储所述配置信息;以及,
相应地,当检测到所述终端设备上存在所述调试控制程序时,读取所述配置信息,并对所述发布包应用所述配置信息。
7.一种调试发布包的装置,其特征在于,包括:
启动模块,用于启动所述发布包;
检测模块,用于检测所述发布包所在的终端设备上是否存在调试控制程序;
连接模块,用于在检测到所述终端设备上存在所述调试控制程序时,连接所述调试控制程序;以及
调试模块,通过所述调试控制程序来调试所述发布包。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的调试发布包的方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的调试发布包的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的调试发布包的方法的步骤。
技术总结