[Xiaomi Mi Play Questions & Answers] gokur20:
UPDATED 03 12 21 : I build a TWRP recovery for Xiaomi Mi play.

https://xdaforums.com/t/unofficial-twrp-recovery-3-5-2_9-0.4344611/

You can flash Gapps with It.

OUTDATED: No good news about flashing TWRP but I reached to install Lineageos 16 GSI with GAPPS without using any Recovery (lineage-16.0-20191017-UNOFFICIAL-treble_arm64_avN.img).

Our Smartphone seems to be compatible with GSI Aonly VNDKLITE. (I could not find any other like roms).

Steps with usb cable:

1- Reboot in fastboot mode

2- erase system, cache and userdata partition

fastboot erase system
fastboot erase cache
fastboot erase userdata

3- flash lineage-16.0-20191017-UNOFFICIAL-treble_arm64_avN.img in system, original cache.img, original userdata.img and original vbmeta.img disabling encryption and verity.

fastboot flash system lineage-16.0-20191017-UNOFFICIAL-treble_arm64_avN.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img

4 - reboot

fastboot reboot

5 - To install the GAPPS without TWRP, we have to download gapps (Android 9) and do some work on the package to prepare to directly copy via adb the Core Apks and the permission in the right folder of the system partition. before we have to enable developer mode and in Developer option the root access over adb. Essentially you have to unzip the gapps package, unzip the packages inside the Core folder (I used lunzip with ubuntu) extract the apks and the xml files (permission), remount the system partition in rw , copy them in the right folders (you can take a look to gapps-remove.txt to have an idea, /system/priv-app/ /system/app/ /system/etc/permissions/, /system/etc/default-permissions/, /system/etc/default-permissions/) give the right permissions to apks (644) and reboot the system. Here is my script, in my example I have already divided the files in different folders on the PC.

#!/bin/bash
echo "Assicurati di aver abilitato ADB root in Opzioni Sviluppatore"
echo "Lo Script copierà gli APKs in /system/priv-app ed imposterà i permessi a 644 \n"
read -p "Premi un tasto per continuare.."
sudo adb root
sudo adb remount
sudo adb push ./priv-app/*.apk /system/priv-app/
sudo adb push ./app/*.apk /system/app/
sudo adb push ./xml/etc_permissions/*.xml /system/etc/permissions/
sudo adb shell mkdir /system/etc/default-permissions/
sudo adb push ./xml/etc_default-permissions/*.xml /system/etc/default-permissions/
sudo adb push ./xml/etc_sysconfig/*.xml /system/etc/sysconfig/
sudo adb shell chmod 644 /system/priv-app/AndroidMigratePrebuilt.apk
sudo adb shell chmod 644 /system/priv-app/CarrierSetup.apk
sudo adb shell chmod 644 /system/priv-app/ConfigUpdater.apk
sudo adb shell chmod 644 /system/priv-app/GoogleBackupTransport.apk
sudo adb shell chmod 644 /system/app/GoogleContactsSyncAdapter.apk
sudo adb shell chmod 644 /system/priv-app/GoogleExtServices.apk
sudo adb shell chmod 644 /system/priv-app/GoogleExtShared.apk
sudo adb shell chmod 644 /system/priv-app/GoogleFeedback.apk
sudo adb shell chmod 644 /system/priv-app/GoogleOneTimeInitializer.apk
sudo adb shell chmod 644 /system/priv-app/GooglePartnerSetup.apk
sudo adb shell chmod 644 /system/priv-app/GoogleRestore.apk
sudo adb shell chmod 644 /system/priv-app/GoogleServicesFramework.apk
sudo adb shell chmod 644 /system/priv-app/Phonesky.apk
sudo adb shell chmod 644 /system/priv-app/PrebuiltGmsCorePi.apk
sudo adb shell chmod 644 /system/priv-app/SetupWizard.apk
echo "Finito, ora il telefono verrà riavviato, esamina il file di log per eventuali errori /n"
read -p "Premi un tasto per continuare.."
sudo adb reboot