持續提高Android應用的安全性與性能
每年,Google Play 助力數十億的 App 進行安裝或者更新。我們一直致力于提升 App 安全性和性能,確保每個用戶都能夠獲取最佳體驗,探索和安裝自己喜歡的 App 和游戲。
今天,我們想要和各位 Android 開發者簡單說明一下三項變更,它們背后的原因,以及它們如何讓 Android 設備運行得更加安全和流暢。
- 從 2018 下半年開始,Google Play 要求新 App 和 App 更新包將目標 SDK 版本(Target SDK Version)設定為最新版。針對新發布 App,此項變更將從 2018 年 8 月實施;針對現有 App 的版本更新,此項變更則從 2018 年 11 月生效。開發者們要留心此時間,確保 App 基于最新 API 進行開發,獲得安全性和性能方面的優化。
- 從 2019 年 8 月開始,Google Play 要求用原生庫(native libraries)進行發布和更新的 App 都必須提供 64 位和 32 位兩個版本。
- 此外,從 2018 年上半年開始,Google Play 將在每個 APK 頭部添加少量安全元數據,用于進一步驗證 App 的真實性。此項變更不需要開發者方面采取任何行動。
我們十分重視開發者生態圈,希望這篇文章能夠幫助各位順利發布 App。而且我們會繼續發布提醒通知,分享開發者資源幫助各位在關鍵日期節點前做好充分準備。
從 2018 年下半年開始, API 目標等級新規定
API 行為變更能夠提高 Android 安全性和隱私保護 —— 助力開發者提高 App 安全性、防止用戶遭受惡意軟件攻擊。以下列舉了我們針對近期平臺版本,推出的幾項有關 API 的變更:
- 不再支持通過隱式的 intent 調用 bindService ( ) (Android 5.0)
- 在運行時請求權限 (Android 6.0)
- 默認條件下,不再信任用戶為安全連接添加的 CA 證書 (Android 7.0)
- 在未獲得用戶明確批準的情形下,App 無法訪問用戶賬號 (Android 8.0)
上列變更僅僅適用于在 targetSdkVersion 清單屬性中明確表明支持新 API 行為的 App。例如,只有在 targetSdkVersion 值為 23(Android 6.0 適配 API 等級)或者更高的 App 內,用戶才能通過設定 “在運行時請求權限”,完全控制 App 能夠訪問到哪些隱私數據 —— 如聯系人和位置信息。
同樣地,近期發布的幾個版本還改善了用戶體驗,如防止 App 突然過度消耗電池和內存等資源,后臺執行限制就是一個很好的例子。
為了讓用戶能享受到最好的 Android 體驗,Google Play 管理中心將要求 App 設定目標 API 等級為近期版本:
- 2018 年 8 月:新 App 需要將 target API 等級設定為 26(Android 8.0)或者更高
- 2018 年 11 月,現有 App 的更新包需要將 target API 等級設定為 26 或者更高
- 2019 年之后:每年 targetSdkVersion 會提出新的要求。Android 新版本系統發布一年內,App 的開發和更新都需要將 API 調整到相應或者更高等級。
現有但不再更新的 App 并不受影響。開發者可以自行選擇是否使用 minSdkVersion,依舊可以進行基于舊版本 Android 系統的 App 開發。
我們建議各位開發者盡量提供向后兼容性。今后的 Android 系統會對未達到 API 要求而在安全和性能方面有所欠缺的 App 設置限制。我們將會采取積極主動的措施,降低 App 生態圈碎片化程度,保證 App 運行安全而且流暢。我們會提前通知開發者,讓各位能夠做好相應計劃。
今年我們正式發布 Android Oreo。在安全和性能方面,Oreo 是目前最好的一款 Android 系統。同時我們還發布了 Project Treble 計劃,加速設備上的系統更新速度。請立即開始為 Android 8.1 Oreo 開發 App。
2019 年開始要求提供 64 位支持
從 Android 5.0 開始,Android 平臺就加入了 64 位架構支持。到目前為止,40% 的 Android 設備都支持 64 位版本,同時兼容 32 位版本。一般來說,如果 App 用的是原生庫,那么 64 位代碼通常能提供顯著更好的性能,因為該架構支持更多的寄存器數量和更新的指令集。
預期未來 Android 設備可能只提供 64 位代碼支持,Google Play 管理中心要求新 App 以及 App 更新包在無 32 位支持的設備上也能運行。使用 32 位庫的 App 需要同時兼容 64 位庫 —— 發布時可以打包在同一個 APK 內,也可以作為多 APK 中的一個。不包含原生代碼的 App 不受此要求影響。
以上變更將在 2019 年 8 月起正式生效。此次預先通知是為了讓廣大開發者能夠有充足的時間為支持 64 位代碼做好準備。我們隨后會推出一系列相關文章內容,深度探討 64 位原生庫為 Android 帶來哪些性能優化,敬請期待。欲知更多信息,請查閱 Android NDK CPU 和構造指南:
https://developer.android.google.cn/ndk/guides/arch.html
2018 上半年開始采用安全元數據
從明年開始,我們將會在每個 APK 頂部添加少數安全元數據,用來認證 App 是通過 Google Play 官方發布的。比如說您去買東西,上面印著的商標就用于確定商品真偽。而我們往 APK 添加的元數據也是起這樣的作用,告訴用戶這個 App 是由 “Google Play” 官方下載的。
該項變更不需要開發者或者用戶方面采取任何措施。我們將會根據添加的元數據大小,調整 Google Play 中 APK 體積的上限值,并添加到 APK 簽名區塊中(APK Signing Block),而對 App 的功能沒有任何影響。這些元數據不僅能夠增強 Google Play 移動 App 生態系統的完整性,還能為開發者帶來新的發布機會,幫助更多的用戶享用最新 App。
展望未來
2017 年對 Google Play 而言是意義非凡的一年,我們共同見證了許許多多開發者的成長和成功。我們一直努力改善各項功能(包括先前在 Google I/O 2017 開發者大會和 Playtime 大會上提出的功能),助力開發者提高 App 質量,創造更多商業價值。
我們希望通過這些功能和即將發布的更新,在 2018 年及以后助力 Android 和 Google Play 生態系統繼續蓬勃發展。
【本文是51CTO專欄機構“谷歌開發者”的原創稿件,轉載請聯系原作者(微信公眾號:Google_Developers)】