android之GMS認證
來到了新的公司,才知道做手機是須要做GMS認證的。於是從一個從沒有做過GMS認證的小白到一個月做了8個項目的GMS認證。最後。自己都是吐了。每天晚上都是一個人傻傻在加班。更是知道了高通的支持力度讓人發抖,無奈的發抖。
以下是我做的一點做GMS認證的筆記。大家能夠參考。
事實上,我做完GMS認證後,在想,怎樣讓一個人從對一個領域一無所知到能得心應手的處理。想了很久。我想說應該是積累。
經驗的積累,能力的積累,信心的積累。
GMS綜述
GMS認證。一般要求我們提供CTS。 XTS。 Verify三份測試報告。例如以下圖:
Bin: 認證的軟件
CTS: CTS的測試報告
GTS: XTS的測試報告
ctsVerifierReports: Verify測試報告
- CTS:
CTS(全稱“Compatibility Test Suite”。即“兼容性測試包”)的認證,這是一組用以測試的.apk程序之類的集合,它能夠在官網(http://source.android.com/compatibility/downloads.html)上面免費下載。CTS的目的就是讓Android設備(如:手機)開發商能夠開發出兼容性更好的Android設備。 - GTS:
GMS全稱為Google Mobile Service,即谷歌移動服務。GMS是Google開發並推動Android的動力。也是Android系統的靈魂所在。
- Verify:
CTS都是指令自己主動測試。可是另一些測試是必須手動完畢的,這個是verify測試就是手動測試。
1.準備資料:
- GMS認證的視頻文件—android-cts-media-1.0.zip:
用法一:
新建test文件夾(內有bbb_full。bbb_short。copy_media.sh,make_zip.sh。README.txt ),手機需拷貝android-cts-media-1.0.zip解壓到test文件夾中(在不支持存儲空間的情況下,使用T卡替代)
用法二:
進入android-cts-media-1.1文件夾下,運行:
. /copy_media.sh all。或./copy_media.sh
就能夠把視頻復制手機上了,很的方便和快。 - android-cts文件
解壓android-cts-4.4_r1-linux_x86-arm.zip - CtsDeviceadmin.apk
此apk位於(android-cts\repository\testcases)文件夾下 - android-gts文件
解壓gts-2.1_r1.zip - CtsVerifier.apk
( 解壓android-cts-verifier-4.4_r3-linux_x86-arm.zip)
這些資料能夠從官網上下載:
http://source.android.com/compatibility/downloads.html(官網)
也能夠是客戶提供。
2.手機端準備
- Need insert empty SD card
- Insert valid SIM card
- 設置手機語言為英語:進入Settings–Language&input–Language設為English(UnitedStates)
- 輸入法默認使用android輸入法,Settings–Language&input–Default—English(US)
- 手機軟件需是User版本號(請用adb remount命令查看),需寫IMEI(請按*#06#查看)、MAC碼(settings–about phon–statu–wlan mac address)
- 去掉鎖屏(Settings –Security –Screen lock–none )
- 設置屏幕超時為最長時間30分鐘(Settings–Display–Sleep–30minutes)
- 進入Settings–Date & time–取消Automatic date&time勾選。取消Automatic time zone 勾選, Select time zone,選擇GMT-8:00 Pacific Time (註:當實行夏令時後。Pacific Tim會變成GMT-7:00)
- 打開developer options,Settings–About phone–高速點擊Build number 7次
- Settings–developer options–stay awake and usb debugging allow mock locations 勾選
- 打開WIFI並連接AP(須要可FQ的網絡,由於測試過程中須要連接google的server)
- 打開藍牙,Settings–Bluetooth
- 打開GPS,Settings—Location—開啟
- 打開數據連接。下拉狀態欄—選中Data on
- 安裝CtsDeviceadmin.apk
能夠拷貝到sd卡上再安裝,也能夠使用命令安裝:adb install ‘/home/android/CTS_hexiaoming/hexiaoming/CtsDeviceAdmin.apk’ - 將test文件夾拷貝到sd卡上,也能夠使用命令:
adb push ‘/home/android/CTS_hexiaoming/hexiaoming/test’ /sdcard/test
(或者進入到android-cts-media-1.1文件夾下,運行:
. /copy_media.sh all。或./copy_media.sh) - Settings—Security–Device administrators–勾選上 device administrators列表前三個選項,最後一個不勾選
- 運行時讓屏幕是home主界面上
- 運行過程中不要觸摸屏幕及button
註意:
- While a device is running tests, it must not be used for any other tasks
- Before start CTS, device at the home screen
- Do not press any keys on the device while CTS is running
- Make sure the AP is usability and connectedly.
- Make sure USB cable is stability
3.PC端:(Ubuntu系統)
3.1 CTS測試
android-cts文件(解壓)
1. 用USB線連接Linux PC
2.打開終端,進入android-cts/tools文件夾。輸入./cts-tradefed.終端顯示:
(假設沒有這行。說明設備沒有和PC連通)
3.輸入run cts–plan CTS,開始測試CTS
4.測試完畢後會自己主動生成xml報表,在anroid-cts/repository/results文件夾中(testResult.xml).
5.LOG信息在文件夾下:(android-cts\repository\logs)
普通情況,CTS測試一次不能所有通過,那麽怎樣僅僅測試Fail項了?
- 手動改動testResult.xml,使用gedit打開該文件(gedit testResult.xml)。
選擇查找搜索failed項。替換為notExecuted。然後保存。如圖:
又一次輸入./cts-tradefedcts-tf-> run cts–continue-session session_id
PS: session_id能夠通過在CTS命令行裏輸入l r查看到。比方輸入l r查看到的session_id為0那就應該在CTS的命令行輸入 run cts –continue-session 0這樣就會僅僅會繼續測試那些之前fail的項而不會去測試那些已經pass的項
我們怎樣改動報告
對於有的測試項。我們沒有環境。過不了。
可是我們能夠確定此項能夠pass,那麽我們能夠直接改動報告:
我們在改報告的時候。參考要改動的測試項的前一個pass項和後一個pass項。相應改動就能夠了,很的簡單。改動後,我們再讓其又一次跑一下。生成新的測試報告就能夠。
假設,我們單獨跑包或類:
To run a test package:
‘run cts –package ’
run cts -p android.os
To run a test class:
‘run cts –class ’
run cts -c android.app.cts.SystemFeaturesTest -m testSensorFeatures
run cts -c android.os.cts.Asyn
查看很多其它cts命令信息:
‘run cts –help’
l p————查看有那些功能
l packages——查看有那些包
註意事項:
1.CTS 4.0的命令和CTS 2.3/2.3全然不同,所以在進入CTS後。先輸入help看看命令的格式和意思。
2.正常測試一次CTS4.0,須要6-9小時。所以,測試時請接上電源,並盡量在晚上測試,不會影響設備的使用
3.CTS是自己主動化測試,測試過程中不須要人的幹預。假設在上班時間,每1-2小時觀察下就可以
4.CTS4.0在測試過程中斷開、終止都不會生成測試報告,所以。測試前要保證USB連接穩定和平臺設置
5.CTS運行run cts–plan CTS時,會搜索android-cts/repository/results中的歷史報表文件夾。假設文件有很多,啟動速度會很慢。所以。請定期清理results文件夾中的歷史報表(直接刪除報表文件夾就可以)
常見問題:
- 有時,復制會導致一些權限問題。這時,我們能夠運行sudo chmod 0777 filename來提高權限。
- CTS測試 高速入門—-MTK—很重要
id=53">https://onlinesso.mediatek.com/_layouts/15/mol/topic/ext/Topic.aspx?id=53
3.2 XTS測試:
android-gts文件(解壓gts-2.1_r1.zip)
XTS測試和CTS是一樣的,僅僅是要把命令略微相應的改一下就能夠了:
run xts–plan XTS
run xts–continue-session session_id
run xts -p android.os
run xts -c android.app.cts.SystemFeaturesTest -m testSensorFeatures
3.3 手動測試 CTS-verifier:
CtsVerifier.apk—-( 解壓android-cts-verifier-4.4_r3-linux_x86-arm.zip)
這個是手動測試。我們僅僅須要安裝此apk。然後依照說明一步一步操作就能夠了。最後,我們導出報告。
註意的事情:
- 這個測試還是有測試順序的。一般Policy Serialization Test 這個測試項最後一個測試,由於此項會導致後面的Keyguard Password Verification項過不了。我們能夠一開始就測試Keyguard Password Verification。最後一個測試Policy Serialization Test。
- Camera的測試項,我們要一個一個測試,不能直接按pass直接過,就是由於測試的報告裏有這些測試項的具體信息。
- 在測試Accelerometer Measurement Tests項前,我們在settings—Sound—Default notification sound選擇一個默認值。否則有可能由於此沒有設置,apk會crash。此項過不了。
- Streaming Video Quality Verifier測試項中,RTSP的三項,有wifi的話能夠過。可是HTTP PROGRESSIVE的三項是過不了的。也就是說Streaming Video Quality Verifier測試項是過不了的,這是正常的現象。
USB Accessory Test有時候運行命令,是沒有效果,這個有可能是電腦的原因,換臺電腦多試幾次。
USB Accessory Test in CTS Verifier, Please follow up below steps to test this item:
1) Install CTSVerifier.apk to the phone device.
2) Add “18d1:2d01” device to /etc/udev/rules.d/51-android.rules, and restart
About add “18d1:2d01” device to /etc/udev/rules.d/51-android.rules,
Please hlep to refer SOP part of “Setup CTS Environment (3/4)”
Ubuntu 10.4
New a udev configuration file for the usb and change the mode
sudo touch /etc/udev/rules.d/51-android.rules
sudo chmod a+rw /etc/udev/rules.d/51-android.rules
Add the below string in 51-android-rules to setup the USB
SUBSYSTEM==”usb”, ATTRS{idVendor}==”0bb4”, ATTRS{idProduct}==“0c03”, MODE=”0666“
Restart the udev service to update the configuration
sudo restart udev
Restart the Ubuntu
After connecting the Android device to the PC, type lsusb and you should see the below string if the connection is success:
example:
Bus 002 Device 002: ID 0bb4:0c03 High Tech Computer Corp.
3) Connect the phone to a linux pc, with adb enabled
4) Run cts-usb-accessory on linux PC, wait until “Found android device in accessory mode (18d1:2d01)
5) Device will pop a prompt to cts-verifier, start the CTS Verifier and run USB Accessory test.
6) make sure no other devices connnect to the PC.Bluetooth Test測試項,比較須要時間和耐心,要慢慢來操作。特別是BLE Client Test測試項更是如此。
我們測試此項時,能夠先記下mac地址(能夠寫一些簡單的mac地址,如(11:11:11:11:11:11) mac地址要區分大寫和小寫,這個也要註意),這是由於此項一般要測好多次才幹pass,每次都要求從頭開始,每次都要輸入mac地址。依據測試經驗。一般4.BLE Reliable Write 這個才是此測試是否能通過的關鍵,我通常是4.BLE Reliable Write在倒數第二步來測試。而且多輸入幾次信息(請不要每次僅僅輸入一個字母),直到另一部手機的Waiting on reliable write from client測試項顯示綠色。才最後運行8.BLE Client Disconnect就能夠通過此項測試。
data backup test測試項:
首先在cts verifier中隨便進行一項測試,打開設置中的備份和恢復,點擊 generate test data->ok
adb shell bmgr enable true
adb shell bmgr transport android/com.android.internal.backup.LocalTransport
adb shell bmgr run
adb uninstall com.android.cts.verifier
adb install F:\CTS4.0\CTS4.0.3_r2\apk4.0.3_r2\CtsVerifier_4.0.3_r1.apk測試完。我們使用adb push命令將測試報告導出就能夠了。
adb pull /sdcard/ctsVerifierReports /home/android/tmp
3.4 測試結果的一些註意:
測試結果表頭的問題,在文檔中要求CTS和GTS中的設備信息的Build Fingerprint中的簽名文件類型是release-key,也就是說。我們測試的軟件版本號的簽名要使用release-key,例如以下圖所看到的:
在文檔中要求GTS項的測試結果中的Properties屬性應該包含ro.com.google.gmsversion、ro.com.google.clientidbase,而且有的客戶對ro.com.google.clientidbase的名字是有要求的。例如以下圖,就缺少ro.com.google.clientidbase的項。
4 Fail項的處理
- 給高通提case,給MTK提eservice,由於這個一般自己能解的比較少。主要還是要靠高通和MTK來解。
- 慢慢積累自己的fail項庫
- 慢慢積累自己處理fail項的能力
android之GMS認證