测试Android系统HAL层API的方法及系统的制作方法

文档序号:6491455阅读:1634来源:国知局
测试Android系统HAL层API的方法及系统的制作方法
【专利摘要】本发明公开测试Android系统HAL层API的方法及系统,其中,包括步骤:在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序;所述测试程序按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;将测试结果输出并保存。本发明通过生成可直接执行的测试程序,通过该测试程序来对Android系统HAL层进行测试,节约了大量测试时间,并且能快速、准确的判断HAL层每个API接口的实现情况,在测试完毕后,还将测试结果以直观的方式输出并保存,方便回查比对。
【专利说明】测试Andro i d系统HAL层API的方法及系统
【技术领域】
[0001 ] 本发明涉及软件领域,尤其涉及一种测试Android系统HAL层API的方法及系统。【背景技术】
[0002]由于Android系统具有突出的易用性和开源性,越来越多的电子设备厂商选择采用Android系统作为其操作系统,手机、PAD、甚至是电视,都已经加入了 Android系统的阵

口 ο
[0003]但由于各个厂商所选用的硬件设备不同,想要Android系统能顺利运行在自己的硬件平台上,就需要针对Android系统的HAL层(Hardware Abstraction Layer,即硬件抽象层)做定制开发来匹配自己的底层硬件,此过程需要在HAL层开发过程中或者开发结束后快速有效的对其测试,来检验HAL层所提供的APKApplication Programming Interface,应用程序编程接口)是否正常匹配了底层硬件。
[0004]一般而言,用户在使用Android系统的时候,直接接触的是各种丰富的应用程序(Application,简称APP),当用户点击一个APP而打开并使用的时候,Android系统的工作流程为:APP基于Android底层运行,然后调用本地服务,然后调用HAL动态库,加载各种so后缀文件,然后调用系统内核,最后打开相应的硬件设备;在上述流程中,我们要重点关心的是HAL动态库的调用环节,此处涉及到的就是Android系统移植过程中所要开发的HAL层,也是本发明中所要验证的一块。通常情况下,针对不同硬件设备开发的HAL层会在系统编译的最后生成XXX.SO的文件(其中XXX表示不同的厂商标识),并将被置于/system/lib/hw目录下,供系统动态调用。
[0005]例如,音频设备相关的so文件可能为,摄像头设备相关的so文件可能为,GPS设备相关的SO文件可能为,API即各个SO文件中包含的可供上层调用的接口函数,比如audi0.primary, xxx.so 中会包含下列 API:get_supported_devices, init_check, set_voice_volume 等等。
[0006]在Android系统中,为了测试音频设备相关的HAL层API(包含于audio, primary,xxx.SO中)是否正确的实现了预想的功能,最直观的方式是通过使用相关的APP来测试。比如使用音乐播放器,如果能正常的听到声音,能正常录音,那么基本可以确定待测试的audio相关的HAL层API是正确的实现了其功能的。同理,其他设备,比如camera, gps,sensor等也可以这样测试。
[0007]但是这种测试方法在测试到APP不能实现正常的功能时,就不能准确定位是哪里出错了,例如在使用音乐播放器测试时,发现不能正常听到声音,在音乐播放器使用过程的众多环节中,问题有可能出在APP本身、runtime阶段或者Native Service层,上述测试方法并不能准确判断是哪里出了问题,并且,这种测试方法不能保证一个APP就能测试到HAL层提供的所有API。
[0008]因此,现有技术还有待于改进和发展。
【发明内容】

[0009]鉴于上述现有技术的不足,本发明的目的在于提供测试Android系统HAL层API的方法及系统,旨在解决现有技术中HAL层测试不能准确定位、不能测试预定API的问题。
[0010]本发明的技术方案如下:
一种测试Android系统HAL层API的方法,其中,包括步骤:
A、在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;
B、根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程
序;
C、所述测试程序按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
D、将测试结果输出并保存。
[0011]所述测试Android系统HAL层API的方法,其中,所述步骤B具体包括:
B1、在Android源码下将所述源代码文件编译为中间文件;
B2、根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
[0012]所述测试Android系统HAL层API的方法,其中,所述步骤C具体包括:
Cl、根据测试程序中不同硬件设备的编号加载相应的HAL层SO库;
C2、打开并初始化对应的硬件设备;
C3、按照预设的方式调用所述硬件设备对应的HAL层so库中的API接口进行测试。
[0013]所述测试Android系统HAL层API的方法,其中,所述步骤D具体包括:
D1、在Android系统中创建一测试结果输出文件;
D2、利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
[0014]一种测试Android系统HAL层API的系统,其中,包括:
文件设置模块,用于在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;
测试程序生成模块,用于根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序;
API接口测试模块,用于按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
测试结果输出模块,用于将测试结果输出并保存。
[0015]所述测试Android系统HAL层API的系统,其中,所述测试程序生成模块包括: 编译单元,用于在Android源码下将所述源代码文件编译为中间文件;
生成单元,用于根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
[0016]所述测试Android系统HAL层API的系统,其中,所述API接口测试模块包括:
加载单元,用于根据测试程序中不同硬件设备的编号加载相应的HAL层so库;
打开单元,用于打开并初始化对应的硬件设备;
测试单元,用于按照预设的方式调用所述硬件设备对应的HAL层so库中的API接口进行测试。
[0017]所述测试Android系统HAL层API的系统,其中,所述测试结果输出模块包括: 创建单元,用于在Android系统中创建一测试结果输出文件;
输出单元,用于利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
[0018]有益效果:本发明通过生成可直接执行的测试程序,通过该测试程序来对Android系统HAL层进行测试,节约了大量测试时间,并且能快速、准确的判断HAL层每个API接口的实现情况,在测试完毕后,还将测试结果以直观的方式输出并保存,方便回查比对。
【专利附图】

【附图说明】
[0019]图1为本发明测试Android系统HAL层API的方法较佳实施例的流程图。
[0020]图2为图1中生成测试程序的具体流程图。
[0021 ] 图3为图1中测试API接口的具体流程图。
[0022]图4为图1中输出保存测试结果的具体流程图。
[0023]图5为图1中输出保存测试结果后的具体流程图。
[0024]图6为本发明测试Android系统HAL层API的系统较佳实施例的结构框图。
[0025]图7为图6中测试程序生成模块的具体结构框图。
[0026]图8为图6中API接口测试模块的具体结构框图。
[0027]图9为图6中测试结果输出模块的具体结构框图。
[0028]图10为图6中所示系统另一实施方式的结构框图。
【具体实施方式】
[0029]本发明提供一种测试Android系统HAL层API的方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0030]请参阅图1,图1为本发明测试Android系统HAL层API的方法较佳实施例的流程图,如图所示,其包括步骤:
5101、在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;
5102、根据所述配置文件控制所述源代码文件生成Android系统下可直接执行的测试
程序;
5103、所述测试程序按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
5104、将测试结果输出并保存。
[0031]在步骤SlOl中,首先在Android源码中设置一源代码文件和配置文件,例如在Android源码中的/external目录中增加一个目录,例如TestAPI目录,然后在此TestAPI目录下设置相应的Android, mk文件(Makefile文件)和源代码文件,其中的Android, mk文件即配置文件,Android, mk文件是Android系统中特有的文件,其用于控制源代码文件例如TestAP1.c文件生成Android系统下可直接执行的程序。
[0032]在步骤S102中,配置好的源代码文件和配置文件将按照一定的方式生成所需的测试程序,如图2所示,其具体包括步骤:
5201、在Android源码下将所述源代码文件编译为中间文件;
5202、根据所述配置文件控制所述中间文件在Android源码指定路径下生成可直接执行的测试程序。
[0033]上述步骤首先是将源代码文件编译为系统识别的中间文件,然后通过所述配置文件控制中间文件生成所需的测试程序。
[0034]在步骤S103中,所述测试程序按照预设的方式调用HAL层so库中的API接口进行测试,其具体是先加载不同的so库,然后打开测试的硬件设备,然后进行测试,如图3所示,其包括:
S301、根据测试程序中不同硬件设备的编号加载相应的HAL层so库;因为不同硬件设备对应不同的 HAL 层 so 库,例如 audio, primary, xxx.so、camera, xxx.so、gps.xxx.so 等等,所以此步骤需要加载所需测试的硬件设备的编号对应的HAL层so库,例如音频硬件设备对应的HAL层so库。
[0035]S302、打开并初始化对应的硬件设备;进行测试前,将相应的硬件设备打开并初始化。
[0036]S303、调用所述硬件设备对应的HAL层so库中的API接口进行测试,测试程序会按照预设的方式调用API接口来测试,该预设的方式是指预先设置好需要测试的API接口,因为so库中可能包含各种各样的API接口,所以预先设置好需测试的API接口,控制测试程序调用相应的API接口进行测试,例如如果是audio设备,那么可能的API接口可以是set_voice_volume0测试程序在测试过程中,也会返回相应的值,来表示能够实现或不能实现,例如O代表能实现,I代表不能实现等等。
[0037]在步骤S104中,上述步骤已完成了对HAL层API的测试,但为了方便测试人员能够更加直观的看到测试结果,也为了能够未来进行回查,本发明还增加一个输出程序,该输出程序是利用Iinux系统提供fprintf函数来设计的,例如在Android系统的/data目录(也可自定义)下创建一个文本文件(如result, txt文件,可自定义),然后使用fprint函数将结果全部输出至result, txt文件中,这样在每次执行完对HAL层API的测试后,都能直观地看到测试结果,并且保存该测试结果。
[0038]如图4所示,步骤S104可具体细化为以下步骤:
5401、在Android系统中创建一测试结果输出文件;
5402、利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
[0039]如图5所示,在所述步骤S104之后,所述方法还包括:
5105、设置一测试问题对比库,所述的测试问题对比库存储有设备常见技术问题的输出特征参数及对应的技术问题提示描述;
5106、将输出的测试结果的输出特征参数与问题对比库中的输出特征参数作对比,根据对比的匹配度,给出设备可能存在的技术问题提示。
[0040]首先将一些常见技术问题所包含的输出特征参数与对应的技术问题相关联,并存储在测试问题对比库中。通过设置上述测试问题对比库,在输出测试结果之后,只需将输出结果的输出特征参数与测试问题对比库中的输出特征参数进行对比,匹配到测试问题对比库中的某一输出特征参数之后,即可给出与该输出特征参数对应的技术问题提示,从而使测试人员更加方便地获得测试结果中所包含的技术问题,测试人员也可以根据给出的技术问题提示有针对性的解决该技术问题,从而提高测试效率。
[0041]基于上述方法,本发明还提供一种测试Android系统HAL层API的系统,如图6所示,其包括:
文件设置模块100,用于在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;
测试程序生成模块200,用于根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序;
API接口测试模块300,用于按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
测试结果输出模块400,用于将测试结果输出并保存。
[0042]进一步,如图7所示,所述测试程序生成模块200包括:
编译单元210,用于在Android源码下将所述源代码文件编译为中间文件;
生成单元220,用于根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
[0043]进一步,如图8所示,所述API接口测试模块300包括:
加载单元310,用于根据测试程序中不同硬件设备的编号加载相应的HAL层so库;
打开单元320,用于打开并初始化对应的硬件设备;
测试单元330,用于按照预设的方式调用所述硬件设备对应的HAL层so库中的API接口进行测试。
[0044]进一步,如图9所示,所述测试结果输出模块400包括:
创建单元410,用于在Android系统中创建一测试结果输出文件;
输出单元420,用于利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
[0045]进一步,如图10所示,所述系统还包括:
测试问题对比库单元500,所述的测试问题对比库单元存储有设备常见技术问题的输出特征参数及对应的技术问题提示描述数据;
测试技术问题提示单元600,用于将输出的测试结果的输出特征参数与问题对比库单元中的输出特征参数作对比,根据对比的匹配度,给出设备可能存在的技术问题提示。关于上述功能模块的作用在前面的方法中已有详述,故不再赘述。
[0046]综上所述,本发明通过生成可直接执行的测试程序,通过该测试程序来对Android系统HAL层进行测试,节约了大量测试时间,并且能快速、准确的判断HAL层每个API接口的实现情况,在测试完毕后,还将测试结果以直观的方式输出并保存,方便回查比对。
[0047]应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。
【权利要求】
1.一种测试Android系统HAL层API的方法,其特征在于,包括步骤: A、在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件; B、根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序; C、所述测试程序按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试; D、将测试结果输出并保存。
2.根据权利要求1所述测试Android系统HAL层API的方法,其特征在于,所述步骤B具体包括: B1、在Android源码下将所述源代码文件编译为中间文件; B2、根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
3.根据权利要求1所述测试Android系统HAL层API的方法,其特征在于,所述步骤C具体包括: Cl、根据测试程序中不同硬件设备的编号加载相应的HAL层so库; C2、打开并初始化对应的硬件设备; C3、按照预设的方式调用所述硬件`设备对应的HAL层so库中的API接口进行测试。
4.根据权利要求1所述测试Android系统HAL层API的方法,其特征在于,所述步骤D具体包括: D1、在Android系统中创建一测试结果输出文件; D2、利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
5.根据权利要求1所述测试Android系统HAL层API的方法,其特征在于,所述步骤D之后,还包括: E、设置一测试问题对比库,所述的测试问题对比库存储有设备常见技术问题的输出特征参数及对应的技术问题提示描述; F、将输出的测试结果的输出特征参数与问题对比库中的输出特征参数作对比,根据对比的匹配度,给出设备可能存在的技术问题提示。
6.一种测试Android系统HAL层API的系统,其特征在于,包括: 文件设置模块,用于在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件; 测试程序生成模块,用于根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序; API接口测试模块,用于按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试; 测试结果输出模块,用于将测试结果输出并保存。
7.根据权利要求6所述测试Android系统HAL层API的系统,其特征在于,所述测试程序生成模块包括: 编译单元,用于在Android源码下将所述源代码文件编译为中间文件;生成单元,用于根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
8.根据权利要求6所述测试Android系统HAL层API的系统,其特征在于,所述API接口测试模块包括: 加载单元,用于根据测试程序中不同硬件设备的编号加载相应的HAL层so库; 打开单元,用于打开并初始化对应的硬件设备; 测试单元,用于按照预设的方式调用所述硬件设备对应的HAL层so库中的API接口进行测试。
9.根据权利要求6所述测试Android系统HAL层API的系统,其特征在于,所述测试结果输出模块包括: 创建单元,用于在Android系统中创建一测试结果输出文件; 输出单元,用于利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
10.根据权利要求6所述测试Android系统HAL层API的系统,其特征在于,所述的系统还包括: 测试问题对比库单元,所述的测试问题对比库单元存储有设备常见技术问题的输出特征参数及对应的技术问题提示描述数据; 测试技术问题提示单元,用于将输出的测试结果的输出特征参数与问题对比库单元中的输出特征参数作对比,根据 对比的匹配度,给出设备可能存在的技术问题提示。
【文档编号】G06F11/22GK103514069SQ201210478051
【公开日】2014年1月15日 申请日期:2012年11月22日 优先权日:2012年11月22日
【发明者】齐珂 申请人:Tcl集团股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1