後續更新 | 減小使用非 SDK 接口以提高穩定性

做者: 軟件工程師 David Brazdi 和 Nicolas Geoffrayandroid

在 Android 生態中,咱們很是重視爲用戶和開發者提供最好的體驗。每一次版本更新都會引入新的功能,助力開發者打造完美的用戶體驗;然而,咱們發現一些應用開發者在開發過程當中調用了非 SDK 接口,致使用戶頻繁遭遇應用不兼容甚至崩潰,並給開發者帶來緊急發佈補丁等困擾。咱們但願能作得更好,所以須要各位開發者的共同協助,來確保每一個 Android 新版本的穩定性。

三個月前,咱們宣佈從 Android P 開始限制非 SDK 接口的使用。咱們知道這些限制可能對您的應用發佈形成影響,所以咱們爲開發者提供了相關工具用以檢測違規調用,幫助各位在計劃中預留充足時間,針對谷歌新發布的政策調整,並向咱們提供反饋。api

在開發者預覽版和 Beta 1 版本中,咱們經過多種方式告知了開發者這些限制對應用形成的影響。 在開發者預覽版中,被限制 API 的調用信息會被記錄在日誌中,並顯示相應的 Toast 警告;而在 Beta 1 版本中,開發者能夠經過使用 StrictMode 檢測非 SDK 接口的調用,並自行記錄日誌消息。好比: 工具

咱們理解應用調用非 SDK 接口有不少緣由,而確保您的應用可以繼續在 Android P 上順利運行對咱們而言很是重要。咱們十分感謝不少開發者經過 錯誤追蹤器 (issue tracker) 進行反饋並詳細解釋對一些非 SDK 接口的需求。對於大部分的請求,咱們已將相關的非 SDK 接口添加至灰名單,從而暫時豁免了它們在 Android P 上的限制。同時,咱們團隊也投入了大量資源,在百萬個應用上運行靜態分析,同時處理數千份來自內外部 beta 測試人員的自動生成報告。藉助分析結果,咱們識別出了更多應用依賴的非 SDK 接口,並相應地對 灰名單進行了增補。此外,咱們將會在將來發布的系統版本中,探討是否存在公有 SDK 來替代灰名單中的接口。不過,咱們或許仍然漏掉了一些正在被使用的非 SDK 接口。所以,爲了將應用不兼容的風險降至最低,targetSdkVersion 爲 Android Oreo 或更低的應用依舊能夠調用大部分非 SDK 接口。

總而言之,在 Android P 上運行的應用會受到非 SDK 接口使用限制。若是您的目標版本爲 Android P,請查看灰名單中包含的仍然能夠調用的非 SDK 接口,灰名單之外的非 SDK 接口均不可調用。若是應用的目標版本爲 Android Oreo 或更低,大部分的限制會被豁免,可是若是調用的非 SDK 接口不在灰名單中,那麼應用會在 logcat 中收到警告信息 (對用戶不可見)。測試

請您在咱們新發布的 Beta 2 版本上進行測試,並使用 StrictMode 來檢測仍在使用的非 SDK 接口。請注意:Beta 2 版本和最終穩定版對非 SDK 接口的使用限制基本一致。您可在文章下方留言,提出您在開發過程當中遇到的相關問題或分享您的想法。google

點擊查看《對於非 SDK 接口的限制》文檔瞭解詳細信息 3d

相關文章
相關標籤/搜索