如果僅從新功能和新樣式的角度去看 Android Q 的第一個(gè) Beta 版本,很多人應(yīng)該都會(huì)得出「Android Q 算不上是個(gè)大版本更新」這個(gè)結(jié)論。但事實(shí)卻并非如此——如果說(shuō) Android Oreo 的最大更新點(diǎn)是 通知系統(tǒng)、Android Pie 的最大更新點(diǎn)是 Home 鍵手勢(shì),那么將 Android Q 與此前的 Android 版本區(qū)分開(kāi)來(lái)的最大改動(dòng),應(yīng)該就是隱私了。
在 Android 操作系統(tǒng)中,隱私和權(quán)限是密切掛鉤的。
正因?yàn)槿绱耍珿oogle 自 Android 6.0 Marshmallow 開(kāi)始就引入了運(yùn)行時(shí)權(quán)限(runtime permissions)特性,允許用戶在應(yīng)用運(yùn)行過(guò)程中根據(jù)實(shí)際需求授予特定權(quán)限。例如當(dāng)應(yīng)用第一次運(yùn)行并嘗試獲取位聯(lián)系人權(quán)限時(shí),我們會(huì)看到這樣一個(gè)彈窗。
運(yùn)行時(shí)權(quán)限申請(qǐng)彈窗
引入運(yùn)行時(shí)權(quán)限的本意是讓?xiě)?yīng)用的權(quán)限申請(qǐng)流程更加清晰透明,給予用戶更多的主動(dòng)權(quán)。但長(zhǎng)久以來(lái)這個(gè)授權(quán)機(jī)制在實(shí)施效果上卻并不理想:一方面,一般用戶并沒(méi)有像預(yù)期那樣獲得權(quán)限管理這件事情上的主動(dòng)權(quán),很多應(yīng)用開(kāi)發(fā)商由此摸索出了不給權(quán)限便拒絕正常工作這種流氓思路;另一方面,對(duì)那些面向低版本 Android 系統(tǒng)開(kāi)發(fā)的老舊應(yīng)用來(lái)說(shuō),它們則可以完全規(guī)避掉這個(gè)機(jī)制。
對(duì)權(quán)限管理機(jī)制的進(jìn)一步細(xì)化和完善,顯然成為了 Google 要解決的一大問(wèn)題。Android Q 針對(duì)權(quán)限管理機(jī)制做出了如下更新:
首先,正如很多人都注意到的那樣,位置權(quán)限的授予方式在 Android Q Beta 1 版本中變得更加靈活。除了允許和拒絕,Android Q 還為位置權(quán)限加入了額外的「僅在使用該應(yīng)用期間允許」選項(xiàng),對(duì)于那些不需要在后臺(tái)獲取位置信息的應(yīng)用而言,這種權(quán)限授予方式不僅可以減少應(yīng)用后臺(tái)期間的電量消耗,還能在一定程度上避免不必要的個(gè)人隱私信息泄露。
位置權(quán)限可以僅在使用應(yīng)用期間授予
其次,即便是上面提到的那些面向低版本 Android 系統(tǒng)開(kāi)發(fā)、屬于運(yùn)行時(shí)權(quán)限機(jī)制「管轄」范圍以外的老舊應(yīng)用,它們的權(quán)限請(qǐng)求也無(wú)法像以往那樣在安裝后便被設(shè)置為「默認(rèn)允許」了。在 Android Q 上安裝這樣一款「老應(yīng)用」后,系統(tǒng)會(huì)在該應(yīng)用初次運(yùn)行時(shí)直接以全屏界面提示應(yīng)用將要獲取的權(quán)限并提供手動(dòng)開(kāi)關(guān),我們可以根據(jù)實(shí)際需求酌情授予。
通過(guò)降低 SDK 版本來(lái)繞過(guò)權(quán)限申請(qǐng)的做法不再可行
再次,一個(gè)名為「隱私權(quán)」的設(shè)置項(xiàng)在 Android Q 中也成為了一個(gè)獨(dú)立的一級(jí)設(shè)置項(xiàng)。這個(gè)設(shè)置項(xiàng)目下不僅整合了應(yīng)用權(quán)限管理、鎖屏通知展示方式、Google 自動(dòng)填充服務(wù)和 Google 位置信息記錄等常見(jiàn)隱私設(shè)定,還首次在 Android 系統(tǒng)層面向用戶提供了「廣告 ID 和個(gè)性化」開(kāi)關(guān),允許用戶選擇停用廣告?zhèn)€性化功能。
隱私權(quán)與廣告 ID 設(shè)置
最后,大量不規(guī)范的應(yīng)用行為將在 Android Q 中得到限制:
彈出窗口將被完全封殺,Google 不再允許應(yīng)用直接從后臺(tái)啟動(dòng)一個(gè) activity 窗口來(lái)對(duì)用戶當(dāng)前的窗口和任務(wù)進(jìn)行干擾,在 Beta 1 的實(shí)際體驗(yàn)中,Magisk 的 root 權(quán)限授予窗口和 1Password 的密碼自動(dòng)填寫(xiě)窗口在系統(tǒng)數(shù)次提示后都再也不會(huì)彈出。
后臺(tái)彈出窗口將被封禁提示
后臺(tái)應(yīng)用無(wú)法讀取剪貼板內(nèi)容,在 Android Q 中,只有被設(shè)置為默認(rèn)輸入法或正在前臺(tái)運(yùn)行的應(yīng)用才能讀取剪貼板數(shù)據(jù),換句話說(shuō),當(dāng)前依賴后臺(tái)運(yùn)行的大多數(shù)第三方剪貼板管理應(yīng)用都將面臨「失業(yè)」——事實(shí)上,我們此前推薦過(guò)的 Cliper 已經(jīng)在 Android Q 第一個(gè) Beta 版本放出的同時(shí)宣布將于今年 5 月關(guān)閉剪貼板內(nèi)容同步服務(wù)。
Clipper 的聲明 | 圖:AndroidPolice
懸浮窗權(quán)限也將定時(shí)自動(dòng)撤銷,很多 Android 應(yīng)用都可以借助懸浮窗特性來(lái)實(shí)現(xiàn)一些便利功能(如 FooView、Share 等),但這個(gè)特性同時(shí)也為惡意應(yīng)用盜取用戶隱私提供絕密手段。為此,Android Q 也會(huì)在應(yīng)用進(jìn)程被殺、應(yīng)用重啟或設(shè)備重啟后自動(dòng)撤銷先前用戶授予的懸浮窗權(quán)限。如果你像我一樣使用 Share 刷微博,就會(huì)發(fā)現(xiàn)幾乎每次啟動(dòng) Share 后點(diǎn)開(kāi)微博視頻都需要重新授予 Share 懸浮窗權(quán)限。
Share 的視頻懸浮窗權(quán)限也會(huì)被定期重重置
另外值得一提的是,IMEI、MEID 等不可重置的設(shè)備標(biāo)識(shí)信息在 Android Q 中也不再通過(guò)電話權(quán)限向第三方應(yīng)用開(kāi)放,同時(shí),連接 Wi-Fi 后的 MAC 地址也將自動(dòng)隨機(jī)化處理。
Android 9 中需要手動(dòng)開(kāi)啟的 MAC 地址隨機(jī)化選項(xiàng)
大多數(shù)應(yīng)用都需要在我們的手機(jī)里儲(chǔ)存信息,而這種儲(chǔ)存行為本應(yīng)是有序的:Android 系統(tǒng)一直以來(lái)都提供了 /data 和 sdcard/Android/data 兩個(gè)目錄來(lái)進(jìn)行應(yīng)用數(shù)據(jù)文件存放,無(wú)論應(yīng)用開(kāi)發(fā)商選擇將應(yīng)用數(shù)據(jù)放在何處,都不至于讓你的內(nèi)部存儲(chǔ)空間像上圖所示那樣混亂不堪。
這種不按照規(guī)范隨意存儲(chǔ)信息在公共目錄甚至內(nèi)部存儲(chǔ)空間根目錄的行為不僅影響美觀、降低文件管理效率,無(wú)形中也為「全家桶」應(yīng)用之間的「協(xié)作」提供了便利。舉個(gè)例子,我們?cè)?A 應(yīng)用中因?yàn)樾枰蟼饔脩纛^像而授予了它內(nèi)部存儲(chǔ)空間的讀寫(xiě)權(quán)限,但 A 應(yīng)用在獲得授權(quán)后,還悄悄將它收集到的設(shè)備隱私信息(如 IMEI)明文儲(chǔ)存在了內(nèi)部存儲(chǔ)空間根目錄。
這樣一來(lái),其他應(yīng)用即便被拒絕授予敏感信息的訪問(wèn)權(quán)限,也能通過(guò)內(nèi)部存儲(chǔ)空間中的這個(gè)文件實(shí)現(xiàn)隱私信息的「共享」。
混亂的內(nèi)部存儲(chǔ)空間
Google 在此前的 Android 版本中一直在探索存儲(chǔ)功能的改進(jìn)方向,包括引入對(duì) SD 卡的訪問(wèn)限制和限定目錄訪問(wèn)權(quán)限控制等,但內(nèi)部存儲(chǔ)空間「臟、亂、差」的現(xiàn)象一直都沒(méi)有得到根本性地改善,對(duì)用戶而言隱私風(fēng)險(xiǎn)也依然存在。
而這次在 Android Q 中,Google 引入了一個(gè)更加強(qiáng)力的新機(jī)制來(lái)應(yīng)對(duì)上述問(wèn)題——應(yīng)用域和媒體域存儲(chǔ)(App-scoped and media-scoped storage)。
盡管這個(gè)新機(jī)制有著非常長(zhǎng)的名字,但它的原理其實(shí)和我們大家耳熟能詳?shù)摹?strong>沙箱」概念類似:既然無(wú)法避免應(yīng)用向公共目錄隨意讀寫(xiě)文件,那不如索性將它們各自放進(jìn)一個(gè)與世隔絕的沙箱里,既能對(duì)應(yīng)用間數(shù)據(jù)和用戶隱私數(shù)據(jù)進(jìn)行有效隔離,又能保證內(nèi)部存儲(chǔ)空間干凈整潔。
首份 Android Q Beta 1 兼容性測(cè)試報(bào)告節(jié)選
「沙箱」機(jī)制無(wú)疑會(huì)對(duì)當(dāng)下大部分存儲(chǔ)行為不端的國(guó)產(chǎn)應(yīng)用造成不小的沖擊,更直白地說(shuō),這其中大部分應(yīng)用在 Android Q 下不僅無(wú)法在內(nèi)部存儲(chǔ)空間內(nèi)隨意創(chuàng)建文件,如果不跟進(jìn)適配新的存儲(chǔ)行為機(jī)制,它們甚至連相冊(cè)文件都無(wú)法正常讀取。
關(guān)聯(lián)閱讀:兼容率達(dá)78%!首份Android Q版本兼容性評(píng)測(cè)報(bào)告出爐
不過(guò)目前 Android Q Beta 1 中的應(yīng)用數(shù)據(jù)「沙箱化」默認(rèn)為關(guān)閉狀態(tài),如果你想手動(dòng)測(cè)試效果,可以按照以下步驟打開(kāi):
隨后手機(jī)會(huì)重啟,重啟后在命令行或終端中執(zhí)行 adb shell getprop sys.isolated_storage_snapshot,若返回 true 則為開(kāi)啟成功。
ADB 開(kāi)啟「沙箱」模式
需要注意的是,考慮到應(yīng)用兼容性問(wèn)題,「沙箱化」機(jī)制僅適于用于面向 Android Q 開(kāi)發(fā)的應(yīng)用或開(kāi)啟「沙箱」后重新安裝的應(yīng)用。如果開(kāi)啟「沙箱」前應(yīng)用已經(jīng)使用過(guò)內(nèi)部存儲(chǔ)空間(比如保留數(shù)據(jù) OTA 至 Android Q Beta 1),則需要卸載該應(yīng)用重新安裝才能使「沙箱」機(jī)制機(jī)制生效。
開(kāi)啟前后內(nèi)部存儲(chǔ)空間的效果對(duì)比可參考下圖:
賞心悅目不是嗎
最后,雖然這個(gè)新機(jī)制對(duì)那些一直以來(lái)都按照開(kāi)發(fā)規(guī)范設(shè)計(jì)的應(yīng)用而言幾乎沒(méi)有任何影響,但大部分應(yīng)用、包括文件管理器應(yīng)用在開(kāi)啟了「沙箱」機(jī)制后都將遇到問(wèn)題,至于如何應(yīng)對(duì)這些新機(jī)制帶來(lái)的問(wèn)題,在尊重用戶隱私數(shù)據(jù)的前提下合理利用內(nèi)部存儲(chǔ)空間,不妨參考 @燒餅 不久前分享在 Matrix 社區(qū)的文章。
關(guān)聯(lián)閱讀:Android Q 存儲(chǔ)行為大變化,對(duì)用戶和應(yīng)用的影響都有哪些 - 少數(shù)派
通過(guò)上面的介紹可以看出,未來(lái)在 Android Q 的測(cè)試版或正式版本中,當(dāng)下荼毒國(guó)內(nèi)安卓生態(tài)的諸多「毒瘤」應(yīng)用和「毒瘤」行為都將得到限制,與此同時(shí),我們此前多次推薦過(guò)的諸如存儲(chǔ)重定向這樣的應(yīng)用也將因此面臨「失業(yè)」。
從用戶的角度出發(fā),這類 hack 向、有一定折騰成本和兼容性風(fēng)險(xiǎn)的應(yīng)用逐漸失去作用是件好事,而當(dāng)我們回過(guò)頭來(lái)重新審視那些在 Android Q 推出后依然不會(huì)「失業(yè)」的應(yīng)用就會(huì)發(fā)現(xiàn),即便 Google 如此強(qiáng)硬,我們?nèi)杂幸粋€(gè)最為根本的問(wèn)題亟待解決,即不給權(quán)限不讓用的問(wèn)題。
換句話說(shuō),除了文中所提到的改進(jìn),Android 還需要更強(qiáng)力的流氓應(yīng)用對(duì)策(比如允許用戶像 AppOps 那樣給個(gè)空權(quán)限)。關(guān)于這一點(diǎn),希望我們能在 Android Q 接下來(lái)的測(cè)試版本中看到更多。
聯(lián)系客服