數十億人的裝置功能

觸及新使用者是指支援更多 Android 平台版本和裝置規格。 如要改善使用者體驗,請針對常見的 RAM 設定,以及螢幕大小和解析度進行最佳化。

支援多種螢幕大小

如果應用程式可支援不同大小和解析度的螢幕,就能為數十億使用者提供更優質的使用者體驗。本節將說明幾種做法。

使用密度獨立像素 (dp)

  • 由於不同螢幕的像素密度不同,因此使用像素來定義版面配置尺寸會不佳,因此相同的像素數量可能會對應到不同裝置上的不同實體大小。
  • 為克服這項挑戰,這個 Android 支援密度獨立像素 (dp),其對應像素大小為每英寸 160 個點 (mdpi 密度)。
  • 使用 dp 定義版面配置,可確保使用者介面的實際大小不論裝置為何。 請參閱 Android 指南支援多個螢幕,瞭解使用密度獨立像素的最佳做法。

在 ldpi 和 mdpi 螢幕密度上測試文字和圖像

  • 請進行測試,確保您的文字和圖片在低密度和中密度 (ldpi 和 mdpi) 螢幕上都能正常運作,因為這些是常見的密度,尤其是在成本較低的裝置上。{指南 請留意在低密度螢幕上可能不清楚的文字,而且不顯示細節。
  • 螢幕密度較低的裝置通常就具備較低的硬體規格。 為了確保您的應用程式在這些裝置上能正常運作,請考慮減少或消除繁雜的圖形處理負載,例如動畫和轉場效果。
  • 如要進一步瞭解如何支援不同密度,請參閱支援不同密度的 Android 訓練。

針對中小尺寸螢幕測試版面配置

  • 透過較小的螢幕測試,以驗證您的版面配置。隨著螢幕大小縮小,請務必針對可見的 UI 元素提供選擇性選項,因為這類空間的空間有限。
  • 質感設計指南說明指標和標線,確保版面配置能夠配合不同螢幕密度縮放。
  • 如要進一步瞭解如何支援不同的螢幕大小,請參閱有關支援不同螢幕大小的相關 Android 訓練。

提供回溯相容性

並不是所有使用者都不是使用最新版 Android 平台的裝置。您可以透過下列幾種方法改善回溯相容性,盡可能讓更多人使用您的應用程式。

正確設定 targetSdkVersionminSdkVersion

  • 應用程式應建構並指定最新版本的 Android,以確保應用程式在各種裝置上都能提供最新的行為,不過這仍為舊版相容。 以下是指定 API 級別的最佳做法:
    • targetSdkVersion 應為最新版本的 Android。 指定最新版本可確保您的應用程式在執行新版 Android 時能沿用較新的執行階段行為。更新 targetSdkVersion 時,請務必在較新的 Android 版本上測試應用程式,因為這可能會影響應用程式行為。
    • minSdkVersion 設定支援的最低 Android 版本。 設定 minSdkVersion 也會導致 Android 建構工具回報不正確使用的新平台可能無法使用的新 API。這樣一來,您就能避免意外破壞的回溯相容性。
  • 參考 Android 資訊主頁Google Play 開發人員控制台和您應用程式的產業研究,並評估目標市場的 Android 版本,以便評估 Android 版本根據您的目標使用者放送廣告

使用 Android 支援資料庫

  • 利用 Android 支援資料庫,確保您的應用程式在各個作業系統版本中提供一致的體驗。 這個程式庫提供回溯相容的 Android 架構 API 版本,以及只能透過程式庫 API 取得的功能 (例如 AppCompatActivity 和質感設計支援資料庫)。
  • 以下列出幾項主要特色:
  • 如要進一步瞭解可用的支援資料庫,請參閱 Android 開發人員網站的 支援資料庫功能一節。

使用 Google Play 服務

  • Google Play 服務可發揮 Google API 的最佳優勢,不受 Android 平台版本影響。建議您使用 Google Play 服務提供的功能,在 Android 裝置上提供最精簡的 Google 體驗。
  • Google Play 服務也包括實用的 API,例如 GcmNetworkManager,其為大部分舊版 Android 提供 Android 5.0 的 JobScheduler API。
  • Google Play 服務更新會自動由 Google Play 商店發布,而新版用戶端程式庫會透過 Android SDK Manager 提供。

有效率地使用記憶體

記憶功能是使用者體驗的主頁橫幅。良好的記憶體管理可讓應用程式更穩定、效能更佳;在某些情況下,有效的應用方式可能只是讓您的應用程式完全可用。您可以透過下列幾種方式協助應用程式妥善使用記憶體。

降低低成本裝置的記憶體用量

  • 以動態方式調整記憶體用量,確保各裝置的 RAM 設定都相容。
  • isLowRamDevice()getMemoryClass() 等方法有助於決定執行階段的記憶體限制。您可以根據這項資訊縮減記憶體用量。例如,您可以在低記憶體裝置上使用較低解析度的映像檔。
  • 想進一步瞭解如何管理應用程式的記憶體,請參閱管理應用程式的記憶體相關 Android 訓練。

避免長時間執行的程序

  • 長時間執行的程序會保留在記憶體中,且可能會降低裝置運作速度。在大多數情況下,應用程式應該在特定事件中喚醒、處理資料並關機。建議您使用 Firebase 雲端通訊 (FCM) GcmNetworkManager,避免長時間執行背景服務並降低使用者的。

基準記憶體用量

Android Studio 提供記憶體基準化和剖析工具,方便您在執行階段評估記憶體用量。對應用程式的記憶體足跡進行基準化,即可監控多個應用程式版本的記憶體用量。這有助於讓記憶體意外增加。使用記憶體分析器工具執行以下操作:

  • 瞭解垃圾垃圾 (GC) 事件模式是否會導致效能問題。
  • 識別出意外或不必要的分配物件。
  • 找出問題發生在程式碼中的位置。

如要進一步瞭解基準化記憶體用量,請參閱 使用記憶體分析器查看堆積和配置

針對搭載 Android (Go 版本) 的裝置進行最佳化

Android (Go 版本) 可為 Android 或 Go (Go 版本) 的入門級裝置提供 ≤1 GB RAM 的最佳化體驗。 為了確保您的應用程式在 Android (Go 版本) 裝置上順利運作,請務必考量下列規範:

  • targetSdkVersion 應為最新版本的 Android。 Android (Go 版本) 裝置只能執行 Android Oreo (API 27 以上版本)。
  • 應用程式在 RAM ≤1 GB 的裝置上應能順暢執行。 請注意,上方「有效使用記憶體」中列出的記憶體最佳化功能採用了「Android Vitals」來找出並修正不良行為,例如轉譯速度緩慢或凍結等。
  • 子母畫面 (PIP) 可能會在裝置上停用。在應用程式使用子母畫面模式前,請先呼叫 hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) 來確認其是否可用。
  • 裝置上的應用程式大小必須小於 40MB。
  • 應用程式 RAM 使用率的比例集大小 (PSS) 不得超過 90 MB。對遊戲而言,遊戲 RAM 用量的 PSS 不得超過 150 MB。如要進一步瞭解 PSS,請參閱調查 RAM 用量指南。
  • 應用程式的啟動時間應在短到 5 秒以內。
  • SYSTEM_ALERT_WINDOW (可讓應用程式在其他應用程式上方繪製視窗) 在 RAM 較少的 Android Go 裝置上可能會停用。繪製其他應用程式前,請先呼叫 Settings.canDrawOverlays(),確認應用程式是否具備這項授權。如果應用程式無法取得權限,可順利降級因此,您可以停用需要 SYSTEM_ALERT_WINDOW 權限的功能,讓使用者能夠繼續使用您的應用程式。

我們建議大部分的開發人員針對現有應用程式進行最佳化調整,並將應用程式提供給所有 Android (Go 版本) 裝置使用,因為這樣可以提升應用程式的執行速度,並提供更淺顯易懂的效果,進而造福整個目標對象。 您可以使用 Play 管理中心的多重 APK 功能,針對 Android (Go 版本) 裝置發行特定 APK,但是在不影響效能的情況下再發布應用程式(例如,您應避免移除功能)。 以 Android (Go 版本) 裝置為目標的 APK 必須宣告 <uses-feature android:name="android.hardware.ram.low" android:required="true">,目標 API 級別至少須為 26,並且版本代碼高於非 Go 版本 APK。

其他資源

如要進一步瞭解如何支援各種裝置,請參閱下列資源:

網誌文章