[Android 6.0 測試指南](https://developer.android.com/about/versions/marshmallow/android-6.0-testing.html)
利用 Android 6.0,您有機會確保應用可使用下一平臺版本。如 API 概覽和行為變更中所述,此預覽版包括大量 API 和可能影響應用的行為變更。使用預覽版測試應用時,您應重點關注一些特定的系統變更,確保用戶擁有愉悅的體驗。
本指南介紹可使用您的應用測試哪些預覽版功能以及如何測試。您應確定優先測試以下特定預覽版功能,因為它們可能會對應用行為產生較大影響:
* 權限
* 低電耗模式和應用待機模式
* 自動備份和設備標識符
#### **測試權限**
新權限模式改變了用戶向您的應用分配權限的方式。您的應用必須在運行時要求用戶提供各項權限,而不是在安裝過程中要求授予所有權限。對于用戶而言,此行為有助于他們更精細地控制每個應用的 Activity,并更深入地了解應用為何請求提供特定權限的上下文信息。用戶可以隨時向應用授予某項權限或撤銷其某項權限。預覽版的這種功能最有可能會對應用行為產生影響,而且可能會阻止某些應用功能運行或只能在降級狀態中運行。
> 這一變更會影響在新平臺上運行的所有應用,即便這些應用并非面向新平臺版本開發亦是如此。該平臺為舊版應用提供有限的兼容性行為,但您現在應當開始計劃將應用遷移到新權限模式,以便在官方平臺啟動時發布更新的應用版本。
**測試提示**
使用以下測試提示有助于您計劃并通過新權限行為執行應用測試。
* 識別應用的當前權限和相關的代碼路徑。
* 在各種受權限保護的服務和數據中測試用戶流程。
* 使用授予/撤銷權限的各種組合進行測試。
* 使用 adb 工具從命令行管理權限:
* 按組列出權限和狀態:
`adb shell pm list permissions -d -g`
* 使用以下語法授予或撤銷一項或多項權限:
`adb shell pm [grant|revoke] <permission.name> ...`
* 針對使用權限的服務對應用進行分析。
#### **測試策略**
權限更改會影響應用的結構和設計,以及您為用戶提供的用戶體驗和流程。您應評估應用的當前權限使用情況并開始計劃要提供的新流程。平臺的正式版本提供兼容性行為,但您應計劃更新應用,而不是依賴于這些行為。
確定應用實際需要和使用的權限,然后找出各種使用受權限保護的服務的代碼路徑。您可通過結合使用新平臺測試和代碼分析完成此操作。在測試中,您應通過將應用的 targetSdkVersion 更改為預覽版,重點關注選擇運行時權限。如需了解詳細信息,請參閱[設置 Android N SDK](https://developer.android.com/preview/setup-sdk.html)。
使用已撤銷和已添加權限的各種組合進行測試,突出顯示依賴于權限的用戶流程。如果依賴關系不明顯或不符合邏輯,則您應考慮重構或劃分該流程,以消除依賴關系或闡明需要權限的原因。
如需了解有關運行時權限行為、測試和最佳做法的詳細信息,請參閱權限開發者預覽版頁面。
#### **測試低電耗模式和應用待機模式**
當設備處于空閑狀態或應用未聚焦時,低電耗模式和應用待機模式的節能功能將限制應用可執行的后臺處理工作量。系統可對應用實施的限制包括:限制或禁止訪問網絡、暫停后臺任務、暫停通知、忽略喚醒請求和鬧鈴。要確保應用在完成這些節能優化后正常運行,您應通過模擬這些低功耗狀態對應用進行測試。
#### **在低電耗模式下測試您的應用**
要在低電耗模式下測試您的應用,請執行以下操作:
1. 使用 Android N 系統映像配置硬件設備或虛擬設備。
2. 將設備連接到開發計算機并安裝應用。
3. 運行應用并使其保持活動狀態。
4. 通過運行以下命令,模擬進入低電耗模式的設備:
~~~
$ adb shell dumpsys battery unplug
$ adb shell dumpsys deviceidle step
$ adb shell dumpsys deviceidle -h
~~~
5. 觀察重新激活設備時的應用行為。確保應用在設備退出低電耗模式時正常恢復。
#### **在應用待機模式下測試您的應用**
要在應用待機模式下測試您的應用,請執行以下操作:
1. 使用 Android N 系統映像配置硬件設備或虛擬設備。
2. 將設備連接到開發計算機并安裝應用。
3. 運行應用并使其保持活動狀態。
4. 通過運行以下命令,模擬進入待機模式的應用:
~~~
$ adb shell am broadcast -a android.os.action.DISCHARGING
$ adb shell am set-idle <packageName> true
~~~
5. 使用以下命令模擬如何喚醒應用:
~~~
$ adb shell am set-idle <packageName> false
~~~
6. 觀察喚醒后的應用行為。確保應用從待機模式中正常恢復。特別地,您應檢查應用的通知和后臺作業是否按預期繼續運行。
#### **自動備份應用和設備特定的標識符**
如果應用堅持在內部存儲空間中使用任何設備特定的標識符,如 Google 云消息傳遞注冊 ID,請確保遵循最佳做法將存儲位置從自動備份中排除,如[自動備份應用中所述](https://developer.android.com/preview/backup/index.html)。
- 前言
- Google官網對Android API各版本的介紹
- jelly Bean(果凍豆)Android 4.1、4.2、4.3
- Android 4.1
- Android 4.2
- Android 4.3
- KitKat(Android 4.4.*)巧克力
- Android 4.4 APIS
- Lollipop(棒棒糖)Android 5.*
- Android 5.0 APIs
- Android 5.0 Changes(變更)
- Android 5.1APIs
- Marshmallow(棉花糖)Android 6.0
- Android 6.0 APIs
- Android 6.0 Changes(變更)
- Android 6.0 Samples
- Android 6.0 Testing
- Nougat(牛扎塘)Android 7.*
- Android 7.0
- API
- 行為變更
- 示例
- Android 7.1
- 開發者API
- 示例Sample
- Oreo(奧利奧)8.*
- Android 8.0
- 功能和 API
- Android 8.0 行為變更
- 向 Android 8.0 遷移應用
- Android 8.0 示例
- Android 8.1
- 后臺執行限制
- 后臺位置限制
- API指南
- Android 簡介
- 應用基礎知識
- 設備兼容性
- 系統權限
- 請求權限
- 定義權限
- 平臺架構
- Java8 概覽
- 在ART上驗證應用行為
- 應用組件
- Intent 和 Intent 過濾器(Google官網介紹)
- 通用intent
- Activity
- 任務和返回棧(官網譯文)
- 概覽屏幕
- 活動簡介
- 活動生命周期
- 活動狀態更改
- 進程和應用程序生命周期
- 包裹和捆綁
- 最近的屏幕
- 片段
- 加載器
- 服務Service
- 綁定服務
- AIDL
- 內容提供程序
- 內容提供程序基礎知識
- 創建內容提供程序
- 日歷提供程序
- 聯系人提供程序
- 存儲訪問框架
- 使用存儲訪問框架打開文件
- 創建自定義文檔提供程序
- 應用小部件
- 應用小部件主機
- 進程和線程
- 應用資源
- 概覽
- 提供資源
- 訪問資源
- 處理運行時變更
- 本地化
- ICU4J Android框架API
- Android上的國際化
- 語言和語言區域
- 復雜的XML資源
- 資源類型
- 動畫
- 顏色狀態列表
- 可繪制對象
- 布局
- 菜單
- 字符串
- 樣式
- 其他類型
- 應用清單
- <action>
- <activity>
- <activity-alias>
- <application>
- <category>
- <compatiable-screens>
- <data>
- <grant-uri-permission>
- <intent-filter>
- <manifest>
- <meta-data>
- <path-permission>
- <permission>
- <permission-group>
- <permission-tree>
- <provider>
- <receiver>
- <service>
- <supporte-gl-texture>
- <supports-screens>
- <uses-configuration>
- <uses-feature>
- <uses-library>
- <uses-permission>
- <uses-permission-sdk-23>
- <uses-sdk>
- 用戶界面
- 界面概覽
- 界面布局
- 線性布局
- 相對布局
- 列表視圖
- 網格視圖
- 回收站視圖
- 外觀和感覺
- 可下載的字體
- XML中的字體
- 表情符號兼容性
- 自動調整TextView
- 樣式和主題-
- 輸入控件
- 按鈕
- 文本字段
- 復選框
- 單選按鈕
- 切換按鈕
- 微調框
- 選取器
- 輸入事件
- 菜單Menu
- 設置
- 對話框
- 通知
- Toast
- 自適應圖標
- 應用快捷方式
- 搜索
- 創建搜索界面
- 添加近期查詢建議
- 添加自定義建議
- 可搜索配置
- 多窗口支持
- 拖放
- 無障礙功能
- 為應用設置無障礙功能
- 無障礙功能開發者檢查單
- 構建無障礙服務
- 讓應用更容易訪問
- 使用節點樹調試
- 構建可訪問自定義視圖
- 樣式和主題
- 自定義組件
- 動畫和圖形
- 概覽介紹
- 屬性動畫
- 視圖動畫
- 可繪制動畫
- 畫布和可繪制對象
- 基于物理的動畫
- Spring Animation
- Fling Animation
- OpenGL ES
- 硬件加速
- 計算
- RenderScript
- 高級RenderScript
- Runtime API Reference(參考)
- Numerical Types(數字類型)
- Object Types(對象類型)
- Conversion Functions(轉換函數)
- Mathematical Constants and Functions(數學常量和函數)
- Vector Math Functions(矢量數學函數)
- Matrix Functions(矩陣函數)
- Quaternion Functions(四元數函數)
- Atomic Update Functions(原子更新函數)
- Time Functions and Types(時間函數和類型)
- Allocation Data Access Functions(分配數據訪問函數)
- Object Characteristics Functions(對象特性函數)
- Kernel Invocation Functions and Types(內核調用函數和類型)
- Input/Output Functions(輸入輸出函數)
- Debugging Functions(調試函數)
- Graphics Functions and Types(圖形函數和類型)
- Index(索引)
- Media Apps(媒體應用)
- Media Apps Overview(媒體應用程序概述)
- Working with a Media Session(使用媒體會話)
- Building an Audio App(建立一個音頻應用)
- Building a Media Browser Service(構建媒體瀏覽器服務)
- Building a Media Browser Client(構建媒體瀏覽器客戶端)
- Media Session Callbacks(媒體會話回調)
- Building a Video App(建立一個視頻應用)
- Building a Video Player Activity(建立一個視頻播放器Activity)
- Media Session Callbacks-(媒體會話回調)
- Responding to Media Buttons(響應媒體按鈕)
- Handling Changes in Audio Output(處理音頻輸出的變化)
- Managing Audio Focus(管理音頻焦點)
- The Google Assistant and Media Apps(Google智能助理和媒體應用)
- 媒體和相機
- Supported Media Formats(支持的媒體格式)
- MediaPlayer(媒體播放器)
- MediaRecorder
- ExoPlayer
- Controller Amplitude with VolumeShaper(VolumeShaper控制器振幅)
- Media Routing(媒體路由)
- MediaRouter API
- MediaRouteProvider API
- Camera API(相機API)
- 位置和傳感器
- Location and Maps(位置和地圖)
- Location Strategies(位置策略)
- Sensors Overview(傳感器概覽)
- Motion Sensors(運動傳感器)
- Position Sensors(位置傳感器)
- Environment Sensors(環境傳感器)
- Raw GNSS Measurements(原始的GNSS測量)
- 連接
- Bluetooth
- Bluetooth Low Energy(藍牙低功耗)
- NFC
- NFC Basics(NFC基礎知識)
- Advanced NFC(高級NFC)
- Host-based Card Emulation(基于主機的卡模擬)
- Telecom(電信)
- Self-Managed ConnectionServices(自我管理的連接服務)
- Wi-Fi P2P
- Wi-Fi Aware
- Companion Device Pairing
- USB
- Accessory(配件)
- Host(主機)
- SIP
- 文本和輸入
- Autofill Framework(自動填充框架)
- Test your app with autofill(使用自動填充測試你的應用)
- Building autofill services(構建自動填充服務)
- Copy and Paste(復制和粘貼)
- Creating an IME(創建IME)
- Image Keyboard(圖像鍵盤)
- Spelling Checker(拼寫檢查程序)
- 數據存儲
- Storage Options(存儲選項)
- Data Backup(數據備份)
- Account Transfer API(賬戶轉移API)
- Auto Backup(自動備份)
- Key/Value Backup(鍵值備份)
- Testing Backup and Restore(測試備份和還原)
- App Install Location(應用安裝位置)
- 庫
- 支持庫
- 功能
- 修訂歷史記錄
- 庫設置
- 數據綁定庫
- 測試支持庫
- 管理
- 設備策略
- 網絡應用
- Supporting Different Screens in Web Apps(在網絡應用中支持不同屏幕)
- Building Web Apps in WebView(在WebView中構建網絡應用)
- Managing WebViews
- Migrating to WebView in Android 4.4(遷移到Android4.4中的WebView)
- Debugging Web Apps(調試網絡應用)
- Best Practices for Web Apps(網絡應用最佳做法)
- 最佳實踐
- Supporting Multiple Screens(支持多種屏幕)
- Distributing to Specific Screens(分配到特定屏幕)
- Screen Compatibility Mode(屏幕兼容性模式)
- Designing for Seamlessness
- Supporting Tablets and Handsets
- 培訓