GMS測試流程
一、接到認證需求
二、申請白名單
1、需要提供給客戶的是一個單項結果報告(zip包)
(1)用CTS工具跑
(2)跑的單項:
Provide CTS single test report for testSignature For 8.1
run cts -m CtsSystemCurrentApiSignatureTestCases -t android.signature.cts.api.SignatureTest#testSignatur
(3)生成 2018.10.25_09.52.08.zip檔案
2、交給客戶
三、客戶填寫摸底確認表
Product Model(“ro.product.model”)==HX_WW6_PRODUCT_MODEL
Product Name(“
Brand Name(“ro.product.brand”)===HX_WW6_PRODUCT_BRAND
Device Name(“ro.product.device”)===BOARD_WW6_RO_PRODUCT_DEVICE
Board Name(“ro.product.board”)====BOARD_WW6_RO_PRODUCT_BOARD
manufacturer(“ro.product.manufacturer”)===HX_WW6_PRODUCT_MANUFACTURER
google client id
四、確認IC 、3D、TP
查詢相機的datasheet ,調整FOV引數
五、申請白名單(需要① deviceID.txt檔案,② 白名單單項報告)
1、怎麼生成devicelD.txt
(1)注意:只能在linux環境下去執行
(2)執行python getdeviceid[keybox].py(這個指令碼,見附件)
(3)input brand name:這裡填寫ro.product.brand,如:HYUNDAI2
input device name:這裡填寫ro.product.device,如:E465GO10
input device count:這裡填寫數量如:50000
(4)生成的文字格式
注意
①必須在linux環境下操作(格式問題)、包括手動修改數字格式
②數量:
=30K,就要寫100K
<30K,寫50K
後面的數字格式可以修改
(5)
3.2.3 googlekey簡介
Attestation Key就是我們所說的googlekey,它是一種金鑰,( Key attestation)金鑰證明是一項Google要求的新功能,必須在安全硬體中處理RSA和ECDSA密,具體文件可見”Android Attestation Keybox Deployment V1.0.2.docx”
簡單來說:從8.0開始,所有要過認證的安卓裝置,都需要燒這個googlekey(部署),工廠生產時會去部署這個googlekey;GTS測試中有兩個單項專門針對googlekey,分別是testEcAttestationChain和testRsaAttestationChain,只有燒了googlekey才能通過這兩個單項。
3.2.4怎樣燒googlekey
環境:展訊給的文件實際上是針對工廠生成的,即一臺windows做伺服器用於配置googlekey,多臺windows做客戶端,客戶端只需要用imei工具,勾選Secure Provisioning
選項即可
步驟:
①解壓”對外工具V3.0.rar”
②製作googlekey
a客供檔案:2018-08-07_08-03-06.021_UTC.attest_keyboxes.E465GO.1533628989012.output.gz
b解壓後得到2018-08-07_08-03-06.021_UTC.attest_keyboxes.E465GO.1533628989012.output
c對外工具V3.0\1server\SecurityServer_R4.18.2101\ToolBox\SecureToolBox.exe
d配置伺服器端ini,並啟動
對外工具V3.0\1server\SecurityServer_R4.18.2101\SecurityServer\SecureCenter.ini
即:指定googlekey的路徑
啟動成功後
e配置客戶端IEMI寫號工具ini,並啟動
對外工具V3.0\2client\WriteIMEI_R19.18.2101\Bin\WriteIMEI.ini
表示使用本地伺服器的配置!
注意勾選Secure Provisiong,表示要燒googlekey
f以上工作之後,直接用寫號工具燒寫即可
3.2.5 googlekey重點注意事項
① goolekey只能部署一次
如果已經寫了googlekey,那就不能再覆蓋其他的key,我們也沒辦法去除key
實在要去除key,只能把機器寄給展訊處理!
② 每個googlekey與專案一一對應,不能相互燒寫!!!
所以要注意:平時只寫imei的時候,不要去用WriteIMEI_R19.18.2101這個工具,使用這個工具專門燒googlekey,防止誤燒googlekey
③ 工廠生產的機器,都要燒google key,一個googlekey最多100K
3.3摸底確認表
屬性:
Product Model(“ro.product.model”)==HX_WW6_PRODUCT_MODEL
Product Name(“ro.product.name”)===BOARD_WW6_RO_PRODUCT_NAME
Brand Name(“ro.product.brand”)===HX_WW6_PRODUCT_BRAND
Device Name(“ro.product.device”)===BOARD_WW6_RO_PRODUCT_DEVICE
Board Name(“ro.product.board”)====BOARD_WW6_RO_PRODUCT_BOARD
manufacturer(“ro.product.manufacturer”)=HX_WW6_PRODUCT_MANUFACTURER
google client id=ro.com.google.clientidbase=android-fortuneship(舉例)
Fingerprint平臺規則如下
ro.build.fingerprint=ro.product.brand/ro.product.model/ro.product.model/ro.build.version.release/ro.build.id/ro.build.version.incremental:ro.build.type/ro.build.tags
需要特別注意,ro.build.version.incremental和fingerprint屬性要保持一致
3.4樣機要求
需要客戶確認最終過認證的屏和相機,並提供5-8臺GMS認證測試樣機
3.5測試GMS
3.5.1環境搭建(暫時不用瞭解)
Onekey和下載sdk
① jdk 、sdk 、adb 、aapt
sudo vim ~/.profile
在末尾新增
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export CLASSPATH=
{JAVA_HOME}/bin:
PATH:
PATH:$HOME/android-sdk-linux/build-tools/28.0.2
儲存退出
然後執行命令使其生效:
source ~/.profile
② python
sudo apt-get install python-dev
sudo apt-get install python-protobuf
sudo apt-get install protobuf-compiler
sudo apt-get install python-virtualenv
sudo apt-get install python-pip
③ GMS工具包
解壓工具包到ubuntu伺服器(如android-cts-8.1_r7-linux_x86-arm.zip)
如:cts-8.1_r7、cts-verifier-8.1_r7、gts-6.0_r1、vts-4766758、sts-8.1_201808、cts_media1.4、gsi映象檔案、go_performance效能測試
3.5.2測試CTS
手機端:使用release軟體
1.將裝置恢復出廠設定:設定 > 備份和重置 > 恢復出廠設定(或者剛下載完軟體後不要去操作設定意外的應用)
2.將裝置的語言設定為英語(美國):設定 > 語言和輸入法 > 語言(非常重要)
3.如果裝置具有 GPS 或 WLAN/行動網路功能,則開啟位置資訊設定:設定 > 位置資訊 > 開啟
4.連線到滿足以下要求的 WLAN 網路:支援 IPv6,可以將被測裝置 (DUT) 視為隔離的客戶端(請參閱上文的物理環境部分),並可連線到網際網路(可翻牆):設定 > WLAN
5.確保裝置上未設定鎖定圖案或密碼:設定 > 安全 > 螢幕鎖定 > 無
6.在裝置上啟用 USB 除錯:設定 > 開發者選項 > USB 除錯。
7.確保將時間設定為 12 小時格式:設定 > 日期和時間 > 使用 24 小時制 > 關閉
8.依次選擇:設定 > 開發者選項 > 不鎖定螢幕 > 開啟
9.依次選擇:設定 > 開發者選項 > 允許模擬位置 > 開啟
10.依次選擇:設定 > 開發者選項 > 通過 USB 驗證應用 > 關閉
11.啟動瀏覽器並關閉任何啟動/設定螢幕。
12.使用 USB 資料線連線用於測試裝置的桌上型電腦
13.設定-顯示-睡眠 > 設定成30分鐘或者never
14.插入8G的T卡(class 10等級),將T卡設定成內部儲存
15.將 CTS 媒體檔案複製到裝置上
[email protected]:~/workspaces/cts/cts_media1.4$ ./copy_images.sh -s xxx;./copy_media.sh -s xxx
Ubuntu端測試:使用cts包
- [email protected]:~/workspaces/cts$ cd cts-8.1_r7/android-cts/tools/
- [email protected]:~/workspaces/cts/cts-8.1_r7/android-cts/tools$ ./cts-tradefed
- 全跑:cts-tf > run cts -s 0180627163608 (0180627163608 是SN號 adb devices可以檢視)
- 複測:run cts -s xxx --retry n (n是之前跑過的結果序號,通過 “l r”命令可以檢視)
- 測試一個指定的單項:
run cts -s xx -m CtsCameraTestCases -t android.hardware.cts.CameraTest#testVideoSnapshot - 測試一個指定的模組:run cts -s 0180627163608 -m CtsCameraTestCases
3.5.3測試GTS
Ubuntu端要求:能翻牆,使用gts包
手機端設定:使用release軟體
不用T卡、不用拷貝媒體檔案、需要燒googlekey、其餘和CTS一樣
Ubuntu端測試:
[email protected]:~/workspaces/cts$ cd gts-6.0_r1/android-gts/tools/
[email protected]:~/workspaces/cts/gts-6.0_r1/android-gts/tools$ ./gts-tradefed
3.全跑run gts -s xxx --ignore-business-logic-failure
4.複測run retry -s 0180627163608 --retry 1 --ignore-business-logic-failure
5.單跑run gts -s xxx -m xxx -t xxx
GTS中會有兩個googlekey的測試項,如果沒有燒googlekey,則失敗
3.5.3測試CTSV
使用release軟體
ctsV需要將工具包中的CtsVerifier.apk解壓出來,並安裝到手機,然後手動測試
CTSV是交給測試工程師去測的
但是我們軟體再給測試工程師測試之前,要求先自測以下常見失敗項:
①FOV–見ctsV資料夾的說明
大致步驟:
a首先明確攝像頭sensoe型號,並從攝像頭技術手冊查出引數Pixel Size值
格科sensor可在其官網http://www.gcoreinc.com/product1/查詢。
思比科sensor可在其官網http://www.superpix.com.cn/cn/About1.asp?ID=31 查詢。
這裡Pixel Size為L×H=1.12um*1.12um
後攝:
const sensor_fov_tab_t back_sensor_fov_tab[]
前攝:
const sensor_fov_tab_t front_sensor_fov_tab[]
—時間關係 先整理到這裡,後續補充
②音訊
③相機播放()
測試的注意事項
a.需要指定裝置SN號
B.如果出現電腦卡頓,先將手機埠拔出,3分鐘後會自動斷開並生成報告
3.5.4測試VTS
Ubuntu端:使用VTS包
手機端環境:使用release軟體+google映象
a.解鎖並燒googleimage
b.不需要媒體檔案
c.不需要T卡
d.需要連線wifi
其餘設定和CTS一致
[email protected]:~/workspaces/cts/vts-4766758/android-vts/tools$ ./vts-tradefed
完全測試指令:run vts –s device ID
Retry fail項指令:run vts –s deivce ID –-retry session ID
解鎖和燒google映象的步驟:
將VTS&GSI\fastboot檔案拷貝到Ubuntu,將映象檔案也拷貝到這個目錄,命名為system.img
連線到電腦上,開啟usb除錯,輸入 adb -s xxxxxxxx reboot bootloader
a. sudo ./fastboot oem get_identifier_token 命令獲取android 裝置號
b. ./signidentifier_unlockbootloader.sh device_sn rsa4096_vbmeta.pem signature_file 生成裝置號簽名值
device_sn 為步驟 a 獲取裝置號
rsa4096_vbmeta.pem 為 vbmeta 映象私鑰
c. sudo ./fastboot flashing unlock_bootloader signature_file 命令解鎖裝置
使用者根據相應提示使用“volume down”鍵進行解鎖確認
d.採用分段下載system.img
sudo ./fastboot flash -S 100m system system.img
e.下載完後,輸入命令 sudo fastboot reboot 重啟手機
注意:reboot之後需要格式data空間才能正常開機
f. 裝置解鎖後,可使用 sudo ./fastboot flashing lock_bootloader 命令重新鎖定裝置
注意:簽名檔案要和平臺的對應
vendor/sprd/proprietories-source/packimage_scripts/signimage/sprd/config/rsa4096_vbmeta.pem
3.5.5測試GSI
Ubuntu端:使用VTS包–GSI和VTS共用一個包
手機端環境:使用release軟體+google映象
1.解鎖並燒googleimage
2.其餘設定和CTS一致:
需要媒體檔案、需要T卡、需要連線wifi
步驟:
[email protected]:~/workspaces/cts/vts-4766758/android-vts/tools$ ./vts-tradefed
全跑:run cts-on-gsi -s 0181009085851
複測:run cts-on-gsi -s 0181009085851 --retry 6
3.5.6測試STS
Ubuntu端:sts工具包
手機端環境:使用userdebug軟體
不需要wifi、不需要T卡、不需要媒體檔案
sts是8月份新增的測試報告,專門測試安全補丁的,Android 8.1 STS需要使用debug版本測試,
全測:run sts-engbuild -s xxxxxxx 測試時間大概是3個半小時
重測!
1.刪除報告裡面的檔案checksum.data
2.run sts-engbuild -s 51928180576609 --retry 0
3.5.7效能測試
兩種方式:
①ubuntu指令碼
[email protected]:~/workspaces/cts/go_performance$ ./main.sh
②Windows使用ctest工具
安裝cTestClient_3.1.26—可能會搶佔adb埠
執行startClient.bat
登入賬號:jliang 密碼:123456
點選後會在瀏覽器端開啟測試網頁,建議用火狐瀏覽器
建議:使用windows端的ctest工具來跑,原因:
在Ubuntu端試過,沒跑出來過完整的報告,會中斷!
3.5.8 BTS測試
BTS(Build Test Suites) 6月份開始強制執行,提交image給3PL,3PL上傳給Google,一天左右出結果。
①掃描是否包含PHA惡意軟體
②檢查Security Patch合入情況
③人工抽查backdoor
我們不需要做任何處理,我們pac給客戶之後,客戶會提供給3PL的!
4.軟體規範
參照:軟體規範\GMSExpressGuide_V6.0.pdf
目前7731E都是過GMS Express Plus,也叫GMS Express +
GMS Express是谷歌認證的快速通道,週期短
以前還有一種 Clean UX,但從2018/3/31號開始摒棄
7731E平臺都是做Go版本的(RAM<2GB),所以我們可以參照GMSExpressGuide_V4.0.pdf文件的GMS Express Plus for Go部分
(文件裡面的三種方式主要區別在於是否用谷歌應用覆蓋平臺應用、是否使用Go版本應用)
GMS Express+ for Go,以下是硬性軟體要求:
4.1開機logo
參照Google Bootup Requirement_20180430.pdf
在之前的摸底確認表裡面有一項:3pl是否確認過開機logo
我們可以通過文件,排除顯而易見的錯誤logo,我們要提醒客戶讓3PL確認logo是否OK!
Go版本有3種樣式的 power by android go edition
有兩種佈局是OK的:第一種是帶客戶logo的,要求logo放中間,android放底部,且logo寬度必須大於android;第二種是不帶客戶logo的,必須android放中間
4.2待機介面的佈局
搜尋框、Google資料夾、Play Store都是固定位置;Chrome必須放熱區那一排,可以調整
Google資料夾內容(512M的可以不內建Maps Go)
(正常應該用YouTubeGo 版本,除非是出美國)
4.3屬性配置
①project.sh
Product Model(“ro.product.model”)==HX_WW6_PRODUCT_MODEL
Brand Name(“ro.product.brand”)===HX_WW6_PRODUCT_BRAND
manufacturer(“ro.product.manufacturer”)===HX_WW6_PRODUCT_MANUFACTURER
②BoardConfig.mk
Product Name(“ro.product.name”)===BOARD_WW6_RO_PRODUCT_NAME
Device Name(“ro.product.device”)===BOARD_WW6_RO_PRODUCT_DEVICE
Board Name(“ro.product.board”)====BOARD_WW6_RO_PRODUCT_BOARD
③sp7731e_xxx_project.mk
PRODUCT_PROPERTY_OVERRIDES +=
ro.com.google.clientidbase=android-fortuneship(舉例)
④gms_xxx.mk配置gms_express_plus_feature
4.4 Apk覆蓋
可以在google_zy\apps\路徑下看到,平臺已經做好了,內建其中的apk就會覆蓋對應apk
①GoogleSearchGo覆蓋QuickSearchBox GoogleSearch GoogleQuickSearchBox VoiceSearch SprdQuickSearchBox
②GmailGo覆蓋Email Exchange2 Gmail2 SprdEmail Email2
③MessagesGo覆蓋messaging
④LatinImeGoogleGo覆蓋LatinIME TouchPalGlobal
⑤Chrome覆蓋Browser Browser2 SprdBrowser
⑥FilesGo覆蓋FileExplorer FileExplorerDRMAddon
4.5測試apk和feature是否正確
文件中列出來的adb項,都必須為期望的值
參看pdf文件,後續整理一個txt檔案出來
adb shell pm list features |grep GMSEXPRESS_PLUS_BUILD需要有對應的feature
按鍵功能要求:
長按Home啟動谷歌智慧助手(預設如此)
短按Menu最近執行WW6_SHORT_MENU_ENTER_RECENT := true
frameworks\base\data\keyboards\Generic.kl
key 139 APP_SWITCH
5.已過GMS認證的專案參考
0021539: 財富十三部
sp7731e_FS280M60_C10_CF13_MS408_E465GO_HYUNDAI_Central_America_32x4_G4W125_FWVGA.sh
值得注意的是,這個專案是出美國的,有特殊要求:YouTube不能使用go版本,其他地區,目前沒有特殊要求!
MR SMR後續補充