Google play services on xperia 10 III Sailfish 4.4.0.64

This has been worked for me on my Xperia 10 III with SFOS 4.5…
I replaced the achitecture stuff simply by aarch64, arm64 and some more.

Enjoy.
installgapps_aarch64.sh

set -e

WORKDIR=/home/.aliendalvik_systemimg_patch
TMPWORKDIR="$WORKDIR/tmp"
SQUASHFS_ROOT="$TMPWORKDIR/squashfs-root"
MOUNT_ROOT="$TMPWORKDIR/systemimg_mount"
SYSTEM_IMG=/opt/alien/system.img
ORIG_IMG_FILE=orig_img_path.txt

FEDORA22_REPO=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/30/Everything/aarch64/os/Packages

OPENGAPPS_ARCH=arm64
OPENGAPPS_API=11.0
OPENGAPPS_VARIANT=pico

GOOGLE_APPS_REMOVE='carriersetup-all extservicesgoogle-arm64 extsharedgoogle-all googlebackuptransport-all googlecontactssync-all googlefeedback-all googlepartnersetup-all setupwizarddefault-arm64 setupwizardtablet-arm64 vending-common'

log() {
	printf '%s\n' "$1" > /dev/stderr
}

install_fedora22_rpm() {
	pkgname="$1"
	pkgversion="$2"

	if ! rpm -q "$pkgname" > /dev/null; then
		pkgfile="$pkgname-$pkgversion.fc30.aarch64.rpm"
		firstletter="$(printf '%s' "$pkgfile" | cut -c 1)"
		mkdir "$TMPWORKDIR/rpms"
		curl "$FEDORA22_REPO/$firstletter/$pkgfile" > "$TMPWORKDIR/rpms/$pkgfile"
		pkcon -y install-local "$TMPWORKDIR/rpms/$pkgfile"
		rm "$TMPWORKDIR/rpms/$pkgfile"
		rmdir "$TMPWORKDIR/rpms"
	fi
}

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

	if ! rpm -q lzip > /dev/null; then
		log "lzip package not found. Installing..."
		install_fedora22_rpm lzip 1.20-4
	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
		orig_image="$WORKDIR/system.img.orig.$(date +%Y%m%dT%H%M%S)"
		cp "$SYSTEM_IMG" "$orig_image"
		log "Copying original image $SYSTEM_IMG to $orig_image"
	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 needs to be run twice to copy all xattrs. Probably a bug in rsync.
	rsync -aSHAX "$MOUNT_ROOT/" "$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_opengapps() {
	downloads=/home/defaultuser/Downloads/
	name_pattern="open_gapps-$OPENGAPPS_ARCH-$OPENGAPPS_API-$OPENGAPPS_VARIANT-*.zip"
	if [ "$1" != quiet ]; then
		log "Searching for Open GApps zip at $downloads/$name_pattern"
	fi
	find "$downloads" -maxdepth 1 -name "$name_pattern" | sort | tail -n 1
}

get_opengapps_zip() {
	opengapps_zip="$(_find_opengapps)"
	if [ -z "$opengapps_zip" ]; then
		# Show the Open GApps download page to the user instead of automating
		# the download of the latest version.
		# The no-mirror policy
		log "Opening Open GApps download page"
		runuser -l defaultuser – /usr/bin/xdg-open "The Open GApps Project"
		log "Waiting for download to start"
		while [ -z "$opengapps_zip" ]; do
			sleep 1
			opengapps_zip="$(_find_opengapps quiet)"
		done
		log "Detected new download at $opengapps_zip"
		log "Waiting for download to finish"
		while [ -f "$opengapps_zip" ] && [ -f "$opengapps_zip.part" ]; do
			sleep 1
		done
		sleep 1
		if [ ! -f "$opengapps_zip" ]; then
			log "Download failed"
			return 1
		fi
	else
		log "Found Open GApps zip $opengapps_zip"
	fi
	printf '%s' "$opengapps_zip"
}

install_opengapps() {
	log "Unzip open gapps archive"
	unzip "$(get_opengapps_zip)" -d "$TMPWORKDIR/opengapps/"

	log "Remove some google apps"
	for p in $GOOGLE_APPS_REMOVE; do
		log "Removing $p"
		rm "$TMPWORKDIR/opengapps/Core/$p.tar.lz"
	done

	if [ -f "$TMPWORKDIR/opengapps/Core/extservicesgoogle-all.tar.lz" ]; then
		rm -r "$SQUASHFS_ROOT/system/priv-app/ExtServices"
	fi

	if [ -f "$TMPWORKDIR/opengapps/Core/extsharedgoogle-all.tar.lz" ]; then
		rm -r "$SQUASHFS_ROOT/system/app/ExtShared"
	fi

	mkdir "$TMPWORKDIR/opengapps_unarchived"
	for f in "$TMPWORKDIR"/opengapps/Core/*.tar.lz; do
		lzip -c -d "$f" | tar -x -C "$TMPWORKDIR/opengapps_unarchived"
	done

	rm -r "$TMPWORKDIR/opengapps/"
	
	ls -al "$TMPWORKDIR"/opengapps_unarchived
	ls -al "$SQUASHFS_ROOT/system/"
	ls -al "$SQUASHFS_ROOT/system/product"
	cp -r "$TMPWORKDIR"/opengapps_unarchived/*/*/* "$SQUASHFS_ROOT/system/"
	rm -r "$TMPWORKDIR/opengapps_unarchived/"
}

set_traps() {
	# shellcheck disable=SC2064
	trap "$*" EXIT HUP INT QUIT PIPE TERM
}

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
}

set_traps cleanup
systemctl stop aliendalvik

mkdir -p "$WORKDIR"
mkdir -p "$TMPWORKDIR"

install_deps
log "extract image"
extract_image
log "image was extracted"
log "install open gapps"
install_opengapps
log "open gapps were installed"
log "build image"
build_image
log "image was built"

rmdir "$TMPWORKDIR"

set_traps -
exit 0
4 Likes