本申请涉及移动终端技术领域,特别是涉及一种应用的初始化方法、装置、存储介质及移动终端。
背景技术:
随着移动终端技术领域的发展,尤其是软件的不断迭代,各种应用的功能和需求层出不穷。在移动终端软件的开发和测试阶段,开发人员、测试人员、或者产品经理等经常需要对应用进行调试,比如:查看应用的运行日志,切换应用的执行环境等。
目前,对ios应用进行调试的方法主要有以下两种:一种是通过修改应用的源代码来辅助调试应用。例如,通过修改环境代码来实现应用运行环境的切换,或者通过修改源代码来输出调试信息到日志或页面上以供查看或修改。这些修改后的源代码,在应用上线前需要再改回来,这样频繁修改代码导致调试效率较低,而且还可能会影响应用的稳定性,造成一定的安全隐患。
另一种是通过安装电脑软件来辅助调试应用。这种调试方法通常的做法是通过在电脑上开启抓包软件,在手机应用的页面进行埋点,然后通过抓包软件获取相应的埋点信息。而这种方式需确保手机和电脑连接至同一网络下,使得调试过程十分繁琐,而且,通过电脑软件来辅助调试应用,必须要用到电脑,并安装特定电脑软件,学习成本高,调试效率较低。
因此,现有的ios应用调试方法,存在调试效率低,可能会影响应用的稳定性的问题。
技术实现要素:
基于此,有必要针对上述技术问题,提供一种有利于提高调试效率的应用的初始化方法、装置、存储介质及移动终端。
一种应用的初始化方法,所述应用的初始化方法包括:
响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息;所述管理类遵循预设的协议;所述协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法;所述调试插件预先封装了需要调试的应用信息的调试方法;
根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在其中一个实施例中,所述响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息,包括:
响应于应用启动,从预先构建的插件容器中获取待注册的调试插件;
根据获取到的调试插件的管理类生成对象,作为注册信息;
则所述根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,包括:
根据所述注册信息,采用预先构建的页面管理工具将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在其中一个实施例中,所述协议还规定插件名称的获取方法和插件图标的获取方法。
在其中一个实施例中,所述在视图中调用调试插件的方法包括:
调试插件在视图中被点击。
在其中一个实施例中,所述根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,包括:
将多个待注册的调试插件添加至插件队列;
依次从所述插件队列中取出调试插件,根据对应调试插件的注册信息将对应调试插件注册到所述调试菜单中;
响应于所述多个待注册的调试插件完成注册,在移动终端页面生成调试菜单视图。
在其中一个实施例中,所述应用的初始化方法还包括:
生成进入所述调试菜单视图的悬浮球入口。
在其中一个实施例中,所述应用的初始化方法还包括:
向keywindow添加悬浮球,并监听runloop运行状态。
一种应用的初始化装置,该装置包括插件注册模块和菜单视图生成模块。
注册信息生成模块,用于响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息;所述管理类遵循预设的协议;所述协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法;所述调试插件预先封装了需要调试的应用信息的调试方法;
菜单视图生成模块,用于根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
一种移动终端,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息;所述管理类遵循预设的协议;所述协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法;所述调试插件预先封装了需要调试的应用信息的调试方法;
根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息;所述管理类遵循预设的协议;所述协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法;所述调试插件预先封装了需要调试的应用信息的调试方法;
根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
上述应用的初始化方法、装置、存储介质及移动终端,通过响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息,以及根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,实现将调试插件注册到调试菜单中,在应用初始化过程中将调试菜单与调试插件的调用方法以及返回的视图控制器类的实例化对象绑定,从而通过调试菜单视图即可实现调试插件的视图展示以及提供调试插件的调用,即实现了调试插件以可视化的形式提供调试功能。开发人员、测试人员、或者产品经理等,可以在移动终端打开调试菜单视图,通过执行与调试菜单视图中触发调试插件行为的方法对应的操作,即可调用调试插件所封装的调试方法。
相对于现有技术来说,上述应用的初始化方法、装置、存储介质及移动终端通过应用的初始化过程为应用调试提供了调试菜单视图,通过调试插件带来的可视化调试方法,实现在移动终端完成应用调试,降低了调试的学习成本,大大提高了调试效率。此外,当有新的应用调试需求时,可通过直接注册新的调试插件,即可使用该调试插件完成应用调试,实现插件的可拓展,而不需要修改应用的源代码,所以不会影响应用的稳定性和安全性。
附图说明
图1为一个实施例中应用的初始化方法的应用环境图;
图2为一实施例中应用的初始化方法的流程示意图;
图3为又一实施例中应用的初始化方法的流程示意图;
图4为一实施例中应用的初始化装置的结构框图;
图5为一实施例中移动终端的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的应用的初始化方法,可以应用于如图1所示的应用环境中。其中,移动终端102通过网络与服务器104进行通信,其中,移动终端102可以但不限于是各种可安装ios系统的智能手机、平板电脑和便携式多媒体播放器,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种应用的初始化方法。以该方法应用于图1中的移动终端为例进行说明,包括以下步骤:
步骤s200,响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息。
本实施例中,应用为ios应用。ios应用能够运行于ios系统,ios系统为苹果移动设备操作系统。ios应用可以是聊天应用、浏览器应用、游戏应用、或多媒体播放应用等,本发明对此不做限定。
本实施例的代码实现可采用swift语言,swift语言为苹果推出的现代编程语言,拥有静态类型,类型推断,函数式等特性。在其他实施方式中,可采用objective-c语言。
调试插件是一种对象,其可以通过页面、对话框等可视化形式进行展示。调试插件可以是日志信息插件、网络拦截插件或环境配置插件等。由于调试插件封装了要调试的应用信息的调试方法,因此,通过调用调试插件,可实现对所封装的调试方法的调用,即调试相应的应用信息,从而实现对应的调试功能,例如获取日志信息、网络拦截、环境配置、特定页面跳转等等。需要说明的是,调试方法可以是现成的通用调试方法,也可以是自定义的调试方法,本发明对此不做限定。
调试插件的管理类遵循预设的协议。协议用于规定方法和属性,满足协议要求的类被称为遵循(conform)这个协议。调试插件的管理类提供具体实现来完成该协议规定的方法。对于不同调试插件的管理类,其遵循的协议所规定的具体内容存在差异,具体可根据实际情况调整。
协议是用protocol进行规定(定义)的。该协议规定调试插件的视图控制器类实例化方法。
视图控制器(viewcontroller)类是uiviewcontroller的子类,用于管理应用的视图。uiviewcontroller为通用控制器类,是uikit框架的一部分,其定义所有视图控制器通用的共享行为。类的实例化对象,即对类进行实例化所得到的对象。视图控制器类实例化方法返回调试插件的视图控制器类的实例化对象,则注册信息包括该视图控制器类的实例化对象。
该协议还规定在视图中调用调试插件的方法。在本实施例中,调试插件会在调试菜单视图中呈现,则在调试菜单视图中调用调试插件的方法由协议规定。在视图中调用调试插件的方法不返回实例对象,注册信息包括在视图中调用调试插件的方法。
可选的,在视图中调用调试插件的方法包括:
调试插件在视图中被点击。
即通过视图中的插件点击操作即可触发调试插件行为。如果用户点击了调试菜单视图中的一项插件,移动终端页面会展示与插件实现相关的视图控制器,如果没有插件点击操作则继续等待。
具体地,该初始化方法还包括:
在应用启动之前,定义调试插件的视图控制器类和管理类。
通过定义调试插件的视图控制器类,以通过视图控制器实现调试插件的具体插件功能逻辑,例如对于日志信息插件,本实施例中实现控制台日志输出日志的信息采集和格式化展现。
具体地,在应用启动之前,会构造插件容器类。
插件容器用于实现具体的插件功能,并定义了一套方便外部实现的协议。
则步骤s200包括:
响应于应用启动,从预先构建的插件容器中获取待注册的调试插件;
根据获取到的调试插件的管理类生成对象,作为注册信息。
开发人员可在服务器104开发调试插件,然后将调试插件写入插件容器中。插件容器可设于移动终端,则应用启动后,在移动终端即可生成注册信息。在其他实施例中,插件容器可设于服务器104,则生成注册信息的过程需要移动端与服务器通信完成。
步骤s202、根据注册信息将待注册的调试插件注册到调试菜单中。
在本实施例中,调试菜单视图为列表视图。在其他实施例中,调试菜单视图可以是图标视图。
具体地,在应用启动之前,会构造页面管理工具类。
页面管理工具用于已注册插件的管理,ui的展示以及悬浮球的展示。
页面管理工具还实现了工具注册方法,用于将插件注册到调试菜单中。
具体地,步骤s202包括:
根据注册信息,采用预先构建的页面管理工具将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
本实施例通过响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息,以及根据注册信息将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,实现将调试插件注册到调试菜单中,在应用初始化过程中将调试菜单与调试插件的调用方法以及返回的视图控制器类的实例化对象绑定,从而通过调试菜单视图即可实现调试插件的视图展示以及提供调试插件的调用,即实现了调试插件以可视化的形式提供调试功能。开发人员、测试人员、或者产品经理等,可以在移动终端打开调试菜单视图,通过执行与调试菜单视图中触发调试插件行为的方法对应的操作,即可调用调试插件所封装的调试方法。
本实施例还通过页面管理工具和插件容器的隔离,使得外部的ui壳可以随时变换而不影响核心的插件逻辑,其次,当核心的插件增加的时候不必依赖外部ui的更新,便于实现插件的拓展、自定义、禁用与开启。
应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在又一个实施例中,如图3所示,提供了一种应用的初始化方法,该方法应用于图1所示的移动终端。
该应用的初始化方法包括以下步骤:
步骤s400,响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息。
管理类遵循预设的协议。调试插件预先封装了需要调试的应用信息的调试方法。协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法。
本实施例中,协议还规定插件名称的获取方法和插件图标的获取方法。其中,插件名称的获取方法返回调试插件的名称。插件图标的获取方法返回uiimage对象。该uiimage对象为调试插件在视图中的图标。则注册信息还包括该调试插件的名称和图标。具体地,调试插件的名称和图标可从预设的插件数据源获取。其中,uiimage是ios的uikit框架中图片数据的表现类,其封装了各类图片的表现方法。
步骤s402,将多个待注册的调试插件添加至插件队列。
步骤s404,依次从插件队列中取出调试插件,根据对应调试插件的注册信息将对应调试插件注册到调试菜单中。
开发人员可在服务器104开发调试插件,然后将调试插件写入移动终端102的应用的源代码,当应用启动时,会检测待注册的调试插件,并将多个待注册的调试插件添加至插件队列,将插件队列中的调试插件注册到调试菜单中。
具体地,调试菜单包括与调试插件一一对应的调试菜单项,则从插件队列中取出调试插件后,将对应调试插件注册至对应的调试菜单项。
步骤s406,响应于多个待注册的调试插件完成注册,在移动终端页面生成调试菜单视图。
步骤s408、生成进入调试菜单视图的悬浮球入口。
步骤s410、向keywindow添加悬浮球,并监听runloop运行状态。
其中,keywindow(主窗口)是在ios平台中的最上层显示的界面,通过将悬浮球视图添加到keywindow中,使得悬浮球视图显示在最上层的界面。
runloop是ios平台中的app级的事件循环机制。
由于ios系统本身不支持app内覆盖悬浮球,因此,通过监听runloop运行状态,以保证悬浮球添加到keywindow中,从而使悬浮球视图保持显示在最上层的界面。
本实施例实现多个调试插件的注册,从而通过调试菜单视图提供不同调试插件所封装的调试方法,提高调试效率。另外,通过协议规定插件名称的获取方法和插件图标的获取方法,便于区分不同调试插件,进一步提高调试效率。
此外,还通过生成悬浮球入口,便于用户更快捷方便地操作调试菜单视图;通过将悬浮球视图添加到keywindow中,并监听runloop运行状态,确保当前应用在前后台切换的过程中不会丢失调试菜单视图的展现状态。
应该理解的是,虽然图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图4所示,提供了一种应用的初始化装置1,包括注册信息生成模块101和菜单视图生成模块103。
注册信息生成模块101用于响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息;管理类遵循预设的协议;协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法;调试插件预先封装了需要调试的应用信息的调试方法;
菜单视图生成模块103用于根据注册信息将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在一个实施例中,注册信息生成模块101包括插件获取单元和对象生成单元。
插件获取单元用于响应于应用启动,从预先构建的插件容器中获取待注册的调试插件。
对象生成单元用于根据获取到的调试插件的管理类生成对象,作为注册信息。
菜单视图生成模块103包括第一视图生成单元,用于根据注册信息,采用预先构建的页面管理工具将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在一个实施例中,协议还规定插件名称的获取方法和插件图标的获取方法。
在一个实施例中,在视图中调用调试插件的方法包括:
调试插件在视图中被点击。
在一个实施例中,菜单视图生成模块103包括:插件队列添加单元、插件注册单元和第二视图生成单元。
插件队列添加单元用于将多个待注册的调试插件添加至插件队列;
插件注册单元用于依次从插件队列中取出调试插件,根据对应调试插件的注册信息将对应调试插件注册到调试菜单中。
第二视图生成单元用于响应于多个待注册的调试插件完成注册,在移动终端页面生成调试菜单视图
在一个实施例中,该初始化装置还包括悬浮球入口生成模块,用于生成进入调试菜单视图的悬浮球入口。
在一个实施例中,该初始化装置1还包括事件循环机制启动模块和视图添加模块。
悬浮球添加模块用于向keywindow添加悬浮球,并监听runloop运行状态。
关于应用的初始化装置的具体限定可以参见上文中对于应用的初始化方法的限定,在此不再赘述。上述应用的初始化装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于移动终端中的处理器中,也可以以软件形式存储于移动终端中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种移动终端,该移动终端的内部结构图可以如图5所示。该移动终端包括通过设备总线连接的处理器、存储器、网络接口和数据库。其中,该移动终端的处理器用于提供计算和控制能力。该移动终端的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作设备、计算机程序和数据库。该内存储器为非易失性存储介质中的操作设备和计算机程序的运行提供环境。该移动终端的数据库用于存储数据。该移动终端的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用的初始化方法。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的移动终端的限定,具体的移动终端可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种移动终端,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息;管理类遵循预设的协议;协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法;调试插件预先封装了需要调试的应用信息的调试方法;
根据注册信息将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在其中一个实施例中,响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息,包括:
响应于应用启动,从预先构建的插件容器中获取待注册的调试插件;
根据获取到的调试插件的管理类生成对象,作为注册信息;
则根据注册信息将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,包括:
根据注册信息,采用预先构建的页面管理工具将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在其中一个实施例中,协议还规定插件名称的获取方法和插件图标的获取方法。
在其中一个实施例中,在视图中调用调试插件的方法包括:
调试插件在视图中被点击。
在其中一个实施例中,根据注册信息将待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,包括:
将多个待注册的调试插件添加至插件队列;
依次从插件队列中取出调试插件,根据对应调试插件的注册信息将对应调试插件注册到调试菜单中;
响应于多个待注册的调试插件完成注册,在移动终端页面生成调试菜单视图。
在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
生成进入调试菜单视图的悬浮球入口。
在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
向keywindow添加悬浮球,并监听runloop运行状态。
在一个实施例中,提供了一种存储介质,该存储介质为计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息;所述管理类遵循预设的协议;所述协议规定在视图中调用调试插件的方法,以及规定调试插件的视图控制器类实例化方法;所述调试插件预先封装了需要调试的应用信息的调试方法;
根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在其中一个实施例中,所述响应于应用启动,根据待注册的调试插件的管理类生成对象,作为注册信息,包括:
响应于应用启动,从预先构建的插件容器中获取待注册的调试插件;
根据获取到的调试插件的管理类生成对象,作为注册信息;
则所述根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,包括:
根据所述注册信息,采用预先构建的页面管理工具将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图。
在其中一个实施例中,所述协议还规定插件名称的获取方法和插件图标的获取方法。
在其中一个实施例中,所述在视图中调用调试插件的方法包括:
调试插件在视图中被点击。
在其中一个实施例中,所述根据所述注册信息将所述待注册的调试插件注册到调试菜单中,在移动终端页面生成调试菜单视图,包括:
将多个待注册的调试插件添加至插件队列;
依次从所述插件队列中取出调试插件,根据对应调试插件的注册信息将对应调试插件注册到所述调试菜单中;
响应于所述多个待注册的调试插件完成注册,在移动终端页面生成调试菜单视图。
在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:
生成进入所述调试菜单视图的悬浮球入口。
在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:
向keywindow添加悬浮球,并监听runloop运行状态。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。