後續更新 | 減少使用非 SDK 介面以提升穩定性

Android_開發者發表於2019-02-27

作者: 軟體工程師 David Brazdi 和 Nicolas Geoffray

後續更新 | 減少使用非 SDK 介面以提升穩定性

在 Android 生態中,我們非常重視為使用者和開發者提供最好的體驗。每一次版本更新都會引入新的功能,助力開發者打造完美的使用者體驗;然而,我們發現一些應用開發者在開發過程中呼叫了非 SDK 介面,導致使用者頻繁遭遇應用不相容甚至崩潰,並給開發者帶來緊急釋出補丁等困擾。我們希望能做得更好,因此需要各位開發者的共同協助,來確保每個 Android 新版本的穩定性。

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

在開發者預覽版和 Beta 1 版本中,我們通過多種方式告知了開發者這些限制對應用造成的影響。
開發者預覽版中,被限制 API 的呼叫資訊會被記錄在日誌中,並顯示相應的 Toast 警告;而在 Beta 1 版本中,開發者可以通過使用 StrictMode 檢測非 SDK 介面的呼叫,並自行記錄日誌訊息。比如:

後續更新 | 減少使用非 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 介面的使用限制基本一致。您可在文章下方留言,提出您在開發過程中遇到的相關問題或分享您的想法。

點選檢視《對於非 SDK 介面的限制》文件瞭解詳細資訊

後續更新 | 減少使用非 SDK 介面以提升穩定性

相關文章