在誕生之初,Android 系統一直努力強調自由與靈活的設計思路,倡導開發者可以通過代碼實現任何功能。與 iOS 相比,Android 爲人稱道的正是這種開放的開源方式。但隨着對安全性與隱私性的高度關注,情況早已有所變化。過去十年以來,Android 的每一次重大更新都在以保護用戶的名義關閉或限制某些功能。

在即將到來的 Android 11 版本中,用戶將無法選擇第三方相機應用,爲其他應用拍攝照片或視頻。換言之,用戶將只能使用內置相機應用。

Android 11 預計將於今年第三季度發佈,而在最新的 issue track 中,開發者們發現最新版本再次更改了相機 API 的一些設定,用戶將只能使用 Android 內置相機應用,這將對第三方相機如美顏、輕顏等 App 造成不小的影響。

此次更改的核心,在於 Android 定義的 Intent 系統。舉個例子,當你在各大 App 如知乎、極客時間等選擇更新頭像時,你可以選擇拍攝圖片上傳或者從手機圖庫上傳。而由於這些 App 本身並不提供拍攝功能,因此用戶可以選擇調用原生相機應用或第三方相機應用拍攝上傳圖像。這背後涉及到的就是 Android 的 Intent 系統。

在 Intent 系統中,開發者只需要根據相應條件創建一項請求,Android 就會提示用戶從已安裝的應用列表中做出選擇,如下圖:

Android 10 上的相機選取器

但是,即將推送的 Android 11 版本對於這一機制做出了大刀闊斧的調整。有三項 Intents 的運作方式迎來變更,具體包括: VIDEO_CAPTURE 、 IMAGE_CAPTURE 以及 IMAGE_CAPTURE_SECURE 。Android 11 將自動提供預安裝的相機應用以執行這類操作,用戶無需(法)主動搜索其他應用。

從 Android 11 版本開始,只有預安裝的系統相機應用才能響應以下 Intent 操作:android.media.action.VIDEO_CAPTUREandroid.media.action.IMAGE_CAPTUREandroid.media.action.IMAGE_CAPTURE_SECURE

如果有多款預安裝系統相機應用可供選擇,則系統會顯示對話框,提示用戶從中選擇一種。如果你希望在應用中使用特定的第三方相機應用進行圖像或視頻捕捉,也需要通過在 Intent 當中明確指定目標軟件包的名稱或組件。

谷歌在 Android 11 的新行爲列表中提到了這項更改,並在 Issue Tracker 中進一步予以確認。雖然人們普遍認爲此舉是爲了提升隱私性與安全性,但谷歌並沒有解釋這些 Intents 爲什麼有可能引發風險。也許某些惡意相機應用會誘導用戶將其設置爲默認選項,並藉此捕捉本應保密的敏感內容。

“……我們認爲,對用戶的隱私與安全的保護纔是正確的權衡。” — 谷歌 Issue Tracker .

Android 11 不僅關閉了根據請求自動啓動第三方預安裝相機應用的選項,還阻止應用程序開發人員提供類似的界面以模擬這項傳統功能。外網有人通過使用一些簡單的代碼進行測試,嘗試查詢手機上的相機應用,而後分別在安裝有同一相機應用的 Android 10 與 Android 11 設備上加以運行。Android 10 正確列出了所有已安裝的相機應用,但 Android 11 卻不會返回任何報告——甚至不會返回谷歌在設備上預安裝的 Camera 應用。

上圖:Android 10 上的調試器視圖。下圖:Android 11 上的調試器視圖。

有人說,谷歌確實給開發者提供了一種解決方法,只是可用度不高。說明文檔建議開發者明確提供軟件包名稱,以檢查已安裝的相機應用。這意味着開發者必須預先指定首選應用,並將用戶直接定向至這些應用處。當然,也有其他方法能夠在無需指定所有軟件包名稱的前提下獲取選項,例如獲取全部應用列表,而後手動搜索 Intent 過濾器,但這似乎比指定名稱還要複雜。

至少在目前的 Android 11 beta 版中,這一設定已經切實起效,並影響到一切以 API 30 或更低版本爲目標的應用程序。目前還不清楚 Android CTS(兼容性測試套件)是否也有同樣的變動,或者說允許 OEM 廠商將其更改爲原本的規則。但就現在的情況看,谷歌很可能會將此設定爲 Android 的未來標準。

這項調整的影響不能說特別大,畢竟對於大部分一直在默認使用內置相機應用的用戶來說,其實不會受到任何影響。另外,大多數應用仍然允許用戶先打開自己喜愛的相機應用拍下照片,然後再通過圖庫進行上傳。但是,用戶的操作過程確實更繁瑣了,對於那些需要經常使用特定濾鏡拍攝個人資料圖片、或者習慣用 G Cam 端口替代默認相機的用戶不太友好。此外,某些應用還不允許使用其他工作流,意味着我們在其中將無法使用任何相機應用。

在此項變更的 issue track 區域,也有許多 Android 開發者提出了明確的質疑:

請詳細解釋下使用第三方相機應用怎麼就惡意了?

我完全不同意……至少也應該給一個新的開發者選項,讓用戶可以有選擇的權利,目前爲止我沒看到這個變更有什麼好的地方。

Android 的創建原則之一就是開放的性質和爲每個任務選擇應用程序的能力。消除了這些選擇,你就像蘋果一樣,封閉的生態系統,創新有限。

這項變更是誰負責的?

……

從以上的開發者吐槽也可以看出,開放、創新是 Android 系統的靈魂,這也是其區別於 iOS 系統的一大差異。但從近幾年手機 OS 的發展規律來看,Android 變得越來越 iOS,iOS 變得越來越像 Android。

而最近幾次 Android 大版本的更新,總是伴隨着谷歌強制這,谷歌強制那的新聞,從收緊文件訪問權、收緊 API 調用、統一手勢操作、強制無縫更新等爭議頗多的新 feature 就可以看出谷歌試圖統一 Android 的生態和標準。但 Android 生態的多樣性,恰恰也是 Android 系統可玩性的體驗,如果大家都大差不差,Android 手機也就變成了只有長相不同的蘋果手機。

谷歌的官方解釋是爲了用戶隱私與安全,但目前來看,這個理由似乎並不受 Android 開發者們的認可。有趣的是,當蘋果表示不會爲 Safari 瀏覽器的 WebKit 引擎中實現 16 個 Web API,理由是它們構成了隱私威脅時,谷歌的工程師認爲蘋果是在維護自己的蛋糕。

你怎麼看?

關注我並轉發此篇文章,私信我“領取資料”,即可免費獲得InfoQ價值4999元迷你書!

相關文章