而觸及新使用者的用意是支援日益增加的 Android 平台版本和裝置規格。 如要改善使用者體驗,請針對常見的 RAM 設定以及螢幕大小和解析度進行最佳化調整。
支援多種螢幕大小
如果您的應用程式支援各種尺寸和解析度的螢幕,就能為數十億使用者提供更優質的使用者體驗。本節將說明幾種方法。
使用密度獨立像素 (dp)
- 無法使用像素定義版面配置尺寸,因為不同的螢幕像素密度不同,因此相同的像素數量可能會對應到不同裝置上的不同實體尺寸。
- 為解決這個問題,Android 支援密度獨立像素 (dp),也就是對應於每英寸 160 點 (mdpi 密度) 的像素實體大小。
- 使用 dp 定義版面配置,就能確保無論裝置為何,使用者介面的實體大小都一致。如要瞭解使用密度獨立像素的最佳做法,請參閱 Android 指南「支援多螢幕」。
在 ldpi 和 mdpi 螢幕密度上測試文字和圖像
- 請進行測試,確保您的文字和圖像在低密度和中密度 (ldpi 和 mdpi) 螢幕上順利運作,因為這是常見的密度,特別是在價格較低的裝置上。找出在低密度螢幕中可能無法清楚顯示的文字,但這類文字無法顯示細節。
- 低密度螢幕的裝置硬體規格通常較低。為了確保您的應用程式在這些裝置上能順利運作,請考慮減少或避免繁雜的圖形處理負載,例如動畫和轉換。
- 如要進一步瞭解如何支援不同密度,請參閱「支援不同密度」的 Android 訓練課程。
在中小螢幕尺寸上測試版面配置
- 在小螢幕上進行測試,確認版面配置是否縮小。由於螢幕大小縮小,因此請格外選擇可見的 UI 元素,因為這類元素的空間有限。
- Material Design 指南說明指標和標線,確保版面配置能根據螢幕密度縮放。
- 如要進一步瞭解如何支援不同螢幕大小,請參閱有關支援不同螢幕大小的 Android 訓練課程。
提供回溯相容性
並非所有使用者都會使用搭載最新、最優異 Android 平台版本的裝置。您可以透過下列幾種方式改善回溯相容性,讓更多使用者都能使用您的應用程式。
妥善設定 targetSdkVersion
和 minSdkVersion
-
應用程式應建構及鎖定最新版本的 Android,確保應用程式可在各種裝置上提供最新行為,但仍可提供與舊版回溯相容性。以下提供一些最佳做法,說明如何正確指定 API 級別:
-
targetSdkVersion
應是最新版本的 Android。以最新版本為目標,可確保應用程式在執行較新版本的 Android 時沿用較新的執行階段行為。更新targetSdkVersion
時,請務必使用新版 Android 測試應用程式,因為這可能會影響應用程式行為。 -
minSdkVersion
設定支援的最低 Android 版本。如果設定minSdkVersion
,Android 建構工具也會回報新 API 的不正確使用,但舊版平台可能無法提供這類 API。這樣可避免意外回溯相容性問題。
-
- 請查看 Android 資訊主頁、適用於您應用程式的 Google Play 開發人員控制台,以及目標市場的產業研究,根據您的目標使用者評估要鎖定的 Android 版本。
使用 Android 支援資料庫
-
使用 Android 支援資料庫,確保應用程式在不同 OS 版本上提供一致的體驗。這個程式庫提供回溯相容的 Android 架構 API 版本,以及只能透過程式庫 API 提供的功能,例如
AppCompatActivity
和 Material Design 支援資料庫。 - 以下列舉幾項重點功能:
- v4 和 v7 支援資料庫:許多舊版 Android 適用的架構 API,例如
ViewPager
、ActionBar
、RecyclerView
和Palette
。 - Material Design 支援資料庫:支援在應用程式中新增 Material Design 元件和模式的 API。
- Multidex 支援資料庫:支援使用超過 65,000 個方法的大型應用程式。如果應用程式使用多個程式庫,就可能發生這種情況。
- v4 和 v7 支援資料庫:許多舊版 Android 適用的架構 API,例如
- 如要進一步瞭解可用的支援資料庫,請參閱 Android 開發人員網站的「 支援資料庫功能」一節。
使用 Google Play 服務
- Google Play 服務提供與 Android 平台版本無關的 Google API,考慮使用 Google Play 服務的功能,在 Android 裝置上提供最精簡的 Google 體驗。
- Google Play 服務也包含實用的 API,例如
GcmNetworkManager
,這類 API 可為舊版 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 Oreo (Go 版本) 開始,Android (Go 版本) 會針對 RAM ≤ 1 GB 的入門級裝置提供最佳體驗。 為確保您的應用程式在 Android (Go 版本) 裝置上順利運作,請務必考量下列規範:
- targetSdkVersion 應為最新版的 Android。 Android (Go 版本) 裝置僅適用於 Android Oreo (API 27 以上版本)。
- 應用程式應能在 RAM ≤ 1 GB 的裝置上順暢執行。請留意上述「有效使用記憶體」一節所列的記憶體最佳化,並使用 Android Vitals 找出並修正轉譯速度緩慢和凍結影格等不良行為。
- 裝置上的子母畫面 (PIP) 功能可能會停用。在應用程式使用子母畫面之前,請呼叫
hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE)
來確認可以使用這個子母畫面。 - 裝置端應用程式大小必須小於 40 MB。
- 應用程式 RAM 用量的比例集大小 (PSS) 不得超過 90 MB。遊戲的 RAM 用量的 PSS 不得超過 150 MB。如果想進一步瞭解 PSS,請參閱有關調查 RAM 用量的指南。
- 應用程式的啟動時間應最短,不超過 5 秒。
-
如果 Android Go 裝置 RAM 較低,
SYSTEM_ALERT_WINDOW
(可讓應用程式可在其他應用程式上方繪製視窗) 可能會停用。在繪製其他應用程式之前,請先呼叫 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。
相關內容
其他資源
如要進一步瞭解如何支援各種裝置,請參閱下列資源: