本文檔主要初步整理Android P對GMS認證的新要求
一、基本環境
主機要求:
- Java 8
- Python 2.7
- ADB 1.0.39
VTS 環境
$ 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
注意事項:
1、P版的CTS測試過程中,不要拔手機,否則最終結果無法完整測試出所有模塊
2、測試指令發生了變化,具體可在終端使用help查看
3、由于AVB2.0的影響,替換GSI和之前的方法有所不同,需要注意
二、CTS
1、Android 9.0 針對 WLAN RTT 功能增加了一個 API,此 API 允許設備測量自身與接入點之間的距離,從而顯著提高室內位置信息精確度。
以下是支持 WLAN RTT 的兩款推薦設備:Google Wifi 和 Compulab 的 Filet2 接入點(使用 5GHz 頻段,帶寬設為 40MHz)。
2、Android 9.0 的初始 API 級別
對于搭載 Android 9.0 的設備,請將屬性 ro.product.first_api_level 設置為在代號、標記和細分版本號上找到的有效值。
對于搭載 Android 8.x 或更低版本的設備,請為產品的第一個版本取消設置(移除)屬性 ro.product.first_api_level。對于所有后續版本,請將 ro.product.first_api_level 設置為正確的 API 級別值。
3、Android 9.0 引入了 Open Mobile API 測試用例,用于檢查安全元件底層實現是否符合標準,需要特殊的SIM卡進行測試。
4、視頻播放的存儲空間要求
以下是按最大視頻播放分辨率列出的存儲空間要求:
- 480x360: 98MB
- 720x480: 193MB
- 1280x720: 606MB
- 1920x1080: 1863MB
5、部分基本要求
屏幕尺寸至少為 2.5 英寸。
必須支持第三方輸入法編輯器應用。
必須提供“Home”、“Recents”和“Back ”功能;“Back ”功能的常規按下事件和長按事件都可以發送到前臺應用,上述事件不得被系統占用,且可從 Android 設備外部觸發。
必須支持觸摸屏輸入。
如果包含各種sensor,則需要保證sensor的最低性能要求,參考CDD文檔。
32位系統和64位系統,在不同的密度和分辨率的情況下,對最小內存都有要求,參考CDD文檔。
必須包含麥克風,必須具有音頻輸出機制,并聲明 android.hardware.audio.output。
必須支持多種音頻視頻編解碼,具體參考CDD文檔。
Android 9.0 CDD文檔:https://source.android.com/compatibility/9/android-9-cdd
百度云盤:https://pan.baidu.com/s/13Cwr5rj9GrC2qhDoM-NCvg 提取:gyth
----待更新----
三、CTS-ON-GSI
----待更新----
四、VTS
1、Android 8.x VTS測試包括98個測試模塊,總共約6100項測試;Android 9.0 VTS測試則包括212個模塊,總共約 7790 項測試。
2、對于搭載Android 9.0 的設備,有兩組可用的 GSI:一組用于搭載 Android 9 的設備,另一組則用于升級到 Android 9 的設備。
搭載 Android 9 的設備可以為 A/B 和非 A/B 設備使用相同的 GSI。
例如,要測試基于 arm64 ABI 且包含與 2018-08-05 Android 安全安全補丁程序的設備,請選擇以下 GSI:
system_aosp_arm64_20180805.img
升級到 Android 9 的設備應使用與該設備(是否支持 A/B 更新)的 ABI 對應的 GSI 以及設備的 security_patch_level。這種方式與搭載 Android 8.x 的設備的方式類似。
例如,要測試基于 arm64 ABI、支持 A/B 更新且包含與 2018-08-05 Android安全補丁程序的設備,請選擇以下 GSI:
system_aosp_arm64_ab_20170801.img
3、注意:運行 Android 8.x 的設備不需要SIM 卡。運行 Android 9.0 的設備則必須包含一張用于 VTS 測試的 SIM 卡。用于VTS測試的SIM卡與用于CTS中Open Mobile API測試的SIM卡是同一種特殊的SIM卡。
4、確保設備已連接到支持 IPv6 的 WLAN 網絡(如果該設備具有GPS/WLAN/移動網絡功能,必須將其恢復出廠設置并開啟位置信息設置)。
五、GTS
GMS包更新了以下幾個feature:
- Uncompressed DEX in Privileged Apps
- AndroidPlatformServices
- GoogleRestore
- Device Health Services (Turbo)
- GmsCore APK Variant for Android 9
- GoogleContacts is Non-privileged
- Non-SDK API Access Whitelist
- Google Media Effects Library Deprecation
- Use of PRODUCT_SYSTEM_DEFAULT_PROPERTIES
- Updated Wizard Scripts
- Updated SearchLauncher
1、Android 9.0不再需要com.google.android.media.effects.jar,包括已升級的設備。
2、Android 9.0如果預加載GoogleContacts,則必須為非特權(non-privileged ),版本必須高于2.5。
3、Android 9.0設置向導中的A backup from the cloud選項要出現在Google帳戶登錄界面之前。
4、Android 9.0的GMS備份功能支持端到端加密備份,需要注意鎖屏實現機制。
5、Android 9.0的GMS設備必須保留SettingsBackupAgent。
6、Android 9.0引入了App standby buckets,讓平臺根據用戶限制應用程序。如果啟用此功能,Google必須可以更新限制參數,以確保應用開發者的一致性。
具體的內容請參考以下文檔:
鏈接:https://pan.baidu.com/s/1Slz0Y7bXhTEHGWuAVXa6Xg
提取碼:39a0
----待更新----
六、BTS
BTS測試直接測試Android系統鏡像。通過掃描系統鏡像,檢查其中是否預安裝了惡意軟件和其他可能有害的應用 (可能是由 OEM 的供應商和提供商引入的)。BTS 采用了和 Google Play同樣的安全掃描和分析的技術。
注意:Google 會不斷更新數據庫以及用于檢測惡意軟件和安全威脅的技術。所以可能之前通過的版本也會被檢測出來新的問題。
可以通過以下某種方式上傳軟件版本(我們一般通過3PL提交):
Google云端硬盤:google將共享一個 Google 云端硬盤文件夾,可以將自己的版本復制到該文件夾中。
SFTP保管箱:google將為您設置一個安全文件傳輸協議 (SFTP) 帳號,以上傳編譯軟件。
通過3PL提交:使用其中一種支持的格式將固件提交給3PL驗證者。
在后臺,BTS 會自動在 Google 的基礎架構上運行,無法離線使用的內部服務。BTS 完成后,相關結果會出現在 APFE 上。
BTS結果處理:
任何疑似預安裝了惡意軟件或其他問題都將被視為測試失敗無法通過認證。Google只能提供惡意軟件軟件包名稱和惡意軟件類。無法提供關于可能產生的影響、其行為或如何檢測到該行為的詳細信息。
如果Google在版本已獲批準后發現問題,合作伙伴必須及時處理新問題,并發布已根據合作伙伴協議解決相關問題的更新版本。仍然包含問題的新版本將不會獲得批準。
如果認為APK的標記有誤,需要上報給google,并提供盡可能詳細的關于該應用預期功能的信息。提供有關文件來源的詳細信息(尤其是在文件由內部或由供應商制作而成的情況下)。Google會根據具體情況進行調查并處理這些應用。
七、STS
----待更新----
八、Cts Verifier
1、Cts Verifier測試中Android9.0關于camera的測試相對于Android8.x來說更加復雜,測試項也更多,需要重點關注。
----待更新----
九、GMS認證注意事項
1、所有自動化測試套件都會嘗試在運行時下載內容,包括CTS媒體文件或業務邏輯文件。很多情況下防火墻會導致測試準備失敗。可以嘗試嘗試將下面的內容添加到.profile(在Ubuntu上)。
export JAVA_TOOL_OPTIONS =' - Djava.net.useSystemProxies = true'
2、Android 9.0 強烈建議預加載app的最低目標SDK版本為26或者更高。
3、Android 9.0 必須支持DNS over TLS,并且必須提供UI支持,默認的DNS隱私模式設置應該是自動的。
4、Android 9.0 的Widevine 數字版權管理,Android 9: Version 14 for new devices. Version 13 or 14 for upgrading devices。
5、應用程序崩潰對話框,Android 9.0 改變了App Crash Dialog的行為。它不再出現前臺和后臺應用程序的一次性崩潰。但是,如果應用程序連續崩潰兩次或多次,App Crash Dialog仍會顯示,讓用戶可以選擇查看應用信息或強制關閉應用,不能修改此行為。
6、Android 9.0引入了在AOSP中發布的運營商ID數據庫packages/providers/TelephonyProvider/assets/carrier_list.textpb
,不能改變此實現或數據庫的內容,必須使用AOSP中發布的最新版本的運營商ID數據庫。
7、如果滿足某些硬件要求,強烈推薦Android 9.0 支持低延遲,MIDI和專業音頻功能。
- Devices having 2GB or more RAM: [`android.hardware.audio.low_latency`] [`android.software.midi`]
- Devices having 4GB or more RAM: [`android.hardware.audio.pro`]
8、Android 9.0中,如果ActivityManager.isLowRamDevice()為false,相機HAL必須使用android.hardware.camera.device@3.2或更高版本。
如果ActivityManager.isLowRamDevice()為true,則攝像頭HAL可以提供android.hardware.camera.device@1.0版本。但強烈建議使用3.2版本及以上。
9、Android 9.0的設備必須在以下內核版本上運行:
- 4.4.107 or higher
- 4.9.84 or higher
- 4.14.42 or higher
在2018年下半年推出的SoC必須運行在4.9.8以及以上的內核版本
10、VNDK library classification and ABI
Android 9.0的設備必須默認打開 VNDK snapshots :BOARD_VNDK_VERSION := current
11、Android 9.0的設備必須在設備的非易失性存儲上具有以下分區:
- system - for the framework-specific portions of the code
- vendor - for the chipset-specific portions of the code
- boot - for the Linux kernel image
12、Android 9.0的設備的設備必須使用system-as-root
- BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
13、系統SDK要求
Android 9.0 的設備必須通過設置BOARD_SYSTEMSDK_VERISONS:= 28來啟用SystemSDK。
Vendor分區中的所有APK和JAR都不得使用系統分區中定義的隱藏API。
無論API是否來自AOSP,系統分區中定義的隱藏API都不得使用@SystemApi進行注釋。
14、Android 9.0的設備必須定義PRODUCT_SHIPPING_API_LEVEL, 其值必須大于等于28。
15、Android 9.0 的Managed profile badging標記有變化,如下圖:
----待更新----