close

引言

根據谷歌官方消息,最終版本的Android 12預計於今年下半年正式上線。此次發布預覽版的目的主要是幫助開發者提前了解Android 12的新變化,為後續進行應用適配提前做準備。


作為陪伴開發者多年的重要夥伴,個推一直密切關注和跟進行業發展趨勢。在Android12首個開發者預覽版發布後,個推快速對新系統的有關更新展開了調研。本文對Android 12預覽版的部分新功能、新特性進行了解讀,希望能幫助廣大開發者對新系統有個快速了解。


Android 12行為變更:面向所有應用


用戶體驗升級


沉浸式手勢導航改進

從Android 10 開始,Android 系統就已支持手勢導航,致力於給用戶帶來沉浸式的全新體驗。在之前版本的系統下,用戶啟動安卓的沉浸模式,默認需要的手勢操作是:從屏幕側方滑入,退出沉浸模式,然後再返回上一個界面。最新發布的Android 12首個開發者預覽版則對手勢導航模式進行了簡化:用戶不再需要滑動兩次,只需一次滑動手勢,即可退出全屏沉浸模式並返回上個界面,更加高效和便利。



隱私/安全保護增強


MAC 地址權限限制

為進一步保護用戶隱私和數據安全,Android 11引入了「單次授權」「權限自動重置」「分區存儲」等功能。Android 12則更進一步限制了所有非系統應用程序對設備MAC地址的訪問,無論目標API級別如何。

相關API返回空值或占位符值,具體取決於應用程序的目標SDK版本:
➀ target = 12 ,返回 null
➁ target <12 ,返回 02:00:00:00:00:00

未被信任的觸摸事件將被阻止

為了保護系統安全和更好的用戶體驗,Android 12將會阻止某些窗口的觸摸。
例如:
➀申請了SYSTEM_ALERT_WINDOW權限的 windows
➁Toast messages

應用不能關閉系統對話框

ACTION_CLOSE_SYSTEM_DIALOGS intent 在 Android 12 被廢棄。
➀target = 12, 將拋出SecurityException異常
➁target < 12 ,該 intent 不會執行,會在 logcat 打印警告日誌:

E ActivityTaskManager Permission Denial: \

android.intent.action.CLOSE_SYSTEM_DIALOGS broadcast from \

com.package.name requires android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS, \

dropping broadcast.



Android 12行為變更:針對Target = 12的應用



自定義通知欄

Android 12 開發者預覽版對通知欄進行了更改。圖左:Android 12 開發者預覽版,圖右:Android 11

之前,開發者能自定義整個通知欄區域的布局和樣式,這就導致了不同設備的兼容適配問題以及用戶的瀏覽不適應問題。

Android 12更改了完全自定義通知的外觀。對於 target = 12 的應用,在通知欄的消息展示均使用統一的模板。上面應用名字顯示和摺疊按鈕都是相同的、固定的,下面摺疊和展開狀態呈現的區域是可自定義的:

摺疊和展開的樣式:
摺疊狀態

展開狀態

若APP中存在自定義Notification.Style,亦或是使用了Notification.Builder中 setCustomContentView(RemoteViews), setCustomBigContentView(RemoteViews)和setCustomHeadsUpContentView(RemoteViews)方法,可能會受此影響。


隱私/安全


WebView 中的SameSite cookie行為

Android的WebView組件基於Chromium來提高安全性和隱私性,去年,Chromium對第三方Cookie的處理方式進行了更改,並已面向眾多Chrome用戶推出。從Android 12開始,這些更改將應用於WebView。

SameSitecookie的屬性控制它是否可以與任何請求一起發送,還是只能與相同站點的請求一起發送。Android 12中的WebView基本版本(版本89.0.4385.0)改進了第三方Cookie的默認處理,將有助於防止意外的跨站點共享。

ADB backup 限制

Android 12 限制了 adb backup 命令行的默認行為 (該命令行是用來備份恢復數據的),對應用程序數據adb backup有依賴的開發者可以在清單文件中設置 android:debuggable 為 true。

組件需要添加exported配置

target=12時,使用的activity 、service或者廣播有用到 intent filters ,則需聲明 android:exported 屬性。不配置的話,在安卓 12 設備上將不能安裝,logcat 也會打印錯誤日誌:

Targeting S+ (version 10000 and above) requires that an explicit value for \

android:exported be defined when intent filters are present


Pending intents 必須聲明意圖

使用 PendingIntent 需要聲明 PendingIntent.FLAG_MUTABLE 或者 PendingIntent.FLAG_IMMUTABLE flag,否則系統會拋出異常 IllegalArgumentException。


性能


前台服務啟動限制

以 Android 12 為目標的應用程序,無法在後台運行時啟動前台服務,應用程序在後台運行時,可考慮使用 WorkManager 執行任務。

ForegroundService通知延遲

前台服務啟動後必須調用startForeground()來顯示前台通知,如果應用在5s內未調用 startForeground(),則系統將停止服務並聲明此應用為 ANR。
在Android 12中,限制時間由5s改為了10s。這樣一來,對於部分APP來講,將會有更充分的處理時間。

通知跳轉

services 或者 broadcast receivers 中創建的通知將不能調用startActivity()!!!
logcat 會打印:

Indirect notification activity start (trampoline) from PACKAGE_NAME, \this should be avoided for performance reasons.



總結

以上,是個推對Android 12首個開發者預覽版本中幾個重要更新點的解讀。

除了以上內容外,Android 12 預覽版還在視頻、音頻和圖片處理方面做了很多有趣的更新。比如,通過手機的振動馬達增加對觸覺耦合音頻效果的支持,可以幫助遊戲類APP提升玩家體驗;引入了兼容媒體轉碼功能,可以讓那些不支持 HEVC的應用,也能將文件高效轉碼為 AVC 格式;同時還引入了對 AV1 圖像文件格式(AVIF)的支持,使得開發者可以同樣的文件大小,收穫比 JPEG 圖像更高的圖像質量……感興趣的開發者可以進入Android 12官網進一步詳細了解。

https://developer.android.google.cn/about/versions/12


後續,個推還將在持續打磨開發者服務和SDK產品的同時,密切跟進移動開發領域的相關動態,為開發者升級產品功能、迭代服務體驗提供有效建議。

也歡迎更多的開發者和我們一起交流和探索Android及移動開發新技術,共同建設更好的安卓開發生態。

*本文圖片來源於Android官網


Android 12 內置原生壁紙下載
Android 12 新版本泄露,隱私安全可媲美 iOS 系統?
Android 12 有哪些新功能?開發人員測試版本即將發布

我是code小生,喜歡可以隨手點個在看、轉發給你的朋友,謝謝~


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()