Remove Google Play Services (MindTheGapps) from LineageOS without losing data.
在不清除資料的情況下從Android手機解除安裝Google服務框架(GMS)。
這篇文章是在LineageOS ROM測試的。非LineageOS用戶斟酌參考,雖然理論上可行但有機率卡開機。
Google服務框架是Android手機的寄生蟲,務必將其清除。這就是Degoogle。
(附圖由ChatGPT生成,表達我目前在Android機上的真實做法,看起來有點噁心我還是把它留下了)
記住,請神容易送神難。LineageOS預設是沒有Google服務的,這很好,但你要是禁不住誘惑去刷GApps問題就來了。LineageOS開發者有維護MindTheGapps的GAPPS套件,給有需要的人使用。
在Recovery刷MindTheGapps之後,會寫入到/system分區,成為系統APP,檔案四散。難以解除安裝。
通常這種時候是清除手機資料重刷LineageOS比較快。但若要解除安裝GMS不清除手機資料仍然是有可能的。
在不清除資料的情況下從Android手機移除Google服務框架,就是動用Root權限清除,並手動rm -rf相關檔案。
測試環境:LineageOS 23 Android 16
1. 準備遷移到microG#
移除GMS之後,若APP依然期望GMS服務存在才能運作,那麼就要用microG填補空缺。
microG不像MindTheGapps,不用使用Recovery刷入,安裝APK就行了。LineageOS支援signature spoofing所以能幾乎無縫替代GMS服務。
2. 檔案對照表#
到MindTheGApps的Github下載檔案
解壓縮,用tree指令列出檔案列表。例如Android 16的MindTheGapps有以下目錄。這些就是GMS安裝的實際目錄。
├── build.prop
├── META-INF
│ └── com
│ ├── android
│ │ └── otacert
│ └── google
│ └── android
│ ├── update-binary
│ └── updater-script
├── system
│ ├── addon.d
│ │ ├── addond_head
│ │ └── addond_tail
│ ├── product
│ │ ├── app
│ │ │ ├── GoogleCalendarSyncAdapter
│ │ │ │ └── GoogleCalendarSyncAdapter.apk
│ │ │ ├── GoogleContactsSyncAdapter
│ │ │ │ └── GoogleContactsSyncAdapter.apk
│ │ │ ├── MarkupGoogle_v2
│ │ │ │ └── MarkupGoogle_v2.apk
│ │ │ ├── PrebuiltExchange3Google
│ │ │ │ └── PrebuiltExchange3Google.apk
│ │ │ ├── SpeechServicesByGoogle
│ │ │ │ └── SpeechServicesByGoogle.apk
│ │ │ └── talkback
│ │ │ └── talkback.apk
│ │ ├── etc
│ │ │ ├── default-permissions
│ │ │ │ ├── default-permissions-google.xml
│ │ │ │ └── default-permissions-mtg.xml
│ │ │ ├── init
│ │ │ │ └── gapps.rc
│ │ │ ├── permissions
│ │ │ │ ├── com.google.android.dialer.support.xml
│ │ │ │ ├── privapp-permissions-google-product.xml
│ │ │ │ └── privapp-permissions-mtg.xml
│ │ │ ├── security
│ │ │ │ └── fsverity
│ │ │ │ └── gms_fsverity_cert.der
│ │ │ └── sysconfig
│ │ │ ├── d2d_cable_migration_feature.xml
│ │ │ ├── google_build.xml
│ │ │ ├── google-hiddenapi-package-allowlist.xml
│ │ │ ├── google.xml
│ │ │ ├── sysconfig_contextual_search.xml
│ │ │ └── wellbeing.xml
│ │ ├── framework
│ │ │ └── com.google.android.dialer.support.jar
│ │ ├── lib64
│ │ │ └── libjni_latinimegoogle.so
│ │ ├── overlay
│ │ │ ├── GmsOverlay.apk
│ │ │ ├── GmsSettingsOverlay.apk
│ │ │ ├── GmsSettingsProviderOverlay.apk
│ │ │ └── GmsSetupWizardOverlay.apk
│ │ └── priv-app
│ │ ├── AndroidAutoStub
│ │ │ └── AndroidAutoStub.apk
│ │ ├── GmsCore
│ │ │ └── GmsCore.apk
│ │ ├── GooglePartnerSetup
│ │ │ └── GooglePartnerSetup.apk
│ │ ├── GoogleRestore
│ │ │ └── GoogleRestore.apk
│ │ ├── Phonesky
│ │ │ └── Phonesky.apk
│ │ ├── Velvet
│ │ │ └── Velvet.apk
│ │ ├── VelvetTitan
│ │ │ └── VelvetTitan.apk
│ │ └── Wellbeing
│ │ └── Wellbeing.apk
│ └── system_ext
│ ├── etc
│ │ └── permissions
│ │ └── privapp-permissions-google-system-ext.xml
│ └── priv-app
│ ├── GoogleFeedback
│ │ └── GoogleFeedback.apk
│ ├── GoogleServicesFramework
│ │ └── GoogleServicesFramework.apk
│ └── SetupWizard
│ └── SetupWizard.apk
└── toybox3. 登出Google帳號#
在Android系統設定,登出Google帳號。
4. 進入Android ADB取得root#
LineageOS的ADB支援Root權限。在開發人員啟用ADB Root。
連到電腦,在電腦上進入ADB Root
adb root- 進入ADB Shell
adb shell5. 刪除addon.d目錄#
這個目錄是在OTA更新後保存GMS之用。
不過我測試的時候這個目錄是空的。
嘗試刪除以下檔案
rm -f /system/addon.d/*gapps*
rm -f /system/addon.d/*GApps*
rm -f /system/addon.d/*google*
rm -f /system/addon.d/*Google*
rm -f /system/addon.d/*mind*
rm -f /system/addon.d/*Mind*6. 刪除GMS相關的APK#
- 用這個指令找
pm list packages -f | grep -E 'gms|gsf|vending|phonesky|setupwizard'- 刪除APK
pm uninstall --user 0 com.google.android.gms
pm uninstall --user 0 com.android.vending
pm uninstall --user 0 com.google.android.gsf
pm uninstall --user 0 com.google.android.setupwizard
pm uninstall --user 0 com.google.android.partnersetup
pm uninstall --user 0 com.google.android.apps.restore
pm uninstall --user 0 com.google.android.googlequicksearchbox
pm uninstall --user 0 com.google.android.tts
pm uninstall --user 0 com.google.android.marvin.talkback
pm uninstall --user 0 com.google.android.apps.wellbeing
pm uninstall --user 0 com.google.android.syncadapters.contacts
pm uninstall --user 0 com.google.android.syncadapters.calendar- 對照MindTheGapps的檔案路徑,刪除以下GMS相關檔案
rm -rf /product/app/GoogleCalendarSyncAdapter
rm -rf /product/app/GoogleContactsSyncAdapter
rm -rf /product/app/MarkupGoogle_v2
rm -rf /product/app/PrebuiltExchange3Google
rm -rf /product/app/SpeechServicesByGoogle
rm -rf /product/app/talkback
rm -f /product/etc/default-permissions/default-permissions-google.xml
rm -f /product/etc/default-permissions/default-permissions-mtg.xml
rm -f /product/etc/init/gapps.rc
rm -f /product/etc/permissions/com.google.android.dialer.support.xml
rm -f /product/etc/permissions/privapp-permissions-google-product.xml
rm -f /product/etc/permissions/privapp-permissions-mtg.xml
rm -rf /product/etc/security/fsverity
rm -f /product/etc/sysconfig/d2d_cable_migration_feature.xml
rm -f /product/etc/sysconfig/google_build.xml
rm -f /product/etc/sysconfig/google-hiddenapi-package-allowlist.xml
rm -f /product/etc/sysconfig/google.xml
rm -f /product/etc/sysconfig/sysconfig_contextual_search.xml
rm -f /product/etc/sysconfig/wellbeing.xml
rm -f /product/framework/com.google.android.dialer.support.jar
rm -f /product/lib64/libjni_latinimegoogle.so
rm -f /product/overlay/GmsOverlay.apk
rm -f /product/overlay/GmsSettingsOverlay.apk
rm -f /product/overlay/GmsSettingsProviderOverlay.apk
rm -f /product/overlay/GmsSetupWizardOverlay.apk
rm -rf /product/priv-app/AndroidAutoStub
rm -rf /product/priv-app/GmsCore
rm -rf /product/priv-app/GooglePartnerSetup
rm -rf /product/priv-app/GoogleRestore
rm -rf /product/priv-app/Phonesky
rm -rf /product/priv-app/Velvet
rm -rf /product/priv-app/VelvetTitan
rm -rf /product/priv-app/Wellbeing
rm -f /system_ext/etc/permissions/privapp-permissions-google-system-ext.xml
rm -rf /system_ext/priv-app/GoogleFeedback
rm -rf /system_ext/priv-app/GoogleServicesFramework
rm -rf /system_ext/priv-app/SetupWizard7. 後續#
重開機。
刪除GMS,切換microG之後部分APP可能要重裝。
例如我遇過Line收不到訊息,要重裝APK才會觸發向microG註冊FCM。


