-
-
Save lkraav/8729478217f5b76323f4a768301b3179 to your computer and use it in GitHub Desktop.
Sony 10 III - Dual SIM (arm64) | Sailfish OS 5.0.0.73 | Android 13 | MindTheGapps installation script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| set -e | |
| WORKDIR=/home/.appsupport_systemimg_patch | |
| TMPWORKDIR="$WORKDIR/tmp" | |
| SQUASHFS_ROOT="$TMPWORKDIR/squashfs-root" | |
| MOUNT_ROOT="$TMPWORKDIR/systemimg_mount" | |
| SYSTEM_IMG=/opt/appsupport/system.img | |
| ORIG_IMG_FILE=orig_img_path.txt | |
| MINDTHEGAPPS_PATTERN='MindTheGapps-13.0.0-arm64-*.zip' | |
| log() { | |
| printf '%s\n' "$1" > /dev/stderr | |
| } | |
| install_deps() { | |
| if ! rpm -q squashfs-tools > /dev/null; then | |
| log "squashfs-tools package not found. Installing..." | |
| pkcon -y install squashfs-tools | |
| fi | |
| if ! rpm -q rsync > /dev/null; then | |
| log "rsync package not found. Installing..." | |
| pkcon -y install rsync | |
| fi | |
| } | |
| extract_image() { | |
| mkdir "$MOUNT_ROOT" | |
| mount -o loop,ro "$SYSTEM_IMG" "$MOUNT_ROOT" | |
| if [ -f "$MOUNT_ROOT/$ORIG_IMG_FILE" ]; then | |
| orig_image="$(cat "$MOUNT_ROOT/$ORIG_IMG_FILE")" | |
| log "$SYSTEM_IMG already patched, using original from $orig_image" | |
| else | |
| img_md5="$(md5sum "$SYSTEM_IMG" | cut -d ' ' -f1)" | |
| orig_image="$WORKDIR/system.img.$img_md5" | |
| if [ -f "$orig_image" ]; then | |
| log "Backup already exists at $orig_image, skipping copy" | |
| else | |
| cp "$SYSTEM_IMG" "$orig_image" | |
| log "Copying original image $SYSTEM_IMG to $orig_image" | |
| fi | |
| fi | |
| umount "$MOUNT_ROOT" | |
| if [ ! -f "$orig_image" ]; then | |
| log "$orig_image not found" | |
| return 1 | |
| fi | |
| mount -o loop,ro "$orig_image" "$MOUNT_ROOT" | |
| if [ -f "$MOUNT_ROOT/$ORIG_IMG_FILE" ]; then | |
| umount "$MOUNT_ROOT" | |
| rmdir "$MOUNT_ROOT" | |
| log "$orig_image already patched, please restore original image to $SYSTEM_IMG" | |
| return 1 | |
| fi | |
| mkdir "$SQUASHFS_ROOT" | |
| rsync -aSHAX "$MOUNT_ROOT/" "$SQUASHFS_ROOT/" | |
| umount "$MOUNT_ROOT" | |
| rmdir "$MOUNT_ROOT" | |
| printf '%s' "$orig_image" > "$SQUASHFS_ROOT/$ORIG_IMG_FILE" | |
| } | |
| build_image() { | |
| cp "$SYSTEM_IMG" "$TMPWORKDIR/system.img.backup" | |
| mksquashfs "$SQUASHFS_ROOT" "$SYSTEM_IMG" -noappend -no-exports -no-duplicates -no-fragments | |
| rm "$TMPWORKDIR/system.img.backup" | |
| rm -r "$SQUASHFS_ROOT" | |
| } | |
| _find_mindthegapps() { | |
| downloads=/home/defaultuser/Downloads/ | |
| log "Searching for MindTheGapps zip at $downloads/$MINDTHEGAPPS_PATTERN" | |
| find "$downloads" -maxdepth 1 -name "$MINDTHEGAPPS_PATTERN" | sort | tail -n 1 | |
| } | |
| get_mindthegapps_zip() { | |
| mindthegapps_zip="$(_find_mindthegapps)" | |
| if [ -z "$mindthegapps_zip" ]; then | |
| log "MindTheGapps zip not found at /home/defaultuser/Downloads/" | |
| log "Please download a MindTheGapps zip from https://wiki.lineageos.org/gapps" | |
| return 1 | |
| else | |
| log "Found MindTheGapps zip $mindthegapps_zip" | |
| fi | |
| printf '%s' "$mindthegapps_zip" | |
| } | |
| install_mindthegapps() { | |
| log "Unzip MindTheGapps archive" | |
| unzip -o "$mindthegapps_zip" 'system/*' -d "$TMPWORKDIR/mindthegapps/" | |
| # Remove VelvetTitan (tangorpro-specific Google app) | |
| rm -rf "$TMPWORKDIR/mindthegapps/system/product/priv-app/VelvetTitan" | |
| # Remove addon.d scripts (not needed outside Android recovery) | |
| rm -rf "$TMPWORKDIR/mindthegapps/system/addon.d" | |
| # In the SFOS image /system/product is a symlink to /product (an absolute | |
| # path). rsync would follow/replace that symlink, placing files where | |
| # Android never scans. Install product files directly to /product/. | |
| rsync -a "$TMPWORKDIR"/mindthegapps/system/product/ "$SQUASHFS_ROOT/product/" | |
| rm -rf "$TMPWORKDIR/mindthegapps/system/product" | |
| rsync -a "$TMPWORKDIR"/mindthegapps/system/ "$SQUASHFS_ROOT/system/" | |
| rm -r "$TMPWORKDIR/mindthegapps/" | |
| } | |
| set_traps() { | |
| # shellcheck disable=SC2064 | |
| trap "$*" EXIT HUP INT QUIT PIPE TERM | |
| } | |
| # shellcheck disable=SC2329 | |
| cleanup() { | |
| if [ ! -f "$SYSTEM_IMG" ] && [ -f "$TMPWORKDIR/system.img.backup" ]; then | |
| mv "$TMPWORKDIR/system.img.backup" "$SYSTEM_IMG" || : | |
| fi | |
| umount "$MOUNT_ROOT" || : | |
| rm -r "$TMPWORKDIR" || : | |
| set_traps - | |
| exit 1 | |
| } | |
| REQUIRED_VERSION_ID=5.0.0.73 | |
| # shellcheck source=/dev/null | |
| . /etc/os-release | |
| if [ "$VERSION_ID" != "$REQUIRED_VERSION_ID" ]; then | |
| log "Expected Sailfish OS VERSION_ID=$REQUIRED_VERSION_ID but found $VERSION_ID" | |
| exit 1 | |
| fi | |
| mindthegapps_zip="$(get_mindthegapps_zip)" | |
| set_traps cleanup | |
| systemctl stop appsupport@defaultuser | |
| mkdir -p "$WORKDIR" | |
| mkdir -p "$TMPWORKDIR" | |
| install_deps | |
| log "extract image" | |
| extract_image | |
| log "image was extracted" | |
| log "install MindTheGapps" | |
| install_mindthegapps | |
| log "MindTheGapps were installed" | |
| log "build image" | |
| build_image | |
| log "image was built" | |
| rmdir "$TMPWORKDIR" | |
| set_traps - | |
| exit 0 |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
🗒️ Android 11 OpenGApps injected file list