Android 相容性 | Google Play 開發者 FAQ 特別版
在前兩期的《Google Play 開發者 FAQ》中,我們重點關注的是開發者在初期使用 Google Play 時可能會在註冊賬號階段或成為商家收付款時遇到的問題,並給出詳細的講解。在本期的開發者 FAQ 中我們將回答開發者們在 Android 相容性方面的常見問題。我們把收集到的一些開發者們提出關於 Android 不同版本使用各項功能時常見的相容性問題彙總,並給予了相應的答案以及處理解決的最佳方案,希望它們可以幫您解決一些在處理 Android 效能以及相容性時所遇到的疑惑。
App 經常因為記憶體洩露而崩潰,如何防止我的應用發生類似問題呢?
開發 Android 應用時,請始終注意您的應用使用了多少隨機存取儲存器 (RAM)。儘管 Dalvik 和 ART 執行時會執行例行垃圾回收 (GC),您仍然需要了解應用何時以及在哪裡分配和釋放記憶體。為了提供穩定的使用者體驗,使 Android 作業系統能夠在應用之間快速切換,請確保您的應用在使用者不與其互動時不會消耗不必要的記憶體。
即使您在開發過程中遵循了管理應用的記憶體的所有最佳做法,您仍然可能洩漏物件或引入其他記憶體錯誤。唯一能夠確定您的應用盡可能少地使用記憶體的方法是,利用以下連結中介紹的工具分析應用的記憶體使用情況。
(https://developer.android.google.cn/studio/profile/investigate-ram.html)
使用者反應耗電量大,如何對低電耗模式和應用待機模式進行鍼對性優化呢?
從 Android 6.0(API 級別 23)開始,Android 引入了兩個省電功能,可通過管理應用在裝置未連線至電源時的行為方式為使用者延長電池壽命。低電耗模式通過在裝置長時間處於閒置狀態時推遲應用的後臺 CPU 和網路 Activity 來減少電池消耗。應用待機模式可推遲使用者近期未與之互動的應用的後臺網路 Activity。
低電耗模式和應用待機模式管理在 Android 6.0 或更高版本上執行的所有應用的行為,無論它們是否特別針對 API 級別 23。為確保使用者獲得最佳體驗,請在低電耗模式和應用待機模式下測試您的應用並對程式碼進行必要的調整。 以下連結中的部分內容介紹了詳細資訊。
(https://developer.android.google.cn/training/monitoring-device-state/doze-standby.html)
如何確定哪些許可權是我需要宣告的呢?
每款 Android 應用都在訪問受限的沙盒中執行。如果應用需要使用其沙盒外的資源或資訊,則必須請求相應許可權。您可以在應用清單中列出相應的許可權,宣告應用需要此許可權。
根據許可權的敏感性,系統可能會自動授予許可權,或者需要由裝置使用者對請求進行許可。例如,如果您的應用請求開啟裝置手電筒的許可權,系統將自動授予該許可權。但如果您的應用需要讀取使用者聯絡人,系統會要求使用者授權。使用者需要在安裝應用(執行 Android 5.1 和更低版本的裝置)或者執行應用(執行 Android 6.0 和更高版本的裝置)時授予許可權,具體取決於平臺版本。您可以通過點選以下連結瞭解更多內容。
(https://developer.android.google.cn/training/permissions/declaring.html)
應用安裝時的許可權請求怎麼不見了?
從 Android 6.0(API 級別 23)開始,使用者開始在應用執行時向其授予許可權,而不是在應用安裝時授予。此方法可以簡化應用安裝過程,因為使用者在安裝或更新應用時不需要授予許可權。它還讓使用者可以對應用的功能進行更多控制;例如,使用者可以選擇為相機應用提供相機訪問許可權,而不提供裝置位置的訪問許可權。使用者可以隨時進入應用的 “Settings” 螢幕呼叫許可權。
系統許可權分為兩類:正常許可權 和 危險許可權:
正常許可權不會直接給使用者隱私權帶來風險。如果您的應用在其清單中列出了正常許可權,系統將自動授予該許可權。
危險許可權會授予應用訪問使用者機密資料的許可權。如果您的應用在其清單中列出了正常許可權,系統將自動授予該許可權。如果您列出了危險許可權,則使用者必須明確批准您的應用使用這些許可權。
如需瞭解詳細資訊,請參閱以下連結中有關正常許可權和危險許可權的詳細內容。
(https://developer.android.google.cn/guide/topics/security/permissions.html#normal-dangerous)
在所有版本的 Android 中,您的應用都需要在其應用清單中同時宣告它需要的正常許可權和危險許可權,如宣告許可權中所述。不過,該宣告的影響因系統版本和應用的目標 SDK 級別的不同而有所差異:
如果裝置執行的是 Android 5.1 或更低版本,或者應用的目標 SDK 為 22 或更低:如果您在清單中列出了危險許可權,則使用者必須在安裝應用時授予此許可權;如果他們不授予此許可權,系統根本不會安裝應用。
如果裝置執行的是 Android 6.0 或更高版本,或者應用的目標 SDK 為 23 或更高:應用必須在清單中列出許可權,並且它必須在執行時請求其需要的每項危險許可權。使用者可以授予或拒絕每項許可權,且即使使用者拒絕許可權請求,應用仍可以繼續執行有限的功能。
注:從 Android 6.0(API 級別 23)開始,使用者可以隨時從任意應用呼叫許可權,即使應用面向較低的 API 級別也可以呼叫。無論您的應用面向哪個 API 級別,您都應對應用進行測試,以驗證它在缺少需要的許可權時行為是否正常。
您可以通過以下連結詳細瞭解如何使用 Android 支援庫來檢查和請求許可權。Android 框架從 Android 6.0(API 級別 23)開始提供類似方法。不過,使用支援庫更簡單,因為在呼叫方法前,您的應用不需要檢查它在哪個版本的 Android 上執行。
(https://developer.android.google.cn/training/permissions/requesting.html)
許多使用者反饋我們的 App 許可權太多,那我應該如何申請許可權才不會令人反感呢?
應用如果一味要求使用者提供授權,可能會讓使用者無所適從。如果使用者發現應用難以使用,或者擔心應用會濫用其資訊,他們可能不願意使用該應用,甚至會將其完全解除安裝。以下最佳做法有助於避免此類糟糕的使用者體驗。
每次您要求許可權時,實際上是在強迫使用者作出決定。您應儘量減少提出這些請求的次數。如果使用者執行的是 Android 6.0(API 級別 23)或更高版本,則每次使用者嘗試要求提供許可權的新應用功能時,應用都必須中斷使用者的操作併發起許可權請求。如果使用者執行的是較早版本的 Android,則在安裝應用時需要為應用的每一許可權請求給予授權;如果列表過長或看起來不合適,使用者可能會決定不安裝該應用。為此,您應儘量減少應用需要的許可權數。
如果使用者執行的是 Android 6.0(API 級別 23)或更高版本,則使用者必須在應用執行時為其授權。如果您的應用一次要求使用者提供多項許可權,使用者可能會感到無所適從並因此退出應用。您應根據需要請求許可權。您可以通過檢視以下連結詳細瞭解處理許可權時的最佳做法。
(https://developer.android.google.cn/training/permissions/best-practices.html)
如何在舊版本的 Android 中新增支援的語言和語言區域?
從 Android 7.0(API 級別 24)開始,Android 為多語言使用者提供增強的支援,讓他們可以在設定中選擇多個語言區域。Android 通過大幅擴充套件受支援的語言區域數量並更改系統解析資源的方式來提供此功能。
以下連結中的內容將首先說明低於 7.0(API 級別 24)的 Android 版本中的資源解析策略,接著介紹 Android 7.0 中改進的資源解析策略,最後說明如何充分利用擴充套件的語言區域數量來支援更多的多語言使用者。
(https://developer.android.google.cn/guide/topics/resources/multilingual-support.html#preN)
如何優化自己的應用從而在不同尺寸的螢幕上都有良好執行體驗?
Android 可在各種具有不同螢幕尺寸和密度的裝置上執行。對於應用,Android 系統在不同裝置中提供一致的開發環境,可以處理大多數工作,將每個應用的使用者介面調整為適應其顯示的螢幕。 同時,系統提供 API,可用於控制應用適用於特定螢幕尺寸和密度的 UI,以針對不同螢幕配置優化 UI 設計。 例如,您可能想要不同於手機 UI 的平板電腦 UI。
雖然系統為使您的應用適用於不同的螢幕,會進行縮放和大小調整,但您應針對不同的螢幕尺寸和密度優化應用。 這樣可以最大程度優化所有裝置上的使用者體驗,使用者會認為您的應用實際上是專為他們的裝置而設計,而不是簡單地拉伸以適應其裝置螢幕。
按照以下連結中所述的做法,您可以建立正常顯示的應用,然後使用一個 .apk 檔案在所有支援的螢幕配置中提供優化的使用者體驗。
(https://developer.android.google.cn/training/multiscreen/screensizes.html)
希望本期的 FAQ 幫助您解決了部分問題,如果您在開發應用時遇到其他的 Android 相容性或 Google Play 問題,歡迎積極在我們的公眾平臺留言反饋,我們會對開發者們的問題進行集中彙總處理,並選取一些有代表性的、被提及次數較多的問題進行答覆,將其製作成定期的《Google Play 開發者 FAQ》文章。
希望自己的問題得到解決並幫助更多有同樣困惑的開發者嗎?快來留言吧!
推薦閱讀:
更好用!I/O大會公佈了這些Google Play管理中心新功能
相關文章
- 解密遊戲開發者 | Google Play 開發者特別版 Vol.8解密遊戲開發Go
- 四月刊 | Google Play 開發者 FAQGo
- Material Design 設計師分享如何快速入門 UX 設計 | Google Play 開發者 FAQ 特別篇Material DesignUXGo
- 首發 | Google Play 開發者 FAQ 第一期Go
- Google Play 助力更多開發者成功Go
- Google Play 開發者賬戶被封Go
- Android 8.0 開發者 FAQAndroid
- Google Play 更新一覽 | 2021 Android 開發者峰會GoAndroid
- Google:“父親節特別版”搜尋排行Go
- 馬上報名 | Google Play 開發者訓練營5月線上課程I/O特輯Go
- Android 8.0 Oreo 開發者常見問題 | Android 開發者 FAQ Vol.7Android
- Google Play 放置遊戲產品型別分析Go遊戲型別
- Google Play 開發者政策新規重挫應用開發商Go
- Google 釋出 Android 6.0 SDK & Android M 開發者預覽最終版GoAndroid
- Android 開發者 | 應用相容性注意事項Android
- Android Oreo 常見問題 2.0 | Android 開發者 FAQ Vol.9Android
- Android Oreo 常見問題 3.0 | Android 開發者 FAQ Vol.11Android
- Android UI 及 API 優化指南|Android 開發者 FAQ Vol.10AndroidUIAPI優化
- Android Oreo 常見問題 2.0 | Android 開發者 FAQ Vol.9Android
- 前往參加Google I/O的中國開發者特製攻略Go
- Google play內購 IabGo
- Android FAQAndroid
- Google Play約會遊戲開發者,ChinaJoy 2017完美收官!Go遊戲開發
- 谷歌Google Play網頁版更新或將支援谷歌眼鏡谷歌Go網頁
- 從成功到奪目: Google Play 2021 年度中國開發者最佳榜單Go
- 開課提醒今天下午3點 | Google Play 開發者線上訓練營Go
- 預計2015年Google Play開發者分成將超過App StoreGoAPP
- Google Play 家庭政策深度解析Go
- 非 SDK 介面常見問題 | Android 開發者 FAQ Vol.13Android
- 2019谷歌開發者大會首日看點:Google Play的新變化谷歌Go
- Google Play開發者賬號被封,相關問題彙總以及解決方案探索Go
- Google Play要求公示概率?別慌,和你想象的不一樣Go
- Kotlin 語言入門寶典 | Android 開發者 FAQ Vol.5KotlinAndroid
- PL/SQL Developer 6.0.4.906特別版SQLDeveloper
- 課程回顧 | Google Play 線上訓練營5月課程 I\/O 功能特輯Go
- Android 在 Google 開發者大會上釋出了哪些更新? | Google 開發者大會 2018AndroidGo
- Genymotion下安裝Google Play ServicesGo
- App Annie:2012年9月44%的開發者收入來自Google Play StoreAPPGo