Android 11 強(qiáng)制用戶使用內(nèi)置相機(jī)應(yīng)用,谷歌讓安卓更封閉了嗎?
編者按:本文來自極客邦科技 InfoQ,作者 核子可樂 小智,36氪經(jīng)授權(quán)發(fā)布。
在誕生之初,Android 系統(tǒng)一直努力強(qiáng)調(diào)自由與靈活的設(shè)計(jì)思路,倡導(dǎo)開發(fā)者可以通過代碼實(shí)現(xiàn)任何功能。與 iOS 相比,Android 為人稱道的正是這種開放的開源方式。但隨著對(duì)安全性與隱私性的高度關(guān)注,情況早已有所變化。過去十年以來,Android 的每一次重大更新都在以保護(hù)用戶的名義關(guān)閉或限制某些功能。
在即將到來的 Android 11 版本中,用戶將無法選擇第三方相機(jī)應(yīng)用,為其他應(yīng)用拍攝照片或視頻。換言之,用戶將只能使用內(nèi)置相機(jī)應(yīng)用。
Android 11 預(yù)計(jì)將于今年第三季度發(fā)布,而在最新的 issue track 中,開發(fā)者們發(fā)現(xiàn)最新版本再次更改了相機(jī) API 的一些設(shè)定,用戶將只能使用 Android 內(nèi)置相機(jī)應(yīng)用,這將對(duì)第三方相機(jī)如美顏、輕顏等 App 造成不小的影響。
此次更改的核心,在于 Android 定義的 Intent 系統(tǒng)。舉個(gè)例子,當(dāng)你在各大 App 如知乎、極客時(shí)間等選擇更新頭像時(shí),你可以選擇拍攝圖片上傳或者從手機(jī)圖庫(kù)上傳。而由于這些 App 本身并不提供拍攝功能,因此用戶可以選擇調(diào)用原生相機(jī)應(yīng)用或第三方相機(jī)應(yīng)用拍攝上傳圖像。這背后涉及到的就是 Android 的 Intent 系統(tǒng)。
在 Intent 系統(tǒng)中,開發(fā)者只需要根據(jù)相應(yīng)條件創(chuàng)建一項(xiàng)請(qǐng)求,Android 就會(huì)提示用戶從已安裝的應(yīng)用列表中做出選擇,如下圖:
Android 10 上的相機(jī)選取器
但是,即將推送的 Android 11 版本對(duì)于這一機(jī)制做出了大刀闊斧的調(diào)整。有三項(xiàng) Intents 的運(yùn)作方式迎來變更,具體包括:VIDEO_CAPTURE、IMAGE_CAPTURE以及IMAGE_CAPTURE_SECURE。Android 11 將自動(dòng)提供預(yù)安裝的相機(jī)應(yīng)用以執(zhí)行這類操作,用戶無需(法)主動(dòng)搜索其他應(yīng)用。
從 Android 11 版本開始,只有預(yù)安裝的系統(tǒng)相機(jī)應(yīng)用才能響應(yīng)以下 Intent 操作:
android.media.action.VIDEO_CAPTURE
android.media.action.IMAGE_CAPTURE
android.media.action.IMAGE_CAPTURE_SECURE
如果有多款預(yù)安裝系統(tǒng)相機(jī)應(yīng)用可供選擇,則系統(tǒng)會(huì)顯示對(duì)話框,提示用戶從中選擇一種。如果你希望在應(yīng)用中使用特定的第三方相機(jī)應(yīng)用進(jìn)行圖像或視頻捕捉,也需要通過在 Intent 當(dāng)中明確指定目標(biāo)軟件包的名稱或組件。
谷歌在 Android 11 的新行為列表中提到了這項(xiàng)更改,并在 Issue Tracker 中進(jìn)一步予以確認(rèn)。雖然人們普遍認(rèn)為此舉是為了提升隱私性與安全性,但谷歌并沒有解釋這些 Intents 為什么有可能引發(fā)風(fēng)險(xiǎn)。也許某些惡意相機(jī)應(yīng)用會(huì)誘導(dǎo)用戶將其設(shè)置為默認(rèn)選項(xiàng),并借此捕捉本應(yīng)保密的敏感內(nèi)容。
“……我們認(rèn)為,對(duì)用戶的隱私與安全的保護(hù)才是正確的權(quán)衡?!?— 谷歌Issue Tracker.
Android 11 不僅關(guān)閉了根據(jù)請(qǐng)求自動(dòng)啟動(dòng)第三方預(yù)安裝相機(jī)應(yīng)用的選項(xiàng),還阻止應(yīng)用程序開發(fā)人員提供類似的界面以模擬這項(xiàng)傳統(tǒng)功能。外網(wǎng)有人通過使用一些簡(jiǎn)單的代碼進(jìn)行測(cè)試,嘗試查詢手機(jī)上的相機(jī)應(yīng)用,而后分別在安裝有同一相機(jī)應(yīng)用的 Android 10 與 Android 11 設(shè)備上加以運(yùn)行。Android 10 正確列出了所有已安裝的相機(jī)應(yīng)用,但 Android 11 卻不會(huì)返回任何報(bào)告——甚至不會(huì)返回谷歌在設(shè)備上預(yù)安裝的 Camera 應(yīng)用。
上圖:Android 10 上的調(diào)試器視圖。下圖:Android 11 上的調(diào)試器視圖。
有人說,谷歌確實(shí)給開發(fā)者提供了一種解決方法,只是可用度不高。說明文檔建議開發(fā)者明確提供軟件包名稱,以檢查已安裝的相機(jī)應(yīng)用。這意味著開發(fā)者必須預(yù)先指定首選應(yīng)用,并將用戶直接定向至這些應(yīng)用處。當(dāng)然,也有其他方法能夠在無需指定所有軟件包名稱的前提下獲取選項(xiàng),例如獲取全部應(yīng)用列表,而后手動(dòng)搜索 Intent 過濾器,但這似乎比指定名稱還要復(fù)雜。
至少在目前的 Android 11 beta 版中,這一設(shè)定已經(jīng)切實(shí)起效,并影響到一切以 API 30 或更低版本為目標(biāo)的應(yīng)用程序。目前還不清楚 Android CTS(兼容性測(cè)試套件)是否也有同樣的變動(dòng),或者說允許 OEM 廠商將其更改為原本的規(guī)則。但就現(xiàn)在的情況看,谷歌很可能會(huì)將此設(shè)定為 Android 的未來標(biāo)準(zhǔn)。
這項(xiàng)調(diào)整的影響不能說特別大,畢竟對(duì)于大部分一直在默認(rèn)使用內(nèi)置相機(jī)應(yīng)用的用戶來說,其實(shí)不會(huì)受到任何影響。另外,大多數(shù)應(yīng)用仍然允許用戶先打開自己喜愛的相機(jī)應(yīng)用拍下照片,然后再通過圖庫(kù)進(jìn)行上傳。但是,用戶的操作過程確實(shí)更繁瑣了,對(duì)于那些需要經(jīng)常使用特定濾鏡拍攝個(gè)人資料圖片、或者習(xí)慣用 G Cam 端口替代默認(rèn)相機(jī)的用戶不太友好。此外,某些應(yīng)用還不允許使用其他工作流,意味著我們?cè)谄渲袑o法使用任何相機(jī)應(yīng)用。
在此項(xiàng)變更的 issue track 區(qū)域,也有許多 Android 開發(fā)者提出了明確的質(zhì)疑:
請(qǐng)?jiān)敿?xì)解釋下使用第三方相機(jī)應(yīng)用怎么就惡意了?
我完全不同意……至少也應(yīng)該給一個(gè)新的開發(fā)者選項(xiàng),讓用戶可以有選擇的權(quán)利,目前為止我沒看到這個(gè)變更有什么好的地方。
Android 的創(chuàng)建原則之一就是開放的性質(zhì)和為每個(gè)任務(wù)選擇應(yīng)用程序的能力。消除了這些選擇,你就像蘋果一樣,封閉的生態(tài)系統(tǒng),創(chuàng)新有限。
這項(xiàng)變更是誰負(fù)責(zé)的?
……
從以上的開發(fā)者吐槽也可以看出,開放、創(chuàng)新是 Android 系統(tǒng)的靈魂,這也是其區(qū)別于 iOS 系統(tǒng)的一大差異。但從近幾年手機(jī) OS 的發(fā)展規(guī)律來看,Android 變得越來越 iOS,iOS 變得越來越像 Android。
而最近幾次 Android 大版本的更新,總是伴隨著谷歌強(qiáng)制這,谷歌強(qiáng)制那的新聞,從收緊文件訪問權(quán)、收緊 API 調(diào)用、統(tǒng)一手勢(shì)操作、強(qiáng)制無縫更新等爭(zhēng)議頗多的新 feature 就可以看出谷歌試圖統(tǒng)一 Android 的生態(tài)和標(biāo)準(zhǔn)。但 Android 生態(tài)的多樣性,恰恰也是 Android 系統(tǒng)可玩性的體驗(yàn),如果大家都大差不差,Android 手機(jī)也就變成了只有長(zhǎng)相不同的蘋果手機(jī)。
谷歌的官方解釋是為了用戶隱私與安全,但目前來看,這個(gè)理由似乎并不受 Android 開發(fā)者們的認(rèn)可。有趣的是,當(dāng)蘋果表示不會(huì)為 Safari 瀏覽器的 WebKit 引擎中實(shí)現(xiàn) 16 個(gè) Web API,理由是它們構(gòu)成了隱私威脅時(shí),谷歌的工程師認(rèn)為蘋果是在維護(hù)自己的蛋糕。