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