# redroid-android13 This repo is the minimal Android 13 redroid bundle that matches the optimized `5570` instance. It keeps only the parts that were actually used: - `redroid/redroid:13.0.0` - `MindTheGapps` - `libhoudini` - `Kitsune Mask / Magisk Delta` - `Pixel 7 Pro` device profile - the `post-fs-data` fix that keeps `Magisk Installed` and the settings page healthy ## Included files - `redroid.py` - `run_redroid.py` - `bootstrap_redroid.py` - `verify_offline_bundle.py` - `offline/README.md` - `offline/manifest.json` - `stuff/mindthegapps.py` - `stuff/houdini.py` - `stuff/houdini_hack.py` - `stuff/magisk.py` - `assets/redroid_extreme_post_fs_data.sh` - local `offline/downloads/` - local `offline/images/` ## Offline archive The repo tracks the offline bundle metadata under [offline](C:/Users/admin/Desktop/redroid-android13/offline). The large zip/apk/tar payloads are intentionally kept out of Git and should be stored locally under `offline/downloads/` and `offline/images/`. Use [offline/manifest.json](C:/Users/admin/Desktop/redroid-android13/offline/manifest.json) for checksums and source metadata, and [offline/README.md](C:/Users/admin/Desktop/redroid-android13/offline/README.md) for the expected local layout. Expected local files: - `offline/downloads/mindthegapps.zip` - `offline/downloads/libhoudini.zip` - `offline/downloads/libhoudini_hack.zip` - `offline/downloads/magisk.apk` - `offline/downloads/magisk.version` - `offline/images/redroid-redroid-13.0.0-latest.tar` `redroid.py` now tries to pull `redroid/redroid:13.0.0-latest` first. If that fails, it falls back to the local image cache, then to `offline/images/redroid-redroid-13.0.0-latest.tar`. ## Dependencies ```bash python -m pip install -r requirements.txt ``` ## Verify the offline bundle ```bash python verify_offline_bundle.py ``` ## Build the 5570 image ```bash python redroid.py -mtg -i -m ``` Expected image tag: ```bash redroid/redroid:13.0.0_mindthegapps_houdini_magisk ``` ## Launch the container ```bash python run_redroid.py \ --image redroid/redroid:13.0.0_mindthegapps_houdini_magisk \ --bridge libhoudini \ --device-profile pixel-7-pro \ --data-dir ~/data-redroid13 \ --port 5570 \ --replace ``` ## Apply the 5570 hardening ```bash python bootstrap_redroid.py \ --serial 127.0.0.1:5570 \ --device-profile pixel-7-pro \ --proxy-host auto \ --install-extreme-script ``` This post-boot step: - disables SetupWizard - marks the device provisioned - enables high accuracy location mode - allows `com.android.shell` to use mock location - applies the `Pixel 7 Pro / user / release-keys / locked / green` identity With `--install-extreme-script`, the validated script [assets/redroid_extreme_post_fs_data.sh](C:/Users/admin/Desktop/redroid-android13/assets/redroid_extreme_post_fs_data.sh) is copied to `/data/adb/post-fs-data.d/20-redroid-extreme.sh` so that: - `vendor/bin/su` stays visible to app namespaces after reboot - `Pixel 7 Pro` properties are re-applied on every boot ## Verified 5570 state The matching `5570` instance was already validated with: - `ro.product.model=Pixel 7 Pro` - `ro.build.type=user` - `ro.build.tags=release-keys` - `ro.boot.vbmeta.device_state=locked` - `ro.boot.verifiedbootstate=green` - app UID `su -V = 27001` - app UID `su -mm -c id = uid=0(root)` - `Kitsune` home page shows a normal `Installed` state - `Kitsune` settings page opens normally and `SuList / MagiskHide` is configurable ## Current scope This repo only reproduces the system environment for the optimized `5570` build. It does not yet include: - virtual camera - camera HAL - TikTok Live specific patches