# How to Replace Google Apps with Fossify: Install, Configure and What Works Without Google Play

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-zamenit-prilozheniya-google-na-fossify-ustanovka-na_en.html

## TL;DR

- **Time to complete:** about 45 minutes on a phone that already allows app installation from F-Droid; add 15–20 minutes if you also need to enable Developer options and set up `adb`.
- **Difficulty:** Intermediate — you will change Android default apps (roles) and run a few `adb` commands once.
- **You will need:**
  - An Android phone with a working USB cable and a computer with Android Platform Tools (`adb`) installed.
  - F-Droid installed on the phone (F-Droid is a free, open-source app store that distributes APK builds without Google Play).
  - A Google account you can still log into from a browser, to export contacts (`.vcf`) and calendar (`.ics`).
  - Free local storage for the APK set and the export files.
  - The exact minimum Android version for each app: check it on the app's F-Droid page — do not guess.

## Requirements and setup
![Illustration: Requirements and setup](https://ai-release.org/guides/img/kak-zamenit-prilozheniya-google-na-fossify-ustanovka-na-en-1.jpg?v=1794213287)


- [ ] Android phone with Developer options enabled: **Settings → About phone → tap "Build number" 7 times**.
- [ ] USB debugging on: **Settings → System → Developer options → USB debugging**.
- [ ] `adb` on the computer. Check with `adb version` — any recent Platform Tools release works.
- [ ] F-Droid installed on the phone. If it is missing, install it from the official project site first; F-Droid must be allowed to install unknown apps.
- [ ] A backup of contacts and calendar: **Google Contacts → Fix & manage → Export to file**, **Google Calendar → Settings → Export**.
- [ ] The list of Google packages currently on the phone, saved to a file before you disable anything:

```bash
adb devices
adb shell pm list packages | grep -i google > google-packages-before.txt
```

`adb devices` must list your serial number followed by `device` — if it says `unauthorized`, unlock the phone and accept the "Allow USB debugging?" dialog.

**Why:** the package list is your rollback map. If you disable something and an app starts crashing, you re-enable exactly that package name instead of reinstalling the ROM.

**How to check:** `cat google-packages-before.txt` returns lines such as `package:com.google.android.apps.photos`. An empty file means the phone was not connected — fix the cable or the authorization before continuing.

## Step 1. Install the Fossify app set from F-Droid
![Illustration: Step 1. Install the Fossify app set from F-Droid](https://ai-release.org/guides/img/kak-zamenit-prilozheniya-google-na-fossify-ustanovka-na-en-2.jpg?v=1794213296)


**What to do:** open F-Droid, search for `Fossify`, and install the apps you want to replace. If the search returns nothing, open **F-Droid → Settings → Repositories** and add the Fossify repository using the URL published on the Fossify project site — copy it from the official page, never type it from memory.

Fossify apps are local-first by design: Gallery, File Manager, Notes, Clock and Music Player read files and media stored on the device, so they have nothing to talk to Google about. Contacts, Phone, Messages and Calendar hold Android **roles** — system-level assignments that tell Android which app handles calls, SMS, and so on.

**Example:** install the APKs manually over `adb` instead of tapping through the store:

```bash
adb install -r FossifyGallery.apk
adb install -r FossifyContacts.apk
adb install -r FossifyPhone.apk
adb install -r FossifyMessages.apk
adb install -r FossifyCalendar.apk
```

Expected output for each: `Success`. The `-r` flag means "replace an existing install, keep its data".

**Why:** installing through F-Droid gives you builds signed by the project and automatic update notifications. Manual `adb install` is the fallback when the phone has no store access at all — the same technique used for any private APK, see [How to Publish a Private App on Google Play and Install It on Android](https://ai-release.org/guides/poshagovoe-rukovodstvo-kak-opublikovat-chastnoe-prilozh.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).

**How to check:** list what actually landed on the device:

```bash
adb shell pm list packages | grep -i fossify
```

Expected output (order varies):

```
package:org.fossify.calendar
package:org.fossify.contacts
package:org.fossify.gallery
package:org.fossify.messages
package:org.fossify.phone
```

Package IDs follow the `org.fossify.<app>` pattern — confirm the exact string from this command before you use an ID in any later command.

| Google app | Fossify replacement | Typical package ID | What it does without Google |
|---|---|---|---|
| Google Photos | Fossify Gallery | `org.fossify.gallery` | Browses, edits and deletes local photos and videos |
| Google Contacts | Fossify Contacts | `org.fossify.contacts` | Reads contacts from the phone's local store; import from `.vcf` |
| Google Phone | Fossify Phone | `org.fossify.phone` | Places and answers calls, holds the DIALER role |
| Google Messages | Fossify Messages | `org.fossify.messages` | Sends and receives SMS/MMS, holds the SMS role |
| Google Calendar | Fossify Calendar | `org.fossify.calendar` | Local events; `.ics` import |
| Google Keep | Fossify Notes | `org.fossify.notes` | Plain local notes |
| Files by Google | Fossify File Manager | `org.fossify.filemanager` | Local file browsing, copy, rename |
| Google Clock | Fossify Clock | `org.fossify.clock` | Alarms, timers, they fire offline |

## Step 2. Assign roles and migrate contacts and calendar data

**What to do:** Android only lets one app be the default dialer and one be the default SMS app, so you must hand those roles over explicitly.

On the phone, the GUI path is **Settings → Apps → Default apps → Phone app / SMS app**. The equivalent commands:

```bash
adb shell cmd role add-role-holder android.app.role.DIALER org.fossify.phone
adb shell cmd role add-role-holder android.app.role.SMS org.fossify.messages
```

Then move the data:

1. Google Contacts (web) → **Export** → download `contacts.vcf` → push it to the phone with `adb push contacts.vcf /sdcard/Download/` → in Fossify Contacts open the menu and choose the import option.
2. Google Calendar (web) → **Settings → Export** → download the `.ics` → `adb push calendar.ics /sdcard/Download/` → import it in Fossify Calendar.
3. Photos and files stay where they are; Fossify Gallery and File Manager read the same `/sdcard/DCIM` and `/sdcard/Download` folders.

**Why:** a role is not a preference — until the SMS role is assigned, incoming messages are handled by the previous app, or by nothing at all if you already disabled it. Export/import works because `.vcf` and `.ics` are plain text formats that any contact or calendar app can read, with no account involved.

**Example:** disable the Google apps you have replaced, one at a time:

```bash
adb shell pm disable-user --user 0 com.google.android.apps.photos
adb shell pm disable-user --user 0 com.google.android.apps.messaging
```

Expected output: `Package com.google.android.apps.photos new state: disabled-user`. To undo, run the identical command with `pm enable` instead of `pm disable-user`.

**How to check:** print the disabled set and look for the packages you just turned off:

```bash
adb shell pm list packages -d | grep -i google
```

If a package you disabled is missing from the output, the command failed — read the message it returned before continuing. Do not disable packages with `google` in the name that you cannot identify; core framework packages can break the launcher.

## Step 3. Verify the setup works with no Google services
![Illustration: Step 3. Verify the setup works with no Google services](https://ai-release.org/guides/img/kak-zamenit-prilozheniya-google-na-fossify-ustanovka-na-en-3.jpg?v=1794213307)


**What to do:** run the phone in airplane mode for the whole check, so no Google service can silently fill in for a missing feature.

```bash
adb shell cmd role get-role-holders android.app.role.SMS
adb shell cmd role get-role-holders android.app.role.DIALER
```

**Why:** these commands report what Android itself thinks the default apps are — not what the settings screen claims. Airplane mode proves the app stores data locally instead of pulling it from an account.

**Example:** expected output is a single line per role, for example:

```
org.fossify.messages
org.fossify.phone
```

If the output lists a Google package or is empty, re-run the `add-role-holder` command from Step 2.

**How to check — final acceptance list:**

- [ ] Send yourself an SMS from another phone: it arrives in Fossify Messages with the app's own notification.
- [ ] Call your number: Fossify Phone rings and shows the caller.
- [ ] Take a photo with the stock camera, open Fossify Gallery: the photo is there.
- [ ] Create a note in Fossify Notes, reboot the phone, reopen it: the note survived.
- [ ] Set an alarm in Fossify Clock, kill the app from recents: the alarm still fires.
- [ ] Open Fossify Calendar: imported events are visible with airplane mode on.

**What still needs Google or an account:** anything that reads a Google account directly — account sync, Play Store purchases, Play Services push notifications, and apps built on Google's location or maps SDKs. Those apps either refuse to start or show a message such as `Google Play services not available`. Fossify apps do not replace Maps, YouTube or the Play Store itself; for those you need a different tool, and calendar/contact sync to a server needs a CalDAV/CardDAV client (check the Fossify documentation for the supported import and sync options).

## Troubleshooting

**Problem. Reinstall fails on an app you already had from another source**

- Error: `Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package org.fossify.contacts signatures do not match previously installed version; ignoring!]`
- Cause: the installed copy was signed with a different key (a different repository or a repackaged APK), so Android refuses to overwrite it.
- Solution: back up app data, then remove the old copy and install again:

```bash
adb uninstall org.fossify.contacts
adb install -r FossifyContacts.apk
```

**Problem. `adb install` is rejected the moment the phone screen is unlocked**

- Error: `adb: failed to install FossifyGallery.apk: Failure [INSTALL_FAILED_USER_RESTRICTED: Install canceled by user]`
- Cause: vendor ROMs (MIUI, EMUI, ColorOS and similar) block USB installs until you allow them, or the on-screen confirmation was dismissed.
- Solution: **Settings → Developer options → Install via USB** (enable it, and disable "Verify apps over USB" if present), keep the screen unlocked, then re-run `adb install -r FossifyGallery.apk`.

**Problem. APK installed from a file manager is refused**

- Error: `Blocked by Play Protect` — the dialog offers "Install anyway" only after you expand the details.
- Cause: Play Protect scans sideloaded APKs and blocks ones it does not recognise, even when the build is legitimate.
- Solution: tap **More details → Install anyway** for that one file. Do not switch scanning off globally; keep it on and only whitelist the APK you actually verified against the F-Droid listing.

## Summary and next steps

You now have a working local-first app set with the dialer and SMS roles assigned, contacts and calendar imported from export files, and Google packages disabled with a rollback list saved in `google-packages-before.txt`. From here, extend the same pattern offline — for example with [How to Run an AI Model Locally on Android: Apps and Setup](https://ai-release.org/guides/kak-zapustit-ii-model-lokalno-na-android-prilozheniya-i.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide) — and keep updates flowing through F-Droid instead of the Play Store.

## FAQ

**Does Fossify work without Google Play at all?**
Yes. Fossify apps are distributed as APKs through F-Droid, install without a Google account, and their local features (gallery, files, notes, clock, calls, SMS) run with no Play Services installed.

**Do I need root to remove Google apps?**
No. `pm disable-user --user 0 <package>` disables an app for the current user over `adb` without root. Root is only needed to delete system packages from the system partition, which is not required for this guide.

**Will I lose my Google contacts and calendar events?**
Not if you export first. Contacts export to `.vcf` and calendar to `.ics` from the web interface, and both files import into the Fossify apps; keep the exports until you have confirmed the data on the phone.

**How do I get updates without the Play Store?**
Through F-Droid: it checks its repositories and notifies you about new builds of the apps you installed from it, and you install them with the same signature so existing data stays in place.
