應用程式能否獲得長期的成功,其中涉及的層面包括安裝次數、使用者評論、參與度和留存率。
如要為優質應用程式奠定穩固基礎,請遵循核心應用程式品質指南。
這些規範定義了所有應用程式應符合的最低品質。
自動調整式應用程式品質
Android 應用程式可支援各種裝置,包括小型手機、平板電腦、折疊式裝置、桌機、連網螢幕、車輛資訊娛樂系統、電視和 XR。分割畫面和電腦視窗等視窗模式可讓應用程式在螢幕上以可調整大小的部分執行。
請遵循適應性應用程式品質指南和核心應用程式品質指南,採取下列行動:
- 建立適用於所有板型規格和螢幕尺寸的最佳化應用程式
- 讓應用程式在 Google Play 商店資訊和搜尋結果中獲得更高的排名
- 開發更多使用者並提高使用者留存率
規範
下列核心指南可協助您建構基本的優質應用程式。
使用者體驗
應用程式應提供標準的 Android 視覺設計和互動模式,打造出一致且直覺的使用者體驗。
盡可能使用 Material Design 元件建立應用程式的使用者介面,而非使用 Android 平台元件。Material Design 提供新式 Android 外觀和風格,並在各個 Android 版本之間提供一致的 UI。
| ID | 測試 | 說明 |
|---|---|---|
| 可用性 | ||
| 可用性:使用者體驗 | T-Usability:Core、 T-SD-Card |
應用程式在所有板型規格上,都能為所有用途提供一致的使用者體驗。 |
| 可用性:切換器 | T-Usability:Switcher、 T-SD-Card |
當焦點切換至其他應用程式時,應用程式會進入背景。從「最近使用的應用程式」切換器重新啟動應用程式時,應用程式會返回前景。 |
| 可用性:睡眠 | T-Usability:Sleep、 T-SD-Card |
如果應用程式在前台運作,裝置進入休眠狀態時,應用程式會暫停,裝置喚醒時則會繼續運作。 |
| 可用性:鎖定 | T-Usability:Lock、 T-SD-Card |
如果應用程式在前台運作,裝置鎖定時會暫停,解鎖時則會繼續運作。 |
| 使用者介面 | ||
| UI:Parity | T-UI:轉場效果 |
不同螢幕方向和折疊狀態顯示的功能和操作絕大部分相同,且保留功能的一致性。 |
| UI:全螢幕 | T-UI:轉場效果 |
無論螢幕方向是直向或橫向,應用程式都不會因為設定變更 (包括折疊和展開裝置) 而加上黑邊,而會填滿應用程式視窗。 允許出現些微上下黑邊來彌補畫面幾何形狀的小幅度變化。 |
| UI:轉場效果 | T-UI:轉場效果 | 應用程式能處理螢幕方向與裝置折疊/展開之間的快速轉換,不會出現螢幕轉譯問題,也不會遺失狀態。 |
| 視覺品質 | ||
| 視覺:顯示 | T-Visual:顯示 |
應用程式在顯示圖形、文字、圖片和其他 UI 元素時,不會出現明顯失真、模糊或像素化的情形。
|
| 視覺:可讀性 | T-Visual:可讀性 | 應用程式會將每行文字長度限制在 45 到 75 個半形字元 (含空格),確保文字和文字區塊可讀性,適用於應用程式支援的每種語言。 |
| 視覺:主題 | T-Visual:主題 | 應用程式的內容以及應用程式存取的所有網頁內容皆支援淺色和深色主題。 |
| 導覽 | ||
| Nav:BackButton | T-Nav:返回 | 應用程式支援標準返回按鈕導覽,且不使用任何自訂的螢幕返回按鈕提示。 |
| Nav:BackGesture | T-Nav:返回 | 應用程式支援用於返回和前往主畫面的手勢操作。 |
| Nav:State | T-Nav:State、 T-Nav:Back |
應用程式會在離開前景時保留使用者或應用程式狀態,且可避免由於返回導覽和其他狀態變更而導致的意外資料遺失。 應用程式返回前景時,會還原保留的狀態,以及所有待處理的有狀態交易。例如對可編輯欄位、遊戲進度、選單、影片以及應用程式其他部分的變更。
|
| 通知 | ||
| Notify:Info | T-Notify:資訊 |
通知會提供與應用程式相關的實用資訊。 |
| Notify:訊息 | T-Notify:資訊 |
針對訊息應用程式、社交應用程式和對話:
|
| 無障礙設定 | ||
| 存取權:目標 | T-Access:目標 | 觸控目標的大小至少為 48 dp。請參閱 Material Design 的「版面配置與字體排版」準則。 |
| 存取權:對比度 | T-Access:對比 |
應用程式文字和前景內容與應用程式背景維持下列對比度:
進一步瞭解色彩和對比。 |
| 存取權:說明 | T-Access:說明 | 使用 contentDescription 描述每個 UI 元素 (TextView 除外)。 |
功能
應用程式應實作下列功能行為。
| ID | 測試 | 說明 |
|---|---|---|
| 音訊 | ||
| 音訊:Init | T-Audio:Init |
當使用者啟動音訊播放時,應用程式應在一秒鐘內執行下列任一操作:
|
| 音訊:焦點 | T-Audio:Focus | 應用程式應於音訊開始播放時要求音訊焦點,並在停止播放時捨棄音訊焦點。 |
| 音訊:中斷 | T-Audio:中斷 | 應用程式應處理其他應用程式的音訊焦點要求。舉例來說,應用程式可能會在另一個應用程式播放語音時,降低播放音量。 |
| 音訊:背景 | T-Audio:背景 | 應用程式應支援背景播放。 |
| 音訊:通知 | T-Audio:Notification | 如果應用程式在背景播放音訊,則必須建立採用 MediaStyle 樣式的通知。 |
| 音訊:繼續 | T-Audio:繼續 | 如果應用程式在背景執行且音訊已暫停,當應用程式返回前景時音訊會繼續播放,或者應用程式必須向使用者表明播放功能處於暫停狀態。 |
| 影片 | ||
| 影片:子母畫面 | T-Video:子母畫面 | 如果應用程式播放影片,應支援子母畫面播放功能。 |
| 影片:編碼 | T-Video:編碼 | 如果應用程式要對影片進行編碼,應採用 HEVC 影片壓縮標準執行這項作業。 |
| 分享 | ||
| 分享:工作表 | T-Sharing:Sheet | 應用程式分享內容時應使用 Android Sharesheet。這項功能可以建議自訂解決方案無法使用的目標。 |
| 背景服務 | ||
| 背景:服務 | T-Background:Services |
應用程式會避免在背景執行不必要的長時間服務。確保使用者裝置運作順暢。 注意:系統會對背景服務套用多項限制。 以下是不當使用背景服務的例子:
詳情請參閱「背景工作總覽」。 |
效能和穩定性
應用程式應提供最佳效能、穩定性、相容性和回應速度。
| ID | 測試 | 說明 |
|---|---|---|
| 效能 | ||
| 效能:啟動 | T- Performance:Startup | 應用程式可迅速載入,如果載入時間需要超過兩秒鐘,須在畫面上為使用者提供回饋 (進度指標或類似的提示)。 |
| 效能:每秒影格數 | T-Performance:FPS | 應用程式每 16 毫秒 (或更短) 轉譯一次影格,才能達到每秒至少 60 個影格數。如需轉譯問題的相關說明,請參閱「轉譯速度緩慢」。 |
| 效能:嚴格 | T-Performance:Strict | 啟用 StrictMode 後 (請參閱「StrictMode 測試」一節),測試應用程式時不會閃爍紅色燈號 (StrictMode 提供的效能警示)。 |
| 穩定性 | ||
| 穩定性:ANR | T-Stability:ANR | 應用程式不會當機或封鎖 UI 執行緒,導致發生 ANR (Android 無回應) 錯誤。使用 Google Play 正式發布前測試報告找出潛在的穩定性問題。部署完成後,請監控 Google Play 管理中心的「Android Vitals」頁面。 |
| SDK | ||
| SDK:平台 | T-SDK:平台 | 應用程式會在最新的 Android 平台公開版本上執行,而且不會發生當機情形或嚴重影響核心功能。 |
| SDK:目標 | T-SDK:最新版本 | 應用程式會在應用程式模組的 build.gradle 檔案中設定 targetSdk 值,根據 Google Play 規定指定最新的 Android SDK。 |
| SDK:編譯 | T-SDK:最新版本 | 應用程式會在應用程式模組的 build.gradle 檔案中設定 compileSdk 值,以最新的 Android SDK 建構應用程式。 |
| SDK:第三方 | T-SDK:3P、 T-SDK:非 |
使用的任何 Google 或第三方 SDK 都是最新版本。任何針對這些 SDK 的改善項目 (例如穩定性、相容性或安全性) 皆應及時提供給使用者。 如果是 Google SDK,建議使用 Google Play 服務技術提供的 SDK (如果可用)。這些 SDK 具有回溯相容性、可接收自動更新、縮減應用程式套件大小,並有效運用裝置端資源。 |
| SDK:無 | T-SDK:非 | 應用程式沒有使用非 SDK 介面。 |
| SDK:偵錯 | T-SDK:Debug | 正式版應用程式未包含任何偵錯程式庫。應用程式中包含的偵錯程式庫可能會造成效能和安全性問題。 |
| 電池 | ||
| 電池:管理 | T-Battery:管理 |
應用程式能正確支援打盹和應用程式待命等電源管理功能。 應用程式可以申請豁免電源維護。請參閱「針對打盹和應用程式待命進行最佳化」中的其他用途支援功能。 |
隱私權與安全性
應用程式會妥善處理使用者資料和個人資訊,並提供適當的權限層級。
在 Google Play 商店發布的應用程式,也必須遵循 Google Play 的使用者資料政策,保護使用者隱私。
| ID | 測試 | 說明 |
|---|---|---|
| 權限 | ||
| 權限:Min | T-Permissions:Min | 應用程式僅要求支援目前用途所需的絕對最低權限。對於位置資訊等部分權限,應用程式會盡可能使用概略規格取代精確規格。請參閱「盡可能減少權限要求」。 |
| 權限:機密 | T-Permissions:Sensitive |
應用程式僅在直接與其核心用途相關的情況下,要求存取機密資料 (例如簡訊或通話記錄權限群組或位置資訊) 或付費服務 (例如撥號或簡訊) 的權限。您必須向使用者醒目揭露這些權限的相關影響。 視應用程式使用權限的方式而定,可能不必存取機密資訊,就能實現應用程式用途的替代方式。舉例來說,與其要求與使用者聯絡人相關的權限,您可以使用隱含意圖要求存取權。 |
| 權限:執行階段 | T 權限:執行階段 | 應用程式會在使用者執行特定功能時要求執行階段權限,而非早在應用程式啟動時提出要求。 |
| Permissions:Explain | T-Permissions:說明 | 應用程式清楚說明需要權限的原因。 |
| 權限:降級 | T-Permissions:Degrade | 當使用者拒絕或撤銷權限時,應用程式會優雅降級。應用程式不應完全禁止使用者存取。 |
| 資料和檔案 | ||
| 資料:敏感 | T-Data:Sensitive、 T-Data:Handling |
所有機密資料都會儲存在應用程式的內部儲存空間。 |
| 資料:記錄 | T-Data:記錄 | 使用者的個人或機密資料不會記錄在系統記錄或應用程式專屬的記錄中。 |
| 資料:ID | T-Data:ID | 應用程式不會使用任何無法重設的硬體 ID (例如 IMEI) 做為識別用途。 |
| 身分識別 | ||
| Identity:Hints | T-Identity:Hints | 應用程式會提供自動填入提示的帳戶憑證和其他機密資訊,例如信用卡資訊、實際地址和電話號碼。 |
| Identity:CredMan | T-Identity:CredMan | 應用程式整合 Android 專用的 Credential Manager,提供順暢的登入體驗,統一支援密碼金鑰、聯合身分和密碼。 |
| 身分:簡介 | T-Identity:Bio | 應用程式支援生物特徵辨識驗證功能,用於保護財務交易或機密資訊,例如重要的使用者文件。 |
| 應用程式元件 | ||
| 元件:匯出 | T-Components:匯出 |
應用程式會為所有活動、服務、廣播接收器,特別是內容供應器,明確設定 只有「與其他應用程式共用資料」或「應該由其他應用程式叫用」的應用程式元件才會匯出。 |
| 元件:Permissions | T-Components:Permissions |
所有意圖和廣播訊息都遵循最佳做法:
|
| 元件:保護 | T-Components:Protection |
「在不同應用程式之間共用內容」的所有元件都會針對自訂權限使用 應用程式不應仰賴存取已安裝的套件清單。 |
| 網路 | ||
| 網路:流量 | T-Network:流量 | 所有網路流量都是透過 SSL 傳送。 |
| 網路:設定 | T-Network:Config | 應用程式會宣告網路安全性設定。 |
| 電視網:Play | T-Network:Play | 如果應用程式使用 Google Play 服務,系統會在應用程式啟動時初始化安全性提供者。 |
| 網頁畫面 | ||
| WebViews:Config | T-WebViews:Config、 T-WebViews:Nav |
請勿使用 setAllowUniversalAccessFromFileURLs() 存取本機內容,請改用 WebViewAssetLoader。 |
| WebView:JavaScript | T-WebViews:JavaScript、 T-WebViews:Nav |
網頁檢視畫面不應與不受信任的內容搭配使用 如果是 Android 6.0 (API 級別 23 以上版本),請改用 HTML 訊息管道。 |
| 執行 | ||
| 執行:軟體包 | T-Execution:Bundles |
應用程式不會從應用程式 APK 外部動態載入程式碼。使用 Android App Bundle,其中包含 Play Feature Delivery 和 Play Asset Delivery。 自 2021 年 8 月起,Google Play 商店中的所有新應用程式都必須採用 Android App Bundle。 |
| 密碼學 | ||
| Crypto:Algorithms | T-Crypto:演算法 | 應用程式採用由平台提供的強大密碼演算法,以及隨機號碼產生器。此外,應用程式沒有導入自訂演算法。 |
Google Play
啟用應用程式,以便在 Google Play 發布。
| ID | 測試 | 說明 | |
|---|---|---|---|
| 政策 | |||
| Play:政策 | T-Play:政策 | 應用程式嚴格遵守《Google Play 開發人員內容政策》的條款,不提供不當內容,也不使用他人的智慧財產或品牌。 | |
| Play:成熟度 | T-Play:政策 | 根據《內容分級規範》,設定適當的應用程式心智成熟度。 | |
| 應用程式詳細資料頁面 | |||
| Play:Graphics | T-Play:圖像、 T-Play:資產 |
應用程式的主題圖片遵循這篇支援文章中列出的準則。請確認下列事項:
|
|
| Play:NonAndroid | T-Play:資產 | 應用程式螢幕截圖和影片不會顯示或參照非 Android 裝置。 | |
| Play:Misleading | T-Play:資產 | 應用程式螢幕截圖或影片不會以誤導方式呈現應用程式的內容和使用體驗。 | |
| 使用者支援 | |||
| Play:Bugs | T-Play:政策 | 使用者在 Google Play 頁面的「評論」分頁中回報的常見錯誤均獲得解決 (如果這些錯誤可重現且在眾多不同裝置上發生)。如果是僅有少數裝置會出現的錯誤,且這些裝置相當熱門或是新推出的裝置,您仍然必須予以解決。 | |
測試環境
請按照下列步驟設定測試環境:
模擬器測試:Android Emulator 是針對不同 Android 版本和螢幕解析度測試應用程式的好方法。設定模擬裝置 (AVD),代表目標使用者族群最常用的板型規格和硬體/軟體組合。請至少使用下列模擬器,測試各種板型規格:
- 折疊式裝置:7.6 吋折疊式裝置搭配外部螢幕 (列在 AVD Manager 的手機下方)
- 平板電腦:Pixel C 9.94 吋 (2,560px x 1,800px)
- 行動應用程式通知測試:將行動裝置 / 模擬器與 Wear OS 模擬器 (Wear OS 圓形 1.84 吋) 配對
硬體裝置:測試環境應包含少數實際硬體裝置,且這些裝置可代表消費者使用的主要板型規格和硬體/軟體組合。您不需要測試市面上的「每一種」裝置,著重在少數有代表性的裝置上,甚至可以每種板型規格使用一到兩種裝置。
裝置 Test Lab:您也可以利用 Firebase Test Lab 等第三方服務,在各種裝置上測試應用程式。
使用最新的 Android 版本進行測試:除了針對目標使用者族群測試代表性 Android 版本以外,您也必須一律使用最新版本的 Android 進行測試,確保最新的行為變更不會對應用程式的使用者體驗造成負面影響。
如需測試 (包括單元測試、整合測試和 UI 測試) 的進一步指引,請參閱「測試 Android 應用程式的基礎知識」。
StrictMode
如要進行效能測試,請在應用程式中啟用 StrictMode。使用 StrictMode 擷取可能影響效能、網路存取,以及檔案讀取和寫入的作業。找出主執行緒和其他執行緒上可能有問題的作業。
您可以使用 StrictMode.ThreadPolicy.Builder 為每個執行緒設定監控政策,同時使用 detectAll() 在 ThreadPolicy 中啟用所有支援的監控方式。
使用 penaltyFlashScreen(),為 ThreadPolicy 的違反政策情形啟用視覺式通知。
測試
核心應用程式品質測試可協助您評估應用程式的基本品質。您可以在測試計畫中結合不同的測試或整合多個測試群組。
使用者體驗
| ID | 功能 | 說明 |
|---|---|---|
| 可用性 | ||
| T-Usability:Core | 可用性:使用者體驗 |
導覽至應用程式的所有部分:所有畫面、對話方塊、設定和所有使用者流程。 請按照下列步驟操作:
|
| T-Usability:Switcher | 實用性:切換器 | 在每個應用程式畫面中,切換至另一個執行中的應用程式,然後再使用「最近使用的應用程式」切換器返回測試中的應用程式。 |
| T-Usability:Sleep | 可用性:睡眠 | 按下電源鍵讓裝置進入休眠狀態,然後再次按下電源按鈕來喚醒螢幕。 |
| T-Usability:Lock | 可用性:鎖定 | 在裝置上設定螢幕鎖定。按下電源鍵讓裝置進入休眠狀態 (即鎖定裝置)。接著再次按下電源鍵,喚醒螢幕並解鎖裝置。 |
| SD 卡 | ||
| T-SD-Card | 可用性:使用者體驗 |
針對已安裝至裝置 SD 卡的應用程式執行核心功能測試 (如果應用程式支援這種安裝方式)。 如要將應用程式移至 SD 卡,請參閱應用程式的「設定」。 |
| 使用者介面 | ||
| T-UI:轉場效果 | UI:同位、 UI:全螢幕、 UI:轉場效果 |
在每個應用程式畫面中,以橫向和直向交替旋轉裝置,並折疊/展開裝置至少三次。 確認應用程式是否符合下列條件:
|
| 視覺品質 | ||
| T-Visual:Display | 視覺:顯示 | 使用應用程式的所有功能,確認所有視覺元素 (包括圖形、文字、圖片和其他 UI 元素) 皆未失真、模糊或像素化。 |
| T-Visual:可讀性 | 視覺:可讀性 |
檢查應用程式中的所有文字區塊。確認文字和文字區塊的行長度限制為 45 到 75 個半形字元 (含空格),以利閱讀。 確認下列事項:
|
| T-Visual:主題 | 圖片:主題 | 確認淺色和深色主題中的所有文字都清晰可讀。確認所有視覺元素在淺色和深色主題中都能清楚辨識,且美觀。 |
| 導覽 | ||
| T-Nav:Back | Nav:BackButton、 Nav:BackGesture |
導覽至應用程式的所有部分:所有畫面、對話方塊、設定和所有使用者流程。 在每個應用程式畫面中按下「返回」按鈕,或使用返回滑動手勢。應用程式應會返回上一個畫面或主畫面。 |
| T-Nav:State | Nav:State | 在每個應用程式畫面中按下裝置的主畫面鍵,或以手勢操作向上滑動,然後在「所有應用程式」畫面中重新啟動應用程式。 |
| 通知 | ||
| T-Notify:Info | Notify:Info、 Notify:Messaging |
觸發應用程式能顯示的所有類型通知,並留意通知匣中的接收情形。在適用情況下展開通知 (Android 4.1 以上版本),然後輕觸所有可用的操作。 |
| 無障礙設定 | ||
| T-Access:目標 | 存取:目標 | 確認觸控目標均維持一致以及易於存取的大小和位置,適用於所有螢幕尺寸和設定。如需無障礙功能相關資訊,請參閱「無障礙功能檢查工具」一文。 |
| T-Access:對比度 | 存取:對比 | 確認所有視覺元素的對比度。 |
| T-Access:說明 | 存取權:說明 | 確認 TextView 以外的所有 UI 元素都有內容說明。 |
功能
| ID | 功能 | 說明 |
|---|---|---|
| 音訊 | ||
| T-Audio:Init | 音訊:Init | 啟動音訊播放功能。確認應用程式在一秒內開始播放音訊,或提供視覺指標,表明正在準備播放音訊資料。 |
| T-Audio:Focus | 音訊:專注 | 啟動音訊播放功能。應用程式應要求音訊焦點。音訊播放停止時,應用程式應放棄音訊焦點 (如果應用程式指定 Android 12 (API 級別 31) 以上版本,系統會自動執行這項操作)。 |
| T-Audio:Interrupt | 音訊:中斷 | 啟動音訊播放功能。在另一個應用程式中啟動音訊播放功能。您的應用程式應回應音訊焦點的變更,並停止播放音訊或降低播放音量。 |
| T-Audio:Background | 音訊:背景 | 啟動音訊播放功能。與另一個非音訊應用程式互動,將其設為前景應用程式。應用程式應繼續在背景播放音訊。 |
| T-Audio:Notification | 音訊:通知 | 啟動音訊播放功能。與另一個非音訊應用程式互動,將其設為前景應用程式。確認您的應用程式會繼續在背景播放音訊,並建立採用 MediaStyle 樣式的通知。請參閱「與媒體控制項配合運作」。 |
| T-Audio:Resume | 音訊:繼續 | 啟動音訊播放功能。將其他非音訊應用程式設為前景應用程式。與您的應用程式互動,將其設為頂端應用程式。音訊應會繼續播放或音量應會恢復。否則,應用程式應向使用者表明播放功能處於暫停狀態。 |
| T-Video:PiP | 影片:子母畫面 | 啟用應用程式的子母畫面模式影片播放功能。 |
| T-Video:Encoding | 影片:編碼 | 確認應用程式是否採用 HEVC 影片壓縮標準對影片進行編碼。 |
| 分享 | ||
| 共用:工作表 | 建立意圖,並以意圖做為引數呼叫 startActivity(),藉此啟動活動。請參閱「使用 Android Sharesheet」。應用程式應會顯示 Android Sharesheet。 |
|
| 背景服務 | ||
| CR-6 | 背景:服務 | 使用應用程式的所有主要功能。確認沒有啟動長時間執行的背景服務。 切換至另一個應用程式,將您的應用程式送入背景。前往「設定」,查看應用程式是否同時在背景中執行任何服務。如果使用 Android 4.0 以上版本,請前往「應用程式」畫面,在「執行中」分頁尋找該應用程式。 |
效能和穩定性
| ID | 功能 | 說明 |
|---|---|---|
| 效能 | ||
| T- Performance:啟動 | 效能:啟動 | 啟動應用程式。確認應用程式可迅速載入,如果載入時間需要超過兩秒鐘,須提供進度指標或類似的提示。 |
| T-Performance:FPS | 效能:每秒影格數 (FPS) | 使用應用程式的所有主要功能,確認應用程式每秒至少會算繪 60 個影格。使用「剖析 HWUI 轉譯」選項測試應用程式。 |
| T-Performance:Strict | 效能:嚴格 |
在應用程式中啟用 密切注意垃圾收集情況,以及對使用者體驗的影響。 |
| 穩定性 | ||
| T-Stability:ANR | 穩定性:ANR | 使用應用程式的所有主要功能,確認應用程式不會當機或封鎖 UI 執行緒,導致發生 ANR (Android 無回應) 錯誤。查看 Google Play 正式發布前測試報告,找出潛在的穩定性問題。 |
| SDK | ||
| T-SDK:平台 | SDK:平台 | 在最新公開版本的 Android 平台上執行應用程式。使用所有主要功能。確認應用程式不會異常終止,且執行時不會遺失任何核心功能。 |
| T-SDK:最新版本 | SDK:目標、 SDK:編譯 |
查看 Android 資訊清單檔案和建構設定,確保應用程式是根據最新可用的 SDK (targetSdk 和 compileSdk) 建構而成。 |
| T-SDK:3P | SDK:3P | 查看應用程式的 build.gradle 檔案是否有任何過時的依附元件。 |
| T-SDK:非 | SDK:無 | 使用 Android Studio Lint 工具偵測非 SDK 介面的使用情形。如需其他測試方法,請參閱「非 SDK 介面的相關限制」。 |
| T-SDK:Debug | SDK:Debug | 查看應用程式的 build.gradle 檔案,確認是否包含任何偵錯程式庫。 |
| 電池 | ||
| T-Battery:管理 | 電池:管理 |
在打盹和應用程式待命模式下使用所有主要應用程式功能。確認鬧鐘、計時器、通知和同步功能在「打盹」維護時間和應用程式退出「應用程式待命」模式時,都能正常運作。 使用 ADB 指令測試打盹和應用程式待命行為 (如要瞭解相關需求和準則,請參閱「使用打盹和應用程式待命測試」)。 如要診斷非預期的電池耗電情形,請使用 Android Studio Power Profiler 或 Battery Historian 工具,搭配預定的背景工作。 |
隱私權與安全性
| ID | 功能 | 說明 |
|---|---|---|
| 權限 | ||
| T-Permissions:Min | 權限:Min | 檢查應用程式在資訊清單檔案、執行階段和裝置上應用程式設定 (「設定」>「應用程式資訊」) 中所需的所有權限。 |
| T-Permissions:Sensitive | 權限:敏感 | 使用應用程式中要求權限的任何功能。確認應用程式僅在核心用途需要時,要求存取機密資料或服務的權限。確認您已清楚向使用者說明授予私密資料和服務存取權的影響。 |
| T-Permissions:Runtime | 權限:執行階段 | 使用應用程式中需要權限的所有功能。確認權限是延遲要求,也就是只在存取功能時要求,而不是在應用程式啟動時要求。 |
| T-Permissions:Explain | 權限:說明 | 使用應用程式中需要權限的所有功能。確認應用程式會向使用者說明為何需要這些權限。 |
| T-Permissions:Degrade | 權限:降級 | 使用應用程式中需要權限的所有功能。拒絕或撤銷權限。確認應用程式提供替代用途,且可繼續運作。 |
| 資料和檔案 | ||
| T-Data:Sensitive | 資料:機密 | 檢查儲存在內部儲存空間中的所有資料。確認儲存在外部的資料並非機密資料。 |
| T-Data:處理 | 資料:機密 | 檢查應用程式如何控制及處理從外部儲存空間載入的資料。 |
| T-Data:Log | 資料:記錄 | 使用所有主要應用程式功能,同時監控裝置記錄。確認系統未記錄任何使用者私人資訊。 |
| T-Data:IDs | 資料:ID | 使用所有主要應用程式功能。確認應用程式不會使用任何硬體 ID (例如 IMEI) 做為識別用途。 |
| 身分識別 | ||
| T-Identity:Hints | Identity:Hints | 使用所有需要使用者輸入內容的應用程式功能。確認應用程式會提供提示,自動填入帳戶憑證和其他機密資訊等資料的輸入欄位。 |
| T-Identity:CredMan | 身分:CredMan | 登入應用程式。確認應用程式整合 Android 版 Credential Manager,提供統一的登入體驗,支援密碼金鑰、聯合身分和密碼。 |
| T-Identity:Bio | 身分:簡介 | 使用需要驗證的應用程式功能。確認應用程式會使用生物特徵辨識驗證功能,保護財務交易或機密資訊,例如重要的使用者文件。 |
| 應用程式元件 | ||
| T-Components:匯出 | 元件:匯出 | 檢查 Android 資訊清單檔案中定義的所有應用程式元件匯出狀態是否適當。所有元件都必須明確設定匯出的屬性。 |
| T-Components:Permissions | 元件:Permissions | 檢查應用程式在資訊清單檔案、執行階段和裝置上應用程式設定 (「設定」>「應用程式資訊」) 中所需的所有權限。 |
| T-Components:保護 | 元件:保護 | 檢查 Android 資訊清單檔案中定義的所有內容供應器。確保每個供應者都有合適的 protectionLevel。 |
| 網路 | ||
| T-Network:流量 | 網路:流量 | 宣告會停用明文流量的網路安全性設定,然後測試應用程式。 |
| T-Network:Config | 網路:設定 | 檢查應用程式的網路安全性設定。確認設定的 Lint 檢查沒有失敗情形。 |
| T-Network:Play | 電視網:Play | 確認 Google Play 服務的安全性提供者是在應用程式啟動時初始化。 |
| 網頁畫面 | ||
| T-WebViews:Config | WebViews:Config | 檢查應用程式的網路安全性設定。確認設定的 Lint 檢查沒有失敗情形。 |
| T-WebViews:JavaScript | WebView:JavaScript | 針對每個 WebView,導覽至需要使用 JavaScript 的網頁。 |
| T-WebViews:Nav | WebViews:Config、 WebViews:JavaScript |
在每個 WebView 中,嘗試導覽至應用程式未直接載入的網站和內容。 |
| 執行 | ||
| T-Execution:Bundles | 執行:套裝組合 | 確認應用程式使用 Android App Bundle,且不會從應用程式 APK 外部動態載入程式碼。 |
| 密碼學 | ||
| T-Crypto:演算法 | 加密:演算法 | 確認應用程式採用由平台提供的強大密碼演算法和隨機號碼產生器。此外,請確認應用程式沒有導入自訂演算法。 |
Google Play
| ID | 功能 | 說明 |
|---|---|---|
| 政策 | ||
| T-Play:政策 | Play:政策、 Play:成熟度、 Play:錯誤 |
登入 Google Play 管理中心,查看開發人員設定檔、應用程式說明、螢幕截圖、主題圖片、內容分級和使用者意見回饋。 |
| 應用程式詳細資料頁面 | ||
| T-Play:Graphics | Play:Graphics | 下載主題圖片和螢幕截圖,然後根據目標裝置的螢幕尺寸和板型規格縮小這些圖片。 |
| T-Play:資產 | Play:Graphics、 Play:NonAndroid、 Play:Misleading |
檢查所有圖片資源、媒體、文字、程式碼程式庫,以及應用程式或下載的擴充檔案所封裝的其他內容。 |
封存
舊版核心應用程式品質指南: