無需第三方應用就能管好流氓應用,這可能是 Android Q 最重要的新功能 | 具透
如果僅從新功能和新樣式的角度去看 Android Q 的第一個 Beta 版本,很多人應該都會得出「Android Q 算不上是個大版本更新」這個結論。但事實卻並非如此——如果說 Android Oreo 的最大更新點是 、Android Pie 的最大更新點是 ,那麼將 Android Q 與此前的 Android 版本區分開來的最大改動,應該就是隱私了。
許可權收緊,全面封堵流氓行為
在 Android 作業系統中,隱私和許可權是密切掛鉤的。
正因為如此,Google 自 Android 6.0 Marshmallow 開始就引入了執行時許可權(runtime permissions)特性,允許使用者在應用執行過程中根據實際需求授予特定許可權。例如當應用第一次執行並嘗試獲取位聯絡人許可權時,我們會看到這樣一個彈窗。
執行時許可權申請彈窗
引入執行時許可權的本意是讓應用的許可權申請流程更加清晰透明,給予使用者更多的主動權。但長久以來這個授權機制在實施效果上卻並不理想:一方面,一般使用者並沒有像預期那樣獲得許可權管理這件事情上的主動權,很多應用開發商由此摸索出了不給許可權便拒絕正常工作這種流氓思路;另一方面,對那些面向低版本 Android 系統開發的老舊應用來說,它們則可以完全規避掉這個機制。
對許可權管理機制的進一步細化和完善,顯然成為了 Google 要解決的一大問題。Android Q 針對許可權管理機制做出瞭如下更新:
首先,正如很多人都注意到的那樣,位置許可權的授予方式在 Android Q Beta 1 版本中變得更加靈活。除了允許和拒絕,Android Q 還為位置許可權加入了額外的「僅在使用該應用期間允許」選項,對於那些不需要在後臺獲取位置資訊的應用而言,這種許可權授予方式不僅可以減少應用後臺期間的電量消耗,還能在一定程度上避免不必要的個人隱私資訊洩露。
位置許可權可以僅在使用應用期間授予
其次,即便是上面提到的那些面向低版本 Android 系統開發、屬於執行時許可權機制「管轄」範圍以外的老舊應用,它們的許可權請求也無法像以往那樣在安裝後便被設定為「預設允許」了。在 Android Q 上安裝這樣一款「老應用」後,系統會在該應用初次執行時直接以全屏介面提示應用將要獲取的許可權並提供手動開關,我們可以根據實際需求酌情授予。
通過降低 SDK 版本來繞過許可權申請的做法不再可行
再次,一個名為「隱私權」的設定項在 Android Q 中也成為了一個獨立的一級設定項。這個設定專案下不僅整合了應用許可權管理、鎖屏通知展示方式、Google 自動填充服務和 Google 位置資訊記錄等常見隱私設定,還首次在 Android 系統層面向用戶提供了「廣告 ID 和個性化」開關,允許使用者選擇停用廣告個性化功能。
隱私權與廣告 ID 設定
最後,大量不規範的應用行為將在 Android Q 中得到限制:
彈出視窗將被完全封殺,Google 不再允許應用直接從後臺啟動一個 activity 視窗來對使用者當前的視窗和任務進行干擾,在 Beta 1 的實際體驗中,Magisk 的 root 許可權授予視窗和 1Password 的密碼自動填寫視窗在系統數次提示後都再也不會彈出。
後臺彈出視窗將被封禁提示
後臺應用無法讀取剪貼簿內容,在 Android Q 中,未經簽名認證的第三方應用將無法後臺讀取系統的剪貼簿內容,換句話說,未來除了系統內建的 GBoard 輸入法,第三方剪貼簿管理應用幾乎都將面臨「失業」——事實上,我們此前推薦過的 Cliper 就已經在 Android Q 第一個 Beta 版本放出的同時宣佈將於今年 5 月關閉剪貼簿內容同步服務。
Clipper 的宣告 | 圖:AndroidPolice
懸浮窗許可權也將定時自動撤銷,很多 Android 應用都可以藉助懸浮窗特性來實現一些便利功能(如 FooView、Share 等),但這個特性同時也為惡意應用盜取使用者隱私提供絕密手段。為此,Android Q 也會在應用程序被殺、應用重啟或裝置重啟後自動撤銷先前使用者授予的懸浮窗許可權。如果你像我一樣使用 Share 刷微博,就會發現幾乎每次啟動 Share 後點開微博視訊都需要重新授予 Share 懸浮窗許可權。
Share 的視訊懸浮窗許可權也會被定期重重置
另外值得一提的是,IMEI、MEID 等不可重置的裝置標識資訊在 Android Q 中也不再通過電話許可權向第三方應用開放,同時,連線 Wi-Fi 後的 MAC 地址也將自動隨機化處理。
Android 9 中需要手動開啟的 MAC 地址隨機化選項 沙箱來襲,還你一個整潔的儲存空間
大多數應用都需要在我們的手機裡儲存資訊,而這種儲存行為本應是有序的:Android 系統一直以來都提供了 /data和sdcard/Android/data兩個目錄來進行應用資料檔案存放,無論應用開發商選擇將應用資料放在何處,都不至於讓你的內部儲存空間像上圖所示那樣混亂不堪。
這種不按照規範隨意儲存資訊在公共目錄甚至內部儲存空間根目錄的行為不僅影響美觀、降低檔案管理效率,無形中也為「全家桶」應用之間的「協作」提供了便利。舉個例子,我們在 A 應用中因為需要上傳使用者頭像而授予了它內部儲存空間的讀寫許可權,但 A 應用在獲得授權後,還悄悄將它收集到的裝置隱私資訊(如 IMEI)明文儲存在了內部儲存空間根目錄。
這樣一來,其他應用即便被拒絕授予敏感資訊的訪問許可權,也能通過內部儲存空間中的這個檔案實現隱私資訊的「共享」。
混亂的內部儲存空間
Google 在此前的 Android 版本中一直在探索儲存功能的改進方向,包括引入對 SD 卡的訪問限制和限定目錄訪問許可權控制等,但內部儲存空間「髒、亂、差」的現象一直都沒有得到根本性地改善,對使用者而言隱私風險也依然存在。
而這次在 Android Q 中,Google 引入了一個更加強力的新機制來應對上述問題——應用域和媒體域儲存(App-scoped and media-scoped storage)。
儘管這個新機制有著非常長的名字,但它的原理其實和我們大家耳熟能詳的「沙箱」概念類似:既然無法避免應用向公共目錄隨意讀寫檔案,那不如索性將它們各自放進一個與世隔絕的沙箱裡,既能對應用間資料和使用者隱私資料進行有效隔離,又能保證內部儲存空間乾淨整潔。
首份 Android Q Beta 1 相容性測試報告節選
「沙箱」機制無疑會對當下大部分儲存行為不端的國產應用造成不小的衝擊,更直白地說,這其中大部分應用在 Android Q 下不僅無法在內部儲存空間內隨意建立檔案,如果不跟進適配新的儲存行為機制,它們甚至連相簿檔案都無法正常讀取。
關聯閱讀:相容率達78%!首份Android Q版本相容性評測報告出爐
不過目前 Android Q Beta 1 中的應用資料「沙箱化」預設為關閉狀態,如果你想手動測試效果,可以按照以下步驟開啟:
- 手機端開啟 USB 除錯並連線電腦
- 電腦端開啟命令列視窗或終端,執行 adb shell sm set-isolated-storage on
隨後手機會重啟,重啟後在命令列或終端中執行 adb shell getprop sys.isolated_storage_snapshot,若返回 true 則為開啟成功。
ADB 開啟「沙箱」模式
需要注意的是,考慮到應用相容性問題,「沙箱化」機制僅適於用於面向 Android Q 開發的應用或開啟「沙箱」後重新安裝的應用。如果開啟「沙箱」前應用已經使用過內部儲存空間(比如保留資料 OTA 至 Android Q Beta 1),則需要解除安裝該應用重新安裝才能使「沙箱」機制機制生效。
開啟前後內部儲存空間的效果對比可參考下圖:
賞心悅目不是嗎
最後,雖然這個新機制對那些一直以來都按照開發規範設計的應用而言幾乎沒有任何影響,但大部分應用、包括檔案管理器應用在開啟了「沙箱」機制後都將遇到問題,至於如何應對這些新機制帶來的問題,在尊重使用者隱私資料的前提下合理利用內部儲存空間,不妨參考 @ 不久前分享在 Matrix 社群的文章。
Google 更強硬,但我們還需要更多
通過上面的介紹可以看出,未來在 Android Q 的測試版或正式版本中,當下荼毒國內安卓生態的諸多「毒瘤」應用和「毒瘤」行為都將得到限制,與此同時,我們此前多次推薦過的諸如儲存重定向這樣的應用也將因此面臨「失業」。
從使用者的角度出發,這類 hack 向、有一定折騰成本和相容性風險的應用逐漸失去作用是件好事,而當我們回過頭來重新審視那些在 Android Q 推出後依然不會「失業」的應用就會發現,即便 Google 如此強硬,我們仍有一個最為根本的問題亟待解決,即不給許可權不讓用的問題。
換句話說,除了文中所提到的改進,Android 還需要更強力的流氓應用對策(比如允許使用者像 AppOps 那樣給個空許可權)。關於這一點,希望我們能在 Android Q 接下來的測試版本中看到更多。
關聯閱讀:
參考連結:
> 下載少數派 、關注 ,第一時間掌握 Android 新動態 ⏱