GrapheneOS不支援GApps,也永遠不會內建GApps。應該是說,開發團隊是不鼓勵使用者往系統塞GApps啦,得手動安裝。
1. 好想把你藏起來#
好想把你藏起來,藏在胸前的口袋,把你暖暖的融化,你就再也離不開。(杜德偉 - 把你藏起來)
GrapheneOS開發者提出了一個GMSCompat的功能,將GMS的特權指令攔截、轉譯,讓GMS服務像是一般Android APP一樣沙盒化執行,不授予過高的權限。這稱之為Sandboxed Google Play。
GMSCompat將GMS轉變為一般APP,不用像LineageOS那樣透過Recovery刷到Android系統裡面,可以隨時解除安裝。
GMSCompat又跟microG不一樣,並不需要signature spoofing偽裝成GMS就能使用。由於這裡的GMS服務被沙盒隔離,權限與一般APP無異,需要手動授予安裝APP的權限。此外,GrapheneOS採取最小授權原則,只授予GMS必要權限,剩下的端看使用者決定要不要開啟(會顯示在通知欄問你權限,例如讀取簡訊)
一般人的想法會認為,GMS應該要直接安裝在主帳號吧?不過呢,我想把它藏起來。
我聽說華為手機國際版可以透過一款名為GBox的專有軟體,執行Google Play服務。那麼,我們是否可以將GMS的權限進一步限縮呢?我希望,Google Play服務可以不污染整個Android系統,而是將其關起來,像虛擬機或容器一樣在特定的環境執行。
儘管GMSCompat本身就已經將GMS服務能存取的資訊限制到最小程度,我還是想新增多一層防護。
GrapheneOS的GMSCompat實現正是我一直想找的東西。它讓GMS「降級」成跟一般APP無異的東西,可以隨時強制停止,不會預設取得Androoid系統的最高權限。這樣,GMS就不會是手機裡面強制安裝的寄生蟲了。以前在用degoogle的LineageOS的時候,我就把握了一個原則:應當只在APP層面登入Google服務,不要擴及到整個系統。可惜的是,太多APP依賴GMS服務運作了,即使安裝microG也無法滿足,到頭來我還是得刷GApps,安裝至系統。
有了GMSCompat,然後呢?
利用Android 16內建的「工作設定檔」或者「私人空間」或者「多重使用者」,我們就能把GMS藏進去啦。Android表層帳號不要啟用Gmscompat,只在私人空間啟用。然後,我們可以利用Android提供的機制,一鍵凍結GMS執行!關在設定檔裡面的APP能夠一鍵停止執行,讓GMS的通知完全出不來。
這樣的話,表層的Android就可以維持degoogle的樣子,GMS並不會浮出檯面。
2. 安裝GMSCompat#
GMSCompat是GrapheneOS專屬功能,這個機制要移植到其他ROM有點困難。
只要從GrapeneOS的App Store下載Google Play Service即可。

但是我上面說了,我不要在Android主帳號安裝GApps,而是把它關起來,因此,我們得先執行下面的步驟,創造給GMS執行的專屬空間。
3. 私人空間、工作設定檔、多重使用者的選擇?#
私人空間(設定 → 安全與隱私權 → 私人空間)是Android的內建功能,可以設定密碼。執行時依然會收到通知。可以凍結APP執行。開啟後會在主畫面APP列表下方顯示。

工作設定檔需要靠第三方APP觸發,例如Shelter。有完整的檔案管理功能。不能設定密碼。執行時依然會收到通知。可以凍結APP執行。開啟後會在主畫面APP列表旁邊顯示工作設定檔。

多重使用者(設定 → 系統 →使用者),必須先登出目前使用者,好像在使用另一台手機一樣。可以設定密碼。不適合需要在主帳號與副帳號APP快速切換的場合使用。可以凍結APP執行。開啟後會在通知欄顯示目前的使用者。

按照個人需求設定就好了,這裡面隔離GMS最徹底的是多重使用者。
在你手動點選安裝之前,GMS是不會存在於Android系統裡面的。
不論你採用哪一個方案,都需要手動點選GrapheneOS的App Store下載GMS,GMS並不會自動安裝。