发明内容
本发明提供克服上述问题或者至少部分地解决上述问题的一种快速切换SDK网络接口环境的方法及装置。
根据本发明的一个方面,提供一种快速切换SDK网络接口环境的方法,包括:
S1,定义用于存储当前所配置的网络接口环境的环境配置变量,并在SDK的Demo应用界面中增加用于显示当前所配置的网络接口环境的文本控件,并监听所述文本控件的长按事件;
S2,当监听到所述长按事件时,弹出环境配置对话框以提示用户选择要切换的网络接口环境,并将用户选择的结果存储至所述环境配置变量中;
S3,根据所述环境配置变量的值更新主环境变量,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
其中,在所述步骤S1之前,还包括:
定义字符串变量列表,将所有网络接口环境所对应的地址存储至所述字符串变量列表中,并将主环境变量初始化为线上环境所对应的地址。
其中,步骤S3中根据所述环境配置变量的值更新主环境变量的步骤进一步包括:
根据所述环境配置变量的值查询所述字符串变量列表,获取所述环境配置变量所对应的网络接口环境的地址;
将所查询到的网络接口环境的地址赋值给主环境变量。
其中,所述步骤S1还包括:
定义可切换的环境列表,所述可切换的环境列表中存储可切换的网络接口环境;相应地,
所述环境配置对话框中列出所述可切换的环境列表,并默认勾选当前所配置的网络接口环境。
根据本发明的另一个方面,提供一种快速切换SDK网络接口环境的装置,包括:
环境切换入口模块,用于定义用于存储当前所配置的网络接口环境的环境配置变量,并在SDK的Demo应用界面中增加用于显示当前所配置的网络接口环境的文本控件,并监听所述文本控件的长按事件;
切换模块,用于当监听到所述长按事件时,弹出环境配置对话框以提示用户选择要切换的网络接口环境,并将用户选择的结果存储至所述环境配置变量中;
环境修改模块,用于根据所述环境配置变量的值更新主环境变量,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
其中,还包括:
地址存储模块,用于定义字符串变量列表,将所有网络接口环境所对应的地址存储至所述字符串变量列表中,并将主环境变量初始化为线上环境所对应的地址。
其中,所述环境修改模块具体用于:
根据所述环境配置变量的值查询所述字符串变量列表,获取所述环境配置变量所对应的网络接口环境的地址;
将所查询到的网络接口环境的地址赋值给主环境变量。
其中,所述环境切换入口模块还用于:
定义可切换的环境列表,所述可切换的环境列表中存储可切换的网络接口环境。
根据本发明的又一个方面,提供一种快速切换SDK网络接口环境的设备,包括:存储器、处理器、以及总线,
所述处理器和存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述存储器中的程序指令,以执行如前任一所述的方法。
根据本发明的又一个方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如前任一所述的方法。
本发明提出的一种快速切换SDK网络接口环境的方法及装置,解决了传统切换环境的方式产生的问题,不同环境只有一个程序包从而保证不同环境下代码的一致性,也同时避免了人为因素导致的配置和环境不对对测试产生的影响,只需要安装一个sdk Demo就可以测试不同接口环境,有效提升了测试人员和开发人员效率。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
如图1所示,为本发明一实施例提供的一种快速切换SDK网络接口环境的方法的流程示意图,包括:
S1,定义用于存储当前所配置的网络接口环境的环境配置变量,并在SDK的Demo应用界面中增加用于显示当前所配置的网络接口环境的文本控件,并监听所述文本控件的长按事件;
S2,当监听到所述长按事件时,弹出环境配置对话框以提示用户选择要切换的网络接口环境,并将用户选择的结果存储至所述环境配置变量中;
S3,根据所述环境配置变量的值更新主环境变量,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
具体地,S1,网络接口环境包括联调环境(DEBUG)、测试环境(TEST)和线上环境(RELEASE),具体的网络接口环境数量根据实际情况而定。定义本地存储的环境配置变量run_mode,用于存储当前所配置的网络接口环境,可存储在文件或数据库中,在安卓系统中可通过实现应用配置信息存储的类SharedPreferences(配置以键值对的形式存储)来实现对环境配置变量run_mode的存储和读取。
一般软件开发工具包(SDK)会提供一个Demo应用,用于模拟使用SDK,在Demo应用的界面中添加一个文本控件,获取所述环境配置变量run_mode的值,并将所述环境配置变量的值设置进所述文本控件,并为所述文本控件添加长按事件监听。
S2,当监听到所述长按事件时,说明用户(即开发人员或测试人员)长按了该文本控件,此时弹出环境配置对话框,提示用户选择要切换的网络接口环境,开发人员或测试人员选择了要切换的环境后,将用户选择的结果存储至所述环境配置变量run_mode中,此时环境配置变量run_mode的值被修改,然后退出Demo应用。
在安卓系统中步骤S1和步骤S2的具体实现为:在Demo应用界面中通过addView()函数增加一个TextView控件,通过调用getSharedPreferences().getString("run_mode")方法获取当前所配置的网络接口环境,并将当前所配置的网络接口环境设置到TextView.setText()中,实现显示当前环境配置。通过TextView.setOnLongClickListener()设置长按动作监听,当用户长按时,创建AlertDialog对话框,通过AlertDialog.setSingleChoiceItems()设置可供选择的网络接口环境选项并默认勾选当前所配置的网络接口环境run_mode,当用户选择了要切换的环境时,将用户所选择的网络接口环境通过getSharedPreferences().edit().putInt("run_mode",选择的环境).commit()方法存储到配置文件中以修改环境配置变量run_mode的值,例如,配置文件中run_mode的值为DEBUG(联调环境),则当前所配置的网络接口环境为DEBUG(联调环境),弹出环境切换对话框,当用户选择TEST(测试环境)时,将配置文件中run_mode的值修改为TEST。修改后调用System.exit(0)退出应用。
S3,SDK的业务功能具体使用时,调用的是主环境变量所对应的网络接口环境地址,因此,需要根据此时环境配置变量的值相应的修改主环境变量的值,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
本发明实施例所述的方法在安卓系统中可以通过新建一个APIConfig类来实现。Demo应用每次启动时配置一次,软件开发工具包(SDK)的业务功能请求网络接口时则使用的是用户选择的网络接口环境,从而实现切换环境后重启立即生效的功能。本发明实施例所提供的方法,相比目前不同环境SDK下需要不同环境Demo应用来回卸载并安装运行需要的环境应用,通过一个Demo应用在环境配置对话框选择需要切换的网络接口环境,然后重启Demo应用,即可以切换到需要的网络接口环境去进行开发或测试,有效地提升了开发和测试效率。
基于上述实施例,在所述步骤S1之前,还包括:
定义字符串变量列表,将所有网络接口环境所对应的地址存储至所述字符串变量列表中,并将主环境变量初始化为线上环境所对应的地址。
具体地,定义公共静态字符串变量列表,所述字符串变量列表包括主环境变量和可配置环境变量,将所有网络接口环境所对应的地址存储至所述字符串变量列表中,网络接口环境所对应的地址包括:主环境变量所对应的网络接口环境的地址和可配置环境变量所对应的可切换的网络接口环境的地址,例如:主环境变量所对应的网络接口环境的地址为"http://xxx.com",表示预发布站的域名,即线上环境所对应的地址,则通过publicstatic String HOST="http://xxx.com"语句,对字符串变量HOST的值进行了设置。可切换的网络接口环境地址则存储至可配置环境变量中,例如DEBUG(联调环境)为HOST_DEBUG="http://debug.xxx.com",TEST(测试环境)为HOST_TEST="http://test.xxx.com"。
实际应用中SDK不同的业务功能在不同网络接口环境中,因此,往往有多个网络环境地址。当网络接口环境地址有多个时可定义对应的地址变量,例如线上环境HOST2="http://2xx.com",联调环境HOST2_DEBUG="http://debug.2xx.com,测试环境HOST2_TEST="http://test.2xx.com"。
上述例子中,HOST及HOST2等为主环境变量,HOST_DEBUG、HOST_TEST、HOST2_DEBUG、HOST2_TEST等为可配置环境变量,业务功能具体使用时,调用的是主环境变量所对应的网络接口环境地址。
主环境变量HOST默认初始为线上环境,可以有效地避免没有指定网络接口环境时HOST为空的情况,同时也确保发布时环境HOST为线上环境(发布版本不能切换环境)。
基于上述实施例,步骤S3中根据所述环境配置变量的值更新主环境变量的步骤进一步包括:
根据所述环境配置变量的值查询所述字符串变量列表,获取所述环境配置变量所对应的网络接口环境的地址;
将所查询到的网络接口环境的地址赋值给主环境变量。
具体地,字符串变量列表包括主环境变量和可配置环境变量,主环境变量对应了线上环境所对应的网络接口环境的具体地址,可配置环境变量对应了可切换的网络接口环境的具体地址,根据环境配置变量的值查询所述字符串变量列表,即可以获取用户选择切换到的网络接口环境的具体地址,然后将所获取到的网络接口环境地址赋值给主环境变量,这样,SDK的业务功能请求网络接口时会访问所述主环境变量所对应的网络接口环境地址,即实现了环境的切换。
例如,在安卓系统中通过调用getSharedPreferences().getString("run_mode")获取当前环境配置变量的值,如果run_mode为TEST,则通过查询字符串变量列表,获取到TEST所对应的网络接口环境地址为HOST_TEST变量的值,则通过赋值语句HOST=HOST_TEST,将所有主环境变量的值进行改变,即HOST为"http://test.xxx.com",HOST2=HOST2_TEST即HOST2为"http://test.2xx.com",若run_mode为DEBUG,则HOST=HOST_DEBUG即HOST为"http://debug.xxx.com",HOST2=HOST2_DEBUG即HOST2为"http://debug.2xx.com",若run_mode为RELEASE则不处理,HOST及HOST2的值本来就是线上环境。
基于上述实施例,所述步骤S1还包括:
定义可切换的环境列表,所述可切换的环境列表中存储可切换的网络接口环境;相应地,
所述环境配置对话框中列出所述可切换的环境列表,并默认勾选当前所配置的网络接口环境。
具体地,可切换的环境列表modeList的具体实现可以为数组[RELEASE,TEST,DEBUG],表示可切换的网络接口环境有发布环境,测试环、调试环境,可切换环境列表应根据实际的环境数量设置。相应地,所述环境配置对话框中列出所述可切换的环境列表,并默认勾选当前所配置的网络接口环境,以供开发人员或测试人员进行选择。
如图2所示,为本发明另一实施例提供的一种快速切换SDK网络接口环境的装置的结构示意图,包括:环境切换入口模块21、切换模块22和环境修改模块23,其中,
环境切换入口模块21,用于定义用于存储当前所配置的网络接口环境的环境配置变量,并在SDK的Demo应用界面中增加用于显示当前所配置的网络接口环境的文本控件,并监听所述文本控件的长按事件;
切换模块22,用于当监听到所述长按事件时,弹出环境配置对话框以提示用户选择要切换的网络接口环境,并将用户选择的结果存储至所述环境配置变量中;
环境修改模块23,用于根据所述环境配置变量的值更新主环境变量,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
具体地,网络接口环境包括联调环境(DEBUG)、测试环境(TEST)和线上环境(RELEASE),具体的网络接口环境数量根据实际情况而定。环境切换入口模块21定义本地存储的环境配置变量run_mode,用于存储当前所配置的网络接口环境,可存储在文件或数据库中,在安卓系统中可通过实现应用配置信息存储的类SharedPreferences(配置以键值对的形式存储)来实现对环境配置变量run_mode的存储和读取。
一般软件开发工具包(SDK)会提供一个Demo应用,用于模拟使用SDK,在Demo应用的界面中添加一个文本控件,获取所述环境配置变量run_mode的值,并将所述环境配置变量的值设置进所述文本控件,并为所述文本控件添加长按事件监听。
当切换模块22监听到所述长按事件时,说明用户(即开发人员或测试人员)长按了该文本控件,此时切换模块22弹出环境配置对话框,提示用户选择要切换的网络接口环境,待开发人员或测试人员选择了要切换的环境后,切换模块22将用户选择的结果存储至所述环境配置变量run_mode中,此时环境配置变量run_mode的值被修改,然后退出Demo应用。
在安卓系统中的具体实现为:在Demo应用界面中通过addView()函数增加一个TextView控件,通过调用getSharedPreferences().getString("run_mode")方法获取当前所配置的网络接口环境,并将当前所配置的网络接口环境设置到TextView.setText()中,实现显示当前环境配置。通过TextView.setOnLongClickListener()设置长按动作监听,当用户长按时,创建AlertDialog对话框,通过AlertDialog.setSingleChoiceItems()设置可供选择的网络接口环境选项并默认勾选当前所配置的网络接口环境run_mode,当用户选择了要切换的环境时,将用户所选择的网络接口环境通过getSharedPreferences().edit().putInt("run_mode",选择的环境).commit()方法存储到配置文件中以修改环境配置变量run_mode的值,例如,配置文件中run_mode的值为DEBUG(联调环境),则当前所配置的网络接口环境为DEBUG(联调环境),弹出环境切换对话框,当用户选择TEST(测试环境)时,将配置文件中run_mode的值修改为TEST。修改后调用System.exit(0)退出应用。
SDK的业务功能具体使用时,调用的是主环境变量所对应的网络接口环境地址,因此,环境修改模块23根据此时环境配置变量的值相应的修改主环境变量的值,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
本发明实施例所提供的一种快速切换SDK网络接口环境的装置,通过一个Demo应用在环境配置对话框选择需要切换的网络接口环境,然后重启Demo应用,即可以切换到需要的网络接口环境去进行开发或测试,有效地提升了开发和测试效率。
基于上述实施例,还包括:
地址存储模块,用于定义字符串变量列表,将所有网络接口环境所对应的地址存储至所述字符串变量列表中,并将主环境变量初始化为线上环境所对应的地址。
地址存储模块定义公共静态字符串变量列表,所述字符串变量列表包括主环境变量和可配置环境变量,将所有网络接口环境所对应的地址存储至所述字符串变量列表中,网络接口环境所对应的地址包括:主环境变量所对应的网络接口环境的地址和可配置环境变量所对应的可切换的网络接口环境的地址,例如:主环境变量所对应的网络接口环境的地址为"http://xxx.com",表示预发布站的域名,即线上环境所对应的地址,则通过publicstatic String HOST="http://xxx.com"语句,对字符串变量HOST的值进行了设置。可切换的网络接口环境地址则存储至可配置环境变量中,例如DEBUG(联调环境)为HOST_DEBUG="http://debug.xxx.com",TEST(测试环境)为HOST_TEST="http://test.xxx.com"。
实际应用中SDK不同的业务功能在不同网络接口环境中,因此往往有多个网络环境地址。当网络接口环境地址有多个时可定义对应的地址变量,例如线上环境HOST2="http://2xx.com",联调环境HOST2_DEBUG="http://debug.2xx.com,测试环境HOST2_TEST="http://test.2xx.com"。
上述例子中,HOST及HOST2等为主环境变量,HOST_DEBUG、HOST_TEST、HOST2_DEBUG、HOST2_TEST等为可配置环境变量,业务功能具体使用时,调用的是主环境变量所对应的网络接口环境地址。
主环境变量HOST默认初始为线上环境,可以有效地避免没有指定网络接口环境时HOST为空的情况,同时也确保发布时环境HOST为线上环境(发布版本不能切换环境)。
基于上述实施例,所述环境修改模块具体用于:
根据所述环境配置变量的值查询所述字符串变量列表,获取所述环境配置变量所对应的网络接口环境的地址;
将所查询到的网络接口环境的地址赋值给主环境变量。
具体地,字符串变量列表包括主环境变量和可配置环境变量,主环境变量对应了线上环境所对应的网络接口环境的具体地址,可配置环境变量对应了可切换的网络接口环境的具体地址,根据环境配置变量的值查询所述字符串变量列表,即可以获取用户选择切换到的网络接口环境的具体地址,然后将所获取到的网络接口环境地址赋值给主环境变量,这样,SDK的业务功能请求网络接口时会访问所述主环境变量所对应的网络接口环境地址,即实现了环境的切换。
例如,在安卓系统中通过调用getSharedPreferences().getString("run_mode")获取当前环境配置变量的值,如果run_mode为TEST,则通过查询字符串变量列表,获取到TEST所对应的网络接口环境地址为HOST_TEST变量的值,则通过赋值语句HOST=HOST_TEST,将所有主环境变量的值进行改变,即HOST为"http://test.xxx.com",HOST2=HOST2_TEST即HOST2为"http://test.2xx.com",若run_mode为DEBUG,则HOST=HOST_DEBUG即HOST为"http://debug.xxx.com",HOST2=HOST2_DEBUG即HOST2为"http://debug.2xx.com",若run_mode为RELEASE则不处理,HOST及HOST2的值本来就是线上环境。
基于上述实施例,所述环境切换入口模块还用于:
定义可切换的环境列表,所述可切换的环境列表中存储可切换的网络接口环境。
具体地,可切换的环境列表modeList的具体实现可以为数组[RELEASE,TEST,DEBUG],表示可切换的网络接口环境有发布环境,测试环、调试环境,可切换的环境列表应根据实际的环境数量设置。相应地,所述环境配置对话框中列出所述可切换的环境列表,以供开发人员或测试人员进行选择。
如图3所示,为本发明另一实施例提供的一种快速切换SDK网络接口环境的设备的结构示意图,包括:存储器31、处理器32、以及总线33,
所述处理器32和存储器31通过所述总线33完成相互间的通信;
所述存储器31存储有可被所述处理器32执行的程序指令,所述处理器32调用所述存储器31中的程序指令,以执行如上述各实施例所述的方法,例如包括:S1,定义用于存储当前所配置的网络接口环境的环境配置变量,并在SDK的Demo应用界面中增加用于显示当前所配置的网络接口环境的文本控件,并监听所述文本控件的长按事件;S2,当监听到所述长按事件时,弹出环境配置对话框以提示用户选择要切换的网络接口环境,并将用户选择的结果存储至所述环境配置变量中;S3,根据所述环境配置变量的值更新主环境变量,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
本发明又一实施例,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述各实施例所述的方法,例如包括:S1,定义用于存储当前所配置的网络接口环境的环境配置变量,并在SDK的Demo应用界面中增加用于显示当前所配置的网络接口环境的文本控件,并监听所述文本控件的长按事件;S2,当监听到所述长按事件时,弹出环境配置对话框以提示用户选择要切换的网络接口环境,并将用户选择的结果存储至所述环境配置变量中;S3,根据所述环境配置变量的值更新主环境变量,以供SDK的业务功能请求网络接口时访问所述主环境变量所对应的网络接口环境地址。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述一种快速切换SDK网络接口环境的设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。