CN103514069A - 测试Android系统HAL层API的方法及系统 - Google Patents

测试Android系统HAL层API的方法及系统 Download PDF

Info

Publication number
CN103514069A
CN103514069A CN201210478051.6A CN201210478051A CN103514069A CN 103514069 A CN103514069 A CN 103514069A CN 201210478051 A CN201210478051 A CN 201210478051A CN 103514069 A CN103514069 A CN 103514069A
Authority
CN
China
Prior art keywords
file
test
hal
source code
android
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.)
Pending
Application number
CN201210478051.6A
Other languages
English (en)
Inventor
齐珂
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TCL Corp
Original Assignee
TCL Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TCL Corp filed Critical TCL Corp
Priority to CN201210478051.6A priority Critical patent/CN103514069A/zh
Publication of CN103514069A publication Critical patent/CN103514069A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开测试Android系统HAL层API的方法及系统,其中,包括步骤:在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序;所述测试程序按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;将测试结果输出并保存。本发明通过生成可直接执行的测试程序,通过该测试程序来对Android系统HAL层进行测试,节约了大量测试时间,并且能快速、准确的判断HAL层每个API接口的实现情况,在测试完毕后,还将测试结果以直观的方式输出并保存,方便回查比对。

Description

测试Android系统HAL层API的方法及系统
技术领域
本发明涉及软件领域,尤其涉及一种测试Android系统HAL层API的方法及系统。
背景技术
由于Android系统具有突出的易用性和开源性,越来越多的电子设备厂商选择采用Android系统作为其操作系统,手机、PAD、甚至是电视,都已经加入了Android系统的阵营。
但由于各个厂商所选用的硬件设备不同,想要Android系统能顺利运行在自己的硬件平台上,就需要针对Android系统的HAL层(Hardware Abstraction Layer,即硬件抽象层)做定制开发来匹配自己的底层硬件,此过程需要在HAL层开发过程中或者开发结束后快速有效的对其测试,来检验HAL层所提供的API(Application Programming Interface,应用程序编程接口)是否正常匹配了底层硬件。
一般而言,用户在使用Android系统的时候,直接接触的是各种丰富的应用程序(Application,简称APP),当用户点击一个APP而打开并使用的时候,Android系统的工作流程为:APP基于Android底层运行,然后调用本地服务,然后调用HAL动态库,加载各种so后缀文件,然后调用系统内核,最后打开相应的硬件设备;在上述流程中,我们要重点关心的是HAL动态库的调用环节,此处涉及到的就是Android系统移植过程中所要开发的HAL层,也是本发明中所要验证的一块。通常情况下,针对不同硬件设备开发的HAL层会在系统编译的最后生成xxx.so的文件(其中xxx表示不同的厂商标识),并将被置于/system/lib/hw目录下,供系统动态调用。
例如,音频设备相关的so文件可能为,摄像头设备相关的so文件可能为,GPS设备相关的so文件可能为,API即各个so文件中包含的可供上层调用的接口函数,比如audio.primary.xxx.so中会包含下列API:get_supported_devices,init_check,set_voice_volume等等。
在Android系统中,为了测试音频设备相关的HAL层API(包含于audio.primary.xxx.so中)是否正确的实现了预想的功能,最直观的方式是通过使用相关的APP来测试。比如使用音乐播放器,如果能正常的听到声音,能正常录音,那么基本可以确定待测试的audio相关的HAL 层API是正确的实现了其功能的。同理,其他设备,比如camera,gps,sensor等也可以这样测试。
但是这种测试方法在测试到APP不能实现正常的功能时,就不能准确定位是哪里出错了,例如在使用音乐播放器测试时,发现不能正常听到声音,在音乐播放器使用过程的众多环节中,问题有可能出在APP本身、runtime阶段或者Native Service层,上述测试方法并不能准确判断是哪里出了问题,并且,这种测试方法不能保证一个APP就能测试到HAL层提供的所有API。
因此,现有技术还有待于改进和发展。
发明内容
鉴于上述现有技术的不足,本发明的目的在于提供测试Android系统HAL层API的方法及系统,旨在解决现有技术中HAL层测试不能准确定位、不能测试预定API的问题。
本发明的技术方案如下:
一种测试Android系统HAL层API的方法,其中,包括步骤:
A、在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件; 
B、根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序;
C、所述测试程序按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
D、将测试结果输出并保存。
所述测试Android系统HAL层API的方法,其中,所述步骤B具体包括:
B1、在Android源码下将所述源代码文件编译为中间文件;
B2、根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
所述测试Android系统HAL层API的方法,其中,所述步骤C具体包括:
C1、根据测试程序中不同硬件设备的编号加载相应的HAL层so库;
C2、打开并初始化对应的硬件设备;
C3、按照预设的方式调用所述硬件设备对应的HAL层so库中的API接口进行测试。
所述测试Android系统HAL层API的方法,其中,所述步骤D具体包括:
D1、在Android系统中创建一测试结果输出文件;
D2、利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
一种测试Android系统HAL层API的系统,其中,包括:
文件设置模块,用于在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;
测试程序生成模块,用于根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序;
API接口测试模块,用于按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
测试结果输出模块,用于将测试结果输出并保存。
所述测试Android系统HAL层API的系统,其中,所述测试程序生成模块包括:
编译单元,用于在Android源码下将所述源代码文件编译为中间文件;
生成单元,用于根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
所述测试Android系统HAL层API的系统,其中,所述API接口测试模块包括:
加载单元,用于根据测试程序中不同硬件设备的编号加载相应的HAL层so库;
打开单元,用于打开并初始化对应的硬件设备;
测试单元,用于按照预设的方式调用所述硬件设备对应的HAL层so库中的API接口进行测试。
所述测试Android系统HAL层API的系统,其中,所述测试结果输出模块包括:
创建单元,用于在Android系统中创建一测试结果输出文件;
输出单元,用于利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
有益效果:本发明通过生成可直接执行的测试程序,通过该测试程序来对Android系统HAL层进行测试,节约了大量测试时间,并且能快速、准确的判断HAL层每个API接口的实现情况,在测试完毕后,还将测试结果以直观的方式输出并保存,方便回查比对。
附图说明
图1为本发明测试Android系统HAL层API的方法较佳实施例的流程图。
图2为图1中生成测试程序的具体流程图。
图3为图1中测试API接口的具体流程图。
图4为图1中输出保存测试结果的具体流程图。
图5为图1中输出保存测试结果后的具体流程图。
图6为本发明测试Android系统HAL层API的系统较佳实施例的结构框图。
图7为图6中测试程序生成模块的具体结构框图。
图8为图6中API接口测试模块的具体结构框图。
图9为图6中测试结果输出模块的具体结构框图。
图10为图6中所示系统另一实施方式的结构框图。
具体实施方式
本发明提供一种测试Android系统HAL层API的方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
请参阅图1,图1为本发明测试Android系统HAL层API的方法较佳实施例的流程图,如图所示,其包括步骤:
S101、在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件; 
S102、根据所述配置文件控制所述源代码文件生成Android系统下可直接执行的测试程序;
S103、所述测试程序按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
S104、将测试结果输出并保存。
在步骤S101中,首先在Android源码中设置一源代码文件和配置文件,例如在Android源码中的/external目录中增加一个目录,例如TestAPI目录,然后在此TestAPI目录下设置相应的Android.mk文件(Makefile文件)和源代码文件,其中的Android.mk文件即配置文件,Android.mk文件是Android系统中特有的文件,其用于控制源代码文件例如TestAPI.c文件生成Android系统下可直接执行的程序。
在步骤S102中,配置好的源代码文件和配置文件将按照一定的方式生成所需的测试程序,如图2所示,其具体包括步骤:
S201、在Android源码下将所述源代码文件编译为中间文件;
S202、根据所述配置文件控制所述中间文件在Android源码指定路径下生成可直接执行的测试程序。
上述步骤首先是将源代码文件编译为系统识别的中间文件,然后通过所述配置文件控制中间文件生成所需的测试程序。
在步骤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库。
S302、打开并初始化对应的硬件设备;进行测试前,将相应的硬件设备打开并初始化。
S303、调用所述硬件设备对应的HAL层so库中的API接口进行测试,测试程序会按照预设的方式调用API接口来测试,该预设的方式是指预先设置好需要测试的API接口,因为so库中可能包含各种各样的API接口,所以预先设置好需测试的API接口,控制测试程序调用相应的API接口进行测试,例如如果是audio设备,那么可能的API接口可以是set_voice_volume。测试程序在测试过程中,也会返回相应的值,来表示能够实现或不能实现,例如0代表能实现,1代表不能实现等等。
在步骤S104中,上述步骤已完成了对HAL层API的测试,但为了方便测试人员能够更加直观的看到测试结果,也为了能够未来进行回查,本发明还增加一个输出程序,该输出程序是利用linux系统提供fprintf函数来设计的,例如在Android系统的/data目录(也可自定义)下创建一个文本文件(如result.txt文件,可自定义),然后使用fprint函数将结果全部输出至result.txt文件中,这样在每次执行完对HAL层API的测试后,都能直观地看到测试结果,并且保存该测试结果。
如图4所示,步骤S104可具体细化为以下步骤:
S401、在Android系统中创建一测试结果输出文件;
S402、利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
如图5所示,在所述步骤S104之后,所述方法还包括:
S105、设置一测试问题对比库,所述的测试问题对比库存储有设备常见技术问题的输出特征参数及对应的技术问题提示描述;
S106、将输出的测试结果的输出特征参数与问题对比库中的输出特征参数作对比,根据对比的匹配度,给出设备可能存在的技术问题提示。
首先将一些常见技术问题所包含的输出特征参数与对应的技术问题相关联,并存储在测试问题对比库中。通过设置上述测试问题对比库,在输出测试结果之后,只需将输出结果的输出特征参数与测试问题对比库中的输出特征参数进行对比,匹配到测试问题对比库中的某一输出特征参数之后,即可给出与该输出特征参数对应的技术问题提示,从而使测试人员更加方便地获得测试结果中所包含的技术问题,测试人员也可以根据给出的技术问题提示有针对性的解决该技术问题,从而提高测试效率。
基于上述方法,本发明还提供一种测试Android系统HAL层API的系统,如图6所示,其包括:
文件设置模块100,用于在Android源码中设置一用于生成测试程序的源代码文件和用于配置所述源代码文件的配置文件;
测试程序生成模块200,用于根据所述配置文件控制所述代码源文件生成Android系统下可直接执行的测试程序;
API接口测试模块300,用于按照预设的方式调用硬件设备对应的HAL层so库中的API接口进行测试;
测试结果输出模块400,用于将测试结果输出并保存。
进一步,如图7所示,所述测试程序生成模块200包括:
编译单元210,用于在Android源码下将所述源代码文件编译为中间文件;
生成单元220,用于根据配置文件控制所述中间文件在Android源码指定路径下生成所述测试程序。
进一步,如图8所示,所述API接口测试模块300包括:
加载单元310,用于根据测试程序中不同硬件设备的编号加载相应的HAL层so库;
打开单元320,用于打开并初始化对应的硬件设备;
测试单元330,用于按照预设的方式调用所述硬件设备对应的HAL层so库中的API接口进行测试。
进一步,如图9所示,所述测试结果输出模块400包括:
创建单元410,用于在Android系统中创建一测试结果输出文件;
输出单元420,用于利用fprintf函数将测试结果输出至所述测试结果输出文件,并保存所述测试结果输出文件。
进一步,如图10所示,所述系统还包括:
测试问题对比库单元500,所述的测试问题对比库单元存储有设备常见技术问题的输出特征参数及对应的技术问题提示描述数据;
测试技术问题提示单元600,用于将输出的测试结果的输出特征参数与问题对比库单元中的输出特征参数作对比,根据对比的匹配度,给出设备可能存在的技术问题提示。关于上述功能模块的作用在前面的方法中已有详述,故不再赘述。
综上所述,本发明通过生成可直接执行的测试程序,通过该测试程序来对Android系统HAL层进行测试,节约了大量测试时间,并且能快速、准确的判断HAL层每个API接口的实现情况,在测试完毕后,还将测试结果以直观的方式输出并保存,方便回查比对。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

Claims (10)

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具体包括:
C1、根据测试程序中不同硬件设备的编号加载相应的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的系统,其特征在于,所述的系统还包括:
测试问题对比库单元,所述的测试问题对比库单元存储有设备常见技术问题的输出特征参数及对应的技术问题提示描述数据;
测试技术问题提示单元,用于将输出的测试结果的输出特征参数与问题对比库单元中的输出特征参数作对比,根据对比的匹配度,给出设备可能存在的技术问题提示。
CN201210478051.6A 2012-11-22 2012-11-22 测试Android系统HAL层API的方法及系统 Pending CN103514069A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210478051.6A CN103514069A (zh) 2012-11-22 2012-11-22 测试Android系统HAL层API的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210478051.6A CN103514069A (zh) 2012-11-22 2012-11-22 测试Android系统HAL层API的方法及系统

Publications (1)

Publication Number Publication Date
CN103514069A true CN103514069A (zh) 2014-01-15

Family

ID=49896832

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210478051.6A Pending CN103514069A (zh) 2012-11-22 2012-11-22 测试Android系统HAL层API的方法及系统

Country Status (1)

Country Link
CN (1) CN103514069A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204987A (zh) * 2014-06-25 2015-12-30 腾讯科技(深圳)有限公司 数据获取方法、装置及电子设备
CN105487982A (zh) * 2015-12-22 2016-04-13 艾体威尔电子技术(北京)有限公司 Api测试方法及系统
WO2017012218A1 (zh) * 2015-07-17 2017-01-26 中兴通讯股份有限公司 利用tck测试安卓系统j2me标准接口实现的方法
CN107205015A (zh) * 2017-04-14 2017-09-26 阿里巴巴集团控股有限公司 开放接口的实现方法和装置
CN113835768A (zh) * 2021-11-29 2021-12-24 北京鲸鲮信息系统技术有限公司 一种Android混合HAL的管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261600A (zh) * 2007-03-06 2008-09-10 中兴通讯股份有限公司 一种软件测试装置及测试软件的设计方法
CN102045181A (zh) * 2009-10-10 2011-05-04 中国移动通信集团公司 一种终端脱网故障的处理方法和装置
CN102141960A (zh) * 2011-03-18 2011-08-03 广东欧珀移动通信有限公司 一种基于Android的自动化测试方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101261600A (zh) * 2007-03-06 2008-09-10 中兴通讯股份有限公司 一种软件测试装置及测试软件的设计方法
CN102045181A (zh) * 2009-10-10 2011-05-04 中国移动通信集团公司 一种终端脱网故障的处理方法和装置
CN102141960A (zh) * 2011-03-18 2011-08-03 广东欧珀移动通信有限公司 一种基于Android的自动化测试方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
罗升阳: "在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务", 《HTTP://BLOG.CSDN.NET/LUOSHENGYANG/ARTICLE/DETAILS/6580267》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105204987A (zh) * 2014-06-25 2015-12-30 腾讯科技(深圳)有限公司 数据获取方法、装置及电子设备
CN105204987B (zh) * 2014-06-25 2018-09-07 腾讯科技(深圳)有限公司 数据获取方法、装置及电子设备
WO2017012218A1 (zh) * 2015-07-17 2017-01-26 中兴通讯股份有限公司 利用tck测试安卓系统j2me标准接口实现的方法
CN105487982A (zh) * 2015-12-22 2016-04-13 艾体威尔电子技术(北京)有限公司 Api测试方法及系统
CN107205015A (zh) * 2017-04-14 2017-09-26 阿里巴巴集团控股有限公司 开放接口的实现方法和装置
CN113835768A (zh) * 2021-11-29 2021-12-24 北京鲸鲮信息系统技术有限公司 一种Android混合HAL的管理方法及系统

Similar Documents

Publication Publication Date Title
KR102096195B1 (ko) 플러그인화 패키징 방법, 장치, 터미널 및 저장 매체
CN107402788B (zh) 资源打包管理方法与装置
CN104281518B (zh) 终端应用测试方法、装置、系统、平台及移动终端
US11853820B2 (en) Cross-process communication method, apparatus, and device
CN103514069A (zh) 测试Android系统HAL层API的方法及系统
CN102782611A (zh) 移动装置及其控制方法
CN109508198A (zh) 应用程序安装方法、装置、存储介质及终端
CN112463634B (zh) 微服务架构下的软件测试方法及装置
CN111930617B (zh) 基于数据对象化的自动化测试方法及装置
CN107526605A (zh) 实现应用程序加载服务组件的方法和装置
CN108132879A (zh) 自动化软件测试方法、平台、终端及介质
CN102486735A (zh) 一种手机软件动态加载方法及装置
CN101699396A (zh) 一种无线终端菜单的生成方法及其装置
CN107015873A (zh) App的功能模块的调用方法、组件接口装置、电子设备及App
CN112114789B (zh) 一种业务开发方法及设备
CN106775879B (zh) 基于安卓系统客户端的vr应用免安装方法及其系统
CN102999371B (zh) 基于Lua脚本的人机界面开发方法及系统
CN112241373A (zh) 自动化测试方法、测试装置、处理器和测试系统
CN104133669B (zh) 一种桌面应用的控制方法及终端设备
KR101254756B1 (ko) 복수의 운영체제와 호환 가능한 가상머신 생성 방법 및 가상머신 프로그램을 저장한 기록매체
CN104298502A (zh) 浏览器静音方法及装置
CN106775608A (zh) 独立系统进程的实现方法和装置
CN103927197A (zh) 用于在电子装置中执行应用程序的方法和设备
CN113485709A (zh) 应用优化方法、装置以及电子设备
CN101853134A (zh) 一种手持设备人机界面主题加载方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20140115