Skip to content

Instantly share code, notes, and snippets.

@pagkly
Last active March 16, 2022 07:06
Show Gist options
  • Save pagkly/06b8f5e6397db6a391cbf16ac1cb5456 to your computer and use it in GitHub Desktop.
Save pagkly/06b8f5e6397db6a391cbf16ac1cb5456 to your computer and use it in GitHub Desktop.
#!/bin/bash
# This is bash script version for Waydroid 11 + Magisk + Gapps
# dependencies: 7z, unzip, lzip
# VARS
WD_ARCH="x64"
WD_DIR=""
TEMP_DIR=~/testingwsa
MAGISK_VER=24101
GAPPS_VER="pico"
# FUNCTIONS
function rm_waydroid(){
# Uninstall WayDroid
waydroid session stop
sudo waydroid container stop
sudo systemctl stop waydroid-container.service
sudo umount -l /var/lib/waydroid/{data,rootfs}
sudo umount /usr/share/waydroid-extra/images/{system,vendor}.img
sudo rm -rf /var/lib/waydroid/ ~/.local/share/{waydroid,applications/*aydroid*}
sudo rm -rf /var/lib/waydroid /home/.waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid
sudo rm -rf /usr/share/waydroid-extra/images/*
ls /usr/share/waydroid-extra/images
cd ~/testingwsa
#yay -Rns waydroid-image-dev
#yay -Rns waydroid
#yay -S waydroid-image-dev
}
function dl_wsa(){
sleep 3
cd $temp_dir
rm -rf x64
python dl_wsa.py
rm -rf {magisk.zip,magisk,magiskpolicy}
#cp magisk_${magisk_ver}.apk magisk_${magisk_ver}.zip
mkdir magisk
cp -rf kokoro/magisk/* magisk/
cp -rf kokoro/magiskpolicy magiskpolicy
#cp bootctl jar
##cp magisk_${magisk_ver}.apk magisk.zip
##python dl_magisk.py
}
function dl_gapps(){
sleep 1
sudo rm -rf /home/user/.cache/waydroid_script
#sudo python dl_gapps.py
#rm -rf {gapps.zip,gapps}
python dl_ogaps.py
}
function unzip_gapps(){
echo "Extract GApps and expand images"
sleep 1
mkdir gapps
unzip -p gapps.zip {Core,GApps}/'*.lz' | tar --lzip -C gapps -xvf - -i --strip-components=2 --exclude='setupwizardtablet-x86_64' --exclude='packageinstallergoogle-all' --exclude='speech-common' --exclude='markup-lib-arm' --exclude='markup-lib-arm64' --exclude='markup-all' --exclude='setupwizarddefault-x86_64' --exclude='pixellauncher-all' --exclude='pixellauncher-common'
}
function rep_img(){
rm -rf $WD_ARCH/{system,vendor}.img
ls $WD_ARCH/{system,vendor}.img
#cp /run/media/user/SED2/{system,vendor}.img x64/
#wget -q https://sourceforge.net/projects/blissos-dev/files/waydroid/lineage/lineage-18.1/Lineage-OS-18.1-waydroid_x86_64-202111291420-foss-sd-hd-ex_ax86-vaapi_gles-aep.zip/download -O los.zip
7z x los.zip -o$WD_ARCH/
ls $WD_ARCH/{system,vendor}.img
# cp /usr/share/waydroid-extra/images/system.img $WD_ARCH/system.img
# cp /usr/share/waydroid-extra/images/vendor.img $WD_ARCH/vendor.img
# Waydroid image Dev location from AUR
#cp /home/user/.cache/yay/waydroid-image-dev/system.img $WD_ARCH/system.img
#cp /home/user/.cache/yay/waydroid-image-dev/vendor.img $WD_ARCH/vendor.img
#rm -rf $WD_ARCH/system.img
#rm -rf $WD_ARCH/vendor.img
#cp /var/lib/waydroid/images/system.img $WD_ARCH/system.img
#cp /var/lib/waydroid/images/vendor.img $WD_ARCH/vendor.img
}
function resmount_img(){
sleep 1
ls $WD_ARCH/{system,vendor}.img
cd $temp_dir
e2fsck -yf $WD_ARCH/system.img
resize2fs $WD_ARCH/system.img $(( $(du -sB512 gapps | cut -f1) + $(du -sB512 $WD_ARCH/system.img | cut -f1) ))s
e2fsck -yf $WD_ARCH/product.img
resize2fs $WD_ARCH/product.img 1024M
e2fsck -yf $WD_ARCH/system_ext.img
resize2fs $WD_ARCH/system_ext.img 108M
echo "Expand vendor"
e2fsck -yf $WD_ARCH/vendor.img
resize2fs $WD_ARCH/vendor.img 512M
echo "Mount Images"
sudo mkdir system
sudo mkdir userdata
sudo mount -o loop $WD_ARCH/system.img system
sudo mount -o loop $WD_ARCH/vendor.img system/vendor
#sudo rm -rf system/product
#sudo ln -sf ~/testingwsa/system/system/product system/product
sudo mv system/product system/product_ln
sudo mkdir system/product
sudo mount --bind ~/testingwsa/system/system/product ~/testingwsa/system/product
ls system/product
#sudo rm -rf system/system_ext
#sudo ln -sf ~/testingwsa/system/system/system_ext system/system_ext
sudo mv system/system_ext system/system_ext_ln
sudo mkdir system/system_ext
sudo mount --bind ~/testingwsa/system/system/system_ext ~/testingwsa/system/system_ext
ls system/system_ext
#sudo mount -o loop $WD_ARCH/product.img system/product
#sudo mount -o loop $WD_ARCH/system_ext.img system/system_ext
qemu-img convert -O raw $WD_ARCH/userdata.vhdx userdata.img
sudo mount -o loop userdata.img userdata
}
function rm_foss(){
sleep 1
cd $temp_dir
echo "Remove LOS FOSS Apps"
sudo rm -rf system/system/app/com.google.android.gsf
sudo rm -rf system/system/app/com.aurora.adroid
sudo rm -rf system/system/app/com.aurora.store
sudo rm -rf system/system/app/com.etesync.syncadapter
sudo rm -rf system/system/app/is.xyz.mpv
sudo rm -rf system/system/app/me.jfenn.alarmio
sudo rm -rf system/system/app/org.microg.gms.droidguard
sudo rm -rf system/system/app/org.microg.nlp.backend.ichnaea
sudo rm -rf system/system/app/org.microg.nlp.backend.nominatim
sudo rm -rf system/system/app/org.schabi.newpipe
sudo rm -rf system/system/app/ws.xsoh.etar
sudo rm -rf system/system/priv-app/AuroraServices_v1.1.1
sudo rm -rf system/system/priv-app/com.google.android.gms
sudo rm -rf system/system/priv-app/com.android.vending
sudo rm -rf system/system/product/app/Etar
sudo rm -rf system/system/product/priv-app/Contacts
sudo rm -rf system/system/product/app/ExactCalculator
sudo rm -rf system/system/product/priv-app/Eleven
sudo rm -rf system/system/app/com.simplemobiletools.gallery.pro
sudo rm -rf system/system/app/NotePad
sudo rm -rf system/system/app/org.bromite.bromite
sudo rm -rf system/system/app/com.google.android.webview
sudo rm -rf system/system/app/com.android.webview
echo "Move built-in superuser/koush"
sudo mv system/system/xbin/su system/system/xbin/suold
sudo cp magisk/magisk64 system/system/xbin/su
sudo ls system/system/xbin
#echo "Pixel Boot Animation"
#sudo cp /run/media/user/SED2/AY/CustomROM/3ab/bootanimation.zip system/system/media/bootanimation.zip
#adb push /run/media/user/SED2/AY/CustomROM/3ab/bootanimation.zip /sdcard/bootanimation.zip
#cp /sdcard/bootanimation.zip /system/product/media/bootanimation.zip
#cp /sdcard/bootanimation.zip /system/product/media/bootanimation-dark.zip
#sudo rm -rf system/system/product/bootanimation.zip
}
function enable_adb() {
# enable adb debugging:
#echo "mtp,adb" | sudo tee -a system/data/property/persist.sys.usb.config
echo "persist.service.adb.enable=1
persist.service.debuggable=1
persist.sys.usb.config=mtp,adb" | sudo tee -a system/system/build.prop
}
function install_magisk(){
sleep 1
echo "Integrate Magisk"
sudo mkdir system/system/etc/magisk
sudo chcon --reference system/init.environ.rc system/system/etc/magisk
sudo chown root:root system/system/etc/magisk
sudo chmod 0700 system/system/etc/magisk
sudo cp magisk/* system/system/etc/magisk
sudo mkdir -p userdata/adb/magisk
sudo chmod -R 700 userdata/adb
sudo cp magisk/* userdata/adb/magisk/
sudo find userdata/adb/magisk -type f -exec chmod 0755 {} \;
sudo cp magisk.zip userdata/adb/magisk/magisk.apk
sudo tee system/system/etc/magisk/loadpolicy.sh <<EOF
#!/system/bin/sh
restorecon -R /data/adb/magisk
for module in \$(ls /data/adb/modules); do
if ! [ -f "/data/adb/modules/\$module/disable" ] && [ -f "/data/adb/modules/\$module/sepolicy.rule" ]; then
/dev/magisk/magiskpolicy --live --apply "/data/adb/modules/\$module/sepolicy.rule"
fi
done
EOF
sudo find system/system/etc/magisk -type f -exec chmod 0755 {} \;
sudo find system/system/etc/magisk -type f -exec chown root:root {} \;
sudo find system/system/etc/magisk -type f -exec chcon --reference system/system/product {} \;
chmod +x ./magiskpolicy
echo '/dev/magisk(/.*)? u:object_r:magisk_file:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
echo '/data/adb/magisk(/.*)? u:object_r:magisk_file:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
#sudo ./magiskpolicy --load system/vendor/etc/selinux/precompiled_sepolicy --save system/vendor/etc/selinux/precompiled_sepolicy --magisk "allow * magisk_file lnk_file *"
#/dev/magisk/magiskpolicy --live --load /vendor/etc/selinux/precompiled_sepolicy --save /vendor/etc/selinux/precompiled_sepolicy --magisk "allow * magisk_file lnk_file *"
sudo tee -a system/system/etc/init/hw/init.rc <<EOF
on post-fs-data
start logd
start adbd
mkdir /dev/magisk
mkdir /dev/block
mount tmpfs tmpfs /dev/magisk mode=0755
copy /system/etc/magisk/magisk64 /dev/magisk/magisk64
chmod 0755 /dev/magisk/magisk64
symlink /dev/magisk/magisk64 /dev/magisk/magisk
symlink /dev/magisk/magisk64 /dev/magisk/su
symlink /dev/magisk/magisk64 /dev/magisk/resetprop
copy /system/etc/magisk/magisk32 /dev/magisk/magisk32
chmod 0755 /dev/magisk/magisk32
copy /system/etc/magisk/magiskinit /dev/magisk/magiskinit
chmod 0755 /dev/magisk/magiskinit
symlink /dev/magisk/magiskinit /dev/magisk/magiskpolicy
mkdir /dev/magisk/.magisk 700
mkdir /dev/magisk/.magisk/mirror 700
mkdir /dev/magisk/.magisk/block 700
rm /dev/.magisk_unblock
start IhhslLhHYfse
start FAhW7H9G5sf
umount /dev/magisk/.magisk/mirror/data
rm /dev/magisk/.magisk/mirror/data
symlink /data /dev/magisk/.magisk/mirror/data
symlink /dev/magisk/.magisk/mirror/data/adb/modules /dev/magisk/.magisk/mirror/sepolicy.rules
#mount none /dev/magisk/.magisk/zygisk/app_process32 /system/bin/app_process32 bind rec
#mount none /dev/magisk/.magisk/zygisk/app_process64 /system/bin/app_process64 bind rec
wait /dev/.magisk_unblock 40
rm /dev/.magisk_unblock
mount devpts devpts /dev/pts noexec nosuid gid=5 mode=620
#mount devpts devpts /dev/magisk/.magisk/pts noexec nosuid gid=5 mode=620
symlink /dev/pts /dev/magisk/.magisk/pts
#start HLiFsR1HtIXVN6
mknod /dev/tty c 5 0
chmod 0666 /dev/tty
service IhhslLhHYfse /system/bin/sh /system/etc/magisk/loadpolicy.sh
user root
seclabel u:r:magisk:s0
oneshot
service FAhW7H9G5sf /dev/magisk/magisk --post-fs-data
user root
seclabel u:r:magisk:s0
oneshot
service HLiFsR1HtIXVN6 /dev/magisk/magisk --service
class late_start
user root
seclabel u:r:magisk:s0
oneshot
on property:sys.boot_completed=1
start YqCTLTppv3ML
service YqCTLTppv3ML /dev/magisk/magisk --boot-complete
user root
seclabel u:r:magisk:s0
oneshot
EOF
# ORIGINAL WSA ENDS
# DEBUG
#sudo nano system/system/etc/init/hw/init.zygote32.rc
#sudo nano system/system/etc/init/hw/init.zygote64_32.rc
#service zygote /system/bin/strace -f -tt -o /cache/debug/boot.strace /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server
echo '/system/bin/strace u:object_r:zygote_socket:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
}
function strace_zygote() {
# bootloop in Xiaomi Redmi Note 7 (lavender)
# Strace Zygote & App Process
sudo sed -i -E "s|service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server|service zygote /system/bin/strace -o /cache/zygote_ap.strace /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server|g" system/system/etc/init/hw/init.zygote32.rc
#critical window=${zygote.critical_window.minute:-off} target=zygote-fatal
sudo sed -i -E "s|service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote|service zygote /system/bin/strace -o /cache/zygote_ap64.strace /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote|g" system/system/etc/init/hw/init.zygote64_32.rc
#critical window=${zygote.critical_window.minute:-off} target=zygote-fatal
sudo sed -i -E "s|service zygote_secondary /system/bin/app_process32 -Xzygote /system/bin --zygote --socket-name=zygote_secondary --enable-lazy-preload|service zygote_secondary /system/bin/strace -o /cache/zygote_ap32.strace /system/bin/app_process32 -Xzygote /system/bin --zygote --socket-name=zygote_secondary --enable-lazy-preload|g" system/system/etc/init/hw/init.zygote64_32.rc
#system/sepolicy/private/file_contexts
#system/vendor/etc/selinux/precompiled_sepolicy
}
function install_gapps() {
# echo "Add extra packages"
#GITHUB_SERVER_URL="https://github.com"
#GITHUB_REPOSITORY="pagkly/MagiskOnWSA"
#GITHUB_REF="refs/heads/feature-branch-1"
#GITHUB_SERVER_URL/$GITHUB_REPOSITORY/archive/$GITHUB_REF.tar.gz
#wget -qO- "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/archive/$GITHUB_REF.tar.gz" | sudo tar --wildcards -zxvf- --strip-component=2 '*/$WD_ARCH/system/*'
#### CONTINUE
sudo cp ~/Documents/precompiled_sepolicy system/vendor/etc/selinux/precompiled_sepolicy
sudo find system/system/priv-app -type d -exec chmod 0755 {} \;
sudo find system/system/priv-app -type f -exec chmod 0644 {} \;
sudo find system/system/priv-app -exec chcon --reference=system/system/priv-app {} \;
# echo "Integrate GApps"
#wget -qO- "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/archive/$GITHUB_REF.tar.gz" | sudo tar --wildcards -zxvf- --strip-component=2 '*/$WD_ARCH/gapps/*'
#sudo tar --wildcards -zxvf- --strip-component=2 '*/$WD_ARCH/gapps/*'
shopt -s extglob
sudo cp -vrf gapps/!(product) system/system
# Fix
#change system/product to system/system/product because in LOS its that directory
sudo cp -vrf gapps/product/* system/system/product/
sudo find system/system/{app,etc,framework,priv-app} -exec chown root:root {} \;
sudo find system/system/product/{app,etc,overlay,priv-app} -exec chown root:root {} \;
sudo find system/system/{app,etc,framework,priv-app} -type d -exec chmod 0755 {} \;
sudo find system/system/product/{app,etc,overlay,priv-app} -type d -exec chmod 0755 {} \;
sudo find system/system/{app,framework,priv-app} -type f -exec chmod 0644 {} \;
ls gapps/etc/ | xargs -n 1 -I dir sudo find system/system/etc/dir -type f -exec chmod 0644 {} \;
sudo find system/system/product/{app,etc,overlay,priv-app} -type f -exec chmod 0644 {} \;
sudo find system/system/{app,framework,priv-app} -type d -exec chcon --reference=system/system/app {} \;
sudo find system/system/product/{app,etc,overlay,priv-app} -type d -exec chcon --reference=system/system/product/app {} \;
ls gapps/etc/ | xargs -n 1 -I dir sudo find system/system/etc/dir -type d -exec chcon --reference=system/system/etc/permissions {} \;
sudo find system/system/{app,framework,priv-app} -type f -exec chcon --reference=system/system/framework/ext.jar {} \;
ls gapps/etc/ | xargs -n 1 -I dir sudo find system/system/etc/dir -type f -exec chcon --reference=system/system/etc/permissions {} \;
sudo find system/system/product/{app,etc,overlay,priv-app} -type f -exec chcon --reference=system/system/product/etc/permissions/privapp-permissions-venezia.xml {} \;
#kokoro
#sudo chmod +x kokoro/magiskpolicy
#sudo kokoro/magiskpolicy --load system/vendor/etc/selinux/precompiled_sepolicy --save system/vendor/etc/selinux/precompiled_sepolicy "allow gmscore_app gmscore_app vsock_socket { create connect write read }" "allow gmscore_app device_config_runtime_native_boot_prop file read" "allow gmscore_app system_server_tmpfs dir search" "allow gmscore_app system_server_tmpfs file open"
#WSA
#chmod +x ./magiskpolicy
#sudo ./magiskpolicy --load system/vendor/etc/selinux/precompiled_sepolicy --save system/vendor/etc/selinux/precompiled_sepolicy "allow gmscore_app gmscore_app vsock_socket { create connect write read }" "allow gmscore_app device_config_runtime_native_boot_prop file read" "allow gmscore_app system_server_tmpfs dir search" "allow gmscore_app system_server_tmpfs file open"
}
function unmount_img() {
# uncomment to inject the rest of Magisk files
#sudo cp magisk_all/assets/bootctl system/system/etc/magisk/
#sudo cp magisk_all/assets/main.jar system/system/etc/magisk/
#cp magisk_all/assets/module_installer.sh system/system/etc/magisk/
#sudo cp magisk_all/assets/uninstaller.sh system/system/etc/magisk/
#sudo ls system/system/etc/magisk/
echo "Fixing .prop files"
sudo python fixprop.py
echo "Unmount vendor"
sudo umount system/vendor
echo "Unmount product"
sudo umount -l system/product
sudo rm -rf system/product
sudo mv system/product_ln system/product
echo "Unmount system_ext"
sudo umount -l system/system_ext
sudo rm -rf system/system_ext
sudo mv system/system_ext_ln system/system_ext
echo "Unmount system"
#sudo umount system/product
#sudo umount system/system_ext
sudo umount system
sudo umount userdata
#qemu-img convert -o subformat=dynamic -f raw -O vhdx userdata.img $WD_ARCH/userdata.vhdx
echo "Shrink images"
arch="x64"
e2fsck -yf $WD_ARCH/system.img
resize2fs -M $WD_ARCH/system.img
e2fsck -yf $WD_ARCH/vendor.img
resize2fs -M $WD_ARCH/vendor.img
e2fsck -yf $WD_ARCH/product.img
resize2fs -M $WD_ARCH/product.img
e2fsck -yf $WD_ARCH/system_ext.img
resize2fs -M $WD_ARCH/system_ext.img
}
function init_img(){
# Try
sudo rm -rf /usr/share/waydroid-extra/images/system.img
sudo rm -rf /usr/share/waydroid-extra/images/vendor.img
sudo cp x64/system.img /usr/share/waydroid-extra/images/system.img
sudo cp x64/vendor.img /usr/share/waydroid-extra/images/vendor.img
ls /usr/share/waydroid-extra/images
#sudo rm -rf /var/lib/waydroid/images/system.img
#sudo rm -rf /var/lib/waydroid/images/vendor.img
#cd ~/testingwsa
#sudo cp x64/system.img /var/lib/waydroid/images/system.img
#sudo cp x64/vendor.img /var/lib/waydroid/images/vendor.img
"""
waydroid session stop
sudo waydroid container stop
sudo systemctl stop waydroid-container.service
sudo umount -l /var/lib/waydroid/{data,rootfs}
sudo umount /usr/share/waydroid-extra/images/{system,vendor}.img
sudo rm -rf /var/lib/waydroid/ ~/.local/share/{waydroid,applications/*aydroid*}
sudo rm -rf /var/lib/waydroid /home/.waydroid ~/waydroid ~/.share/waydroid ~/.local/share/applications/*aydroid* ~/.local/share/waydroid
sudo rm -rf /usr/share/waydroid-extra/images/*
ls /usr/share/waydroid-extra/images
cd ~/testingwsa
"""
#sudo cp -rf ~/Downloads/WSA-with-magisk-GApps-pico_1.8.32837.0_x64_Release-Nightly/* /usr/share/waydroid-extra/images/
sudo waydroid init -f
#sudo python dl_gapps.py
#lxc-attach -P /var/lib/waydroid/lxc/ -n waydroid --clear-env
#echo "security.privileged = true" | sudo tee -a /var/lib/waydroid/lxc/waydroid/config
sed -i -E "s/cgroup:ro/cgroup:rw/g" /var/lib/waydroid/lxc/waydroid/config
echo "lxc.mount.entry = /sys/fs/selinux sys/fs/selinux none bind,optional,create=dir,ro" | tee -a /var/lib/waydroid/lxc/waydroid/config_nodes
echo "lxc.mount.entry = /sys/fs/selinux/context sys/fs/selinux/context none bind,optional,rw" | tee -a /var/lib/waydroid/lxc/waydroid/config_nodes
#lxc.mount.entry = devpts /dev/pts devpts defaults,mode=644,ptmxmode=666 0 0
"""
# gbinder for A11
sudo ls /usr/share/waydroid-extra/images
sudo sed -i 's/aidl2/aidl3/' /etc/gbinder.d/anbox.conf
sudo sed -i '/ApiLevel/s/29/30/' /etc/gbinder.conf
echo "[General]" | sudo tee -a /etc/gbinder.d/anbox.conf
echo "ApiLevel = 30" | sudo tee -a /etc/gbinder.d/anbox.conf
sudo cat /etc/gbinder.d/anbox.conf
"""
waydroid session stop && sudo systemctl restart waydroid-container.service
#sudo waydroid container restart
}
function setup_adb() {
waydroid session start
## INIT BOOT
#echo "mount -t devpts -o defaults,mode=644,ptmxmode=666 devpts /dev/pts" | sudo waydroid shell
echo "settings put global adb_enabled 1
pm set-home-activity com.android.launcher3/com.android.launcher3.uioverrides.QuickstepLauncher -user --user 0
mknod -m 666 /dev/tty c 5 0" | sudo waydroid shell
#adb shell pm set-home-activity com.android.launcher3/com.android.launcher3.uioverrides.QuickstepLauncher -user --user 0
adb connect 192.168.250.112:5555
adb install ~/Downloads/MiXplorer_v6.56.0.apk
adb install ~/Downloads/com.termux*.apk
adb install ~/Downloads/com.aurora.adroid_8.apk
adb install ~/Downloads/x64_ChromePublic.apk
adb install ~/Downloads/eu.chainfire.liveboot.apk
adb install ~/Downloads/RootBeer*.apk
adb install ~/Downloads/LSPosed*.apk
adb install magisk_${magisk_ver}.apk
#waydroid app install magisk_24001.apk
#waydroid app install magisk_24102.apk
#waydroid app install magisk_24103.apk
#waydroid app install magisk_24201.apk
#waydroid app install magisk_24202.apk
#sqlite3 /data/adb/magisk.db
adb shell su -c mknod -m 666 /dev/tty c 5 0
magisk --sqlite "INSERT INTO settings (key,value) VALUES('zygisk', '1');"
magisk --sqlite "INSERT INTO settings (key,value) VALUES('denylist', '1');"
magisk --sqlite "INSERT INTO settings (key,value) VALUES('su_biometric', '0');"
#magisk --sqlite "UPDATE settings SET value= '1' WHERE key= 'zygisk'"
#magisk --sqlite "UPDATE settings SET value= '1' WHERE key= 'denylist'"
#magisk --sqlite "DELETE FROM policies WHERE package_name='com.android.shell';"
magisk --sqlite "INSERT INTO policies (uid, package_name, policy, until, logging, notification) VALUES('2000', 'com.android.shell', '2', '0', '1', '1');"
#magisk --sqlite "SELECT * FROM policies;"
#VALUES \('10156', 'com.mixplorer.silver', '2', '0', '1', '1'\);
#uid|package_name|policy|until|logging|notification
#2000|com.android.shell|2|0|1|1
#10158|com.termux|2|0|1|1
#10159|eu.chainfire.liveboot|2|0|1|1
adb shell settings put global development_settings_enabled 1
adb shell settings put global window_animation_scale 0
adb shell settings put global transition_animation_scale 0
adb shell settings put global animator_duration_scale 0
adb shell su -c pm grant com.aurora.adroid android.permission.WRITE_EXTERNAL_STORAGE
adb shell su -c pm disable com.android.inputmethod.latin
adb shell su -c settings put global adb_enabled 1
adb shell su -c magisk --denylist add com.amazon.venezia com.amazon.venezia
adb shell su -c magisk --denylist add com.android.vending com.android.vending
adb shell su -c magisk --denylist add com.android.vending com.android.vending:background
adb shell su -c magisk --denylist add com.android.vending com.android.vending:instant_app_installer
adb shell su -c magisk --denylist add com.android.vending com.android.vending:quick_launch
adb shell su -c magisk --denylist add com.android.vending com.android.vending:recovery_mode
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms.feedback
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms.learning
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms.persistent
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms.remapping1
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms.room
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms.ui
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms.unstable
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms:car
adb shell su -c magisk --denylist add com.google.android.gms com.google.android.gms:snet
adb shell su -c magisk --denylist add com.google.android.gsf com.google.process.gapps
adb shell su -c magisk --denylist add com.google.android.gsf com.google.process.gservices
adb shell su -c magisk --denylist add com.scottyab.rootbeer.sample com.scottyab.rootbeer.sample
# Magisk reboot
# debugging
# logboot enable
adb push ~/Downloads/Shamiko*.zip /sdcard/
adb push ~/Downloads/BusyboxNDK-1.34.1.zip /sdcard/
adb push ~/Downloads/Detach.5.3.zip /sdcard/
adb push ~/Downloads/riru-v26.1.4.r524.125daf3f89-release.zip /sdcard/
adb push ~/Downloads/LSPosed-v1.7.2-6379-riru-release.zip /sdcard/
adb push ~/Downloads/Riru-MomoHider.zip /sdcard/
#adb push ~/Downloads/Disable_Dm-Verity_ForceEncrypt_11.02.2020.zip /sdcard/
#adb push ~/Downloads/MagiskHidePropsConf*.zip /sdcard/
adb shell su -c monkey -p com.topjohnwu.magisk 1
waydroid session stop && sudo systemctl restart waydroid-container.service
waydroid session stop && sudo systemctl restart waydroid-container.service
}
function rebuild_waydroid(){
rm_waydroid
dl_wsa
dl_gapps
unzip_gapps
rep_img
resmount_img
rm_foss
install_magisk
install_gapps
unmount_img
init_img
}
function after_install() {
echo "settings put global adb_enabled 1" | sudo waydroid shell
adb connect 192.168.250.112:5555
adb shell su -c mknod -m 666 /dev/tty c 5 0
# allow
#adb shell su -c magisk --install-module /sdcard/Shamiko*.zip
adb shell su -c magisk --install-module /sdcard/BusyboxNDK-1.34.1.zip
adb shell su -c magisk --install-module /sdcard/Detach.5.3.zip
adb shell su -c sed -i -E 's/#YouTube/YouTube/g' /sdcard/Detach.txt
adb shell su -c "echo 'com.topjohnwu.magisk' | tee -a /sdcard/Detach.txt"
adb shell su -c cat /sdcard/Detach.txt
adb shell su -c magisk --install-module /sdcard/Detach.5.3.zip
# Extra Modules
#echo "magisk --install-module /sdcard/Disable_Dm-Verity_ForceEncrypt_11.02.2020.zip" | sudo waydroid shell
#echo "magisk --install-module /sdcard/MagiskHidePropsConf*.zip" | sudo waydroid shell
adb shell su -c magisk --install-module /sdcard/riru-v26.1.4.r524.125daf3f89-release.zip
adb shell su -c magisk --install-module /sdcard/LSPosed-v1.7.2-6379-riru-release.zip
#adb shell su -c magisk --install-module /sdcard/Riru-MomoHider.zip
waydroid session stop && sudo systemctl restart waydroid-container.service
waydroid session stop && sudo systemctl restart waydroid-container.service
}
function add_additional_magisk_manually() {
# reboot
echo "cp /cache/{liveboot,magisk}.log /sdcard/" | sudo waydroid shell
echo "cp /cache/zygote_ap.strace /sdcard/" | sudo waydroid shell
echo "cp /system/etc/init/hw/init.rc /sdcard/" | sudo waydroid shell
adb pull /sdcard/liveboot.log ~/Downloads/liveboot.log
adb pull /sdcard/magisk.log ~/Downloads/magisk.log
adb pull /sdcard/zygote.strace ~/Downloads/zygote.txt
adb pull /sdcard/init.rc ~/Downloads/init.rc
echo "cp /cache/zygote_ap64.strace /sdcard/" | sudo waydroid shell
echo "cp /cache/zygote_ap32.strace /sdcard/" | sudo waydroid shell
adb pull /sdcard/zygote_ap64.strace ~/Downloads/zygote_ap64.txt
adb pull /sdcard/zygote_ap32.strace ~/Downloads/zygote_ap32.txt
# https://askubuntu.com/questions/45679/ssh-connection-problem-with-host-key-verification-failed-error
echo "export ANDROID_DATA=/data
export ANDROID_ROOT=/system
start /dev/magisk/.magisk/zygisk/app_process64" | sudo waydroid shell
#resetprop ro.build.fingerprint google/redfin/redfin:11/RD2A.211001.002/eng.latteu.20220104.220627:user/release-keys
# Add Magisk Files manually
adb connect 192.168.250.112:5555
adb push magisk_all/assets/bootctl /sdcard/
adb push magisk_all/assets/main.jar /sdcard/
#adb push magisk_all/assets/module_installer.sh /sdcard/
adb push magisk_all/assets/uninstaller.sh /sdcard/
echo "cp /sdcard/bootctl /dev/magisk/
cp /sdcard/main.jar /dev/magisk/
cp /sdcard/uninstaller.sh /dev/magisk/
ls /dev/magisk" | sudo waydroid shell
#cp -rf /system/etc/magisk /data/adb
#mkdir /data/adb/{modules,post-fs-data.d,service.d}
#ls /data/adb
"""
# https://stackoverflow.com/questions/55030788/adb-remount-fails-mount-system-not-in-proc-mounts
#mount -o rw,remount /
#mv /system/xbin/su /system/xbin/suold
#mount -o ro,remount /
#mount -t devpts -o defaults,mode=644,ptmxmode=666 devpts /dev/pts
mount -o rw,remount /
sed -i -E 's;(chmod 0550.*pstore);\1\r\n chmod 0755 /sys/fs/cgroup/cgroup.procs;g' /system/etc/init/hw/init.rc
mount -o ro,remount /
#chmod 755 /sys/fs/cgroup/cgroup.procs
touch /dev/magisk/.magisk/config
mkdir /dev/block
mkdir -p /dev/magisk/.magisk/mirror/data/adb/modules
mkdir -p /sys/fs/selinux
touch /sys/fs/selinux/context
"""
}
: '
# MagiskOnEmu method (not working)
pkg install git
git clone https://github.com/HuskyDG/MagiskOnEmu.git
sh ~/magiskonemu/run.sh
sh /data/data/com.termux/files/home/MagiskOnEmu/run.sh
# Google SafetyNet
pkg install sqlite
su -c '/data/data/com.termux/files/usr/bin/sqlite3 /data/data/com.google.android.gsf/databases/gservices.db \
"select * from main where name = \"android_id\";"'
android_id|4342138757243233702
3714563756416041669:XRN7A
3716924108982017034
3878074511571278764
3976644448267554368:waydroid
4158029620737332971
4314187120014293265
4364634936404741669
4483701675885235399
4342138757243233702:W11VM
'
function kokoro_magisk_method() {
# mount devpts devpts /dev/pts noexec nosuid gid=5 mode=620
# KOKORO
sudo mkdir system/system/etc/magisk
sudo chcon --reference system/init.environ.rc system/system/etc/magisk
sudo chown root:root system/system/etc/magisk
sudo chmod 0700 system/system/etc/magisk
sudo cp kokoro/magisk/* system/system/etc/magisk
sudo ls system/system/etc/magisk
sudo mkdir -p userdata/adb/magisk
sudo chmod -R 700 userdata/adb
sudo cp magisk/* userdata/adb/magisk/
sudo find userdata/adb/magisk -type f -exec chmod 0755 {} \;
sudo cp magisk_stable.apk userdata/adb/magisk/magisk.apk
sudo ls userdata/adb/magisk
sudo find system/system/etc/magisk -type f -exec chmod 0755 {} \;
sudo find system/system/etc/magisk -type f -exec chown root:root {} \;
sudo find system/system/etc/magisk -type f -exec chcon --reference system/system/product {} \;
# KOKORO
echo '/dev/magisk(/.*)? u:object_r:magisk_file:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
echo '/data/adb/magisk(/.*)? u:object_r:magisk_file:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
sudo chmod +x kokoro/magiskpolicy
sudo kokoro/magiskpolicy --load system/vendor/etc/selinux/precompiled_sepolicy --save system/vendor/etc/selinux/precompiled_sepolicy --magisk "allow * magisk_file lnk_file *"
#sudo tee -a system/system/etc/init/hw/init.rc <<EOF
sudo tee -a system/system/etc/init/hw/init.kokoro.rc <<EOF
on post-fs-data
start logd
start adbd
mkdir /dev/magisk
#mount tmpfs tmpfs /dev/magisk mode=0755
copy /system/etc/magisk/magisk64 /dev/magisk/magisk64
chmod 0755 /dev/magisk/magisk64
symlink /dev/magisk/magisk64 /dev/magisk/magisk
symlink /dev/magisk/magisk64 /dev/magisk/su
symlink /dev/magisk/magisk64 /dev/magisk/resetprop
copy /system/etc/magisk/magisk32 /dev/magisk/magisk32
chmod 0755 /dev/magisk/magisk32
copy /system/etc/magisk/magiskinit /dev/magisk/magiskinit
chmod 0755 /dev/magisk/magiskinit
symlink /dev/magisk/magiskinit /dev/magisk/magiskpolicy
mkdir /dev/magisk/.magisk 700
mkdir /dev/magisk/.magisk/mirror 700
mkdir /dev/magisk/.magisk/block 700
rm /dev/.magisk_unblock
start IhhslLhHYfse
start FAhW7H9G5sf
umount /dev/magisk/.magisk/mirror/data
rm /dev/magisk/.magisk/mirror/data
symlink /data /dev/magisk/.magisk/mirror/data
wait /dev/.magisk_unblock 40
rm /dev/.magisk_unblock
service IhhslLhHYfse /system/bin/sh /system/etc/magisk/loadpolicy.sh
user root
seclabel u:r:magisk:s0
oneshot
service FAhW7H9G5sf /dev/magisk/magisk --post-fs-data
user root
seclabel u:r:magisk:s0
oneshot
service HLiFsR1HtIXVN6 /dev/magisk/magisk --service
class late_start
user root
seclabel u:r:magisk:s0
oneshot
on property:sys.boot_completed=1
start YqCTLTppv3ML
service YqCTLTppv3ML /dev/magisk/magisk --boot-complete
user root
seclabel u:r:magisk:s0
oneshot
EOF
sudo chown root:root system/system/etc/init/hw/init.kokoro.rc
sudo chmod 0644 system/system/etc/init/hw/init.kokoro.rc
sudo nano system/system/etc/init/hw/init.rc
import /system/etc/init/hw/init.kokoro.rc
sudo ls system/system/etc/init/hw
sudo cat system/system/etc/init/hw/init.rc | grep kokoro
# KOKORO FINISHED
}
function magiskonwsa_method() {
# WSA START
#sudo mkdir system/sbin
#sudo chcon --reference system/init.environ.rc system/sbin
#sudo chown root:root system/sbin
#sudo chmod 0700 system/sbin
#sudo cp magisk/* system/sbin/
sudo mkdir system/system/etc/magisk
sudo chcon --reference system/init.environ.rc system/system/etc/magisk
sudo chown root:root system/system/etc/magisk
sudo chmod 0700 system/system/etc/magisk
sudo cp magisk/* system/system/etc/magisk
sudo ls system/system/etc/magisk
# WSA ONLY
sudo mkdir -p userdata/adb/magisk
sudo chmod -R 700 userdata/adb
sudo cp magisk/* userdata/adb/magisk/
sudo find userdata/adb/magisk -type f -exec chmod 0755 {} \;
sudo cp magisk.zip userdata/adb/magisk/magisk.apk
sudo ls userdata/adb/magisk
#sudo cp kokoro/magisk/loadpolicy.sh system/system/etc/magisk/loadpolicy.sh
#sbin
sudo tee -a system/system/etc/magisk/loadpolicy.sh <<EOF
#!/system/bin/sh
restorecon -R /data/adb/magisk
for module in \$(ls /data/adb/modules); do
if ! [ -f "/data/adb/modules/\$module/disable" ] && [ -f "/data/adb/modules/\$module/sepolicy.rule" ]; then
/dev/magisk/magiskpolicy --live --apply "/data/adb/modules/\$module/sepolicy.rule"
fi
done
EOF
# WSA ONLY
sudo find system/system/etc/magisk -type f -exec chmod 0755 {} \;
sudo find system/system/etc/magisk -type f -exec chown root:root {} \;
sudo find system/system/etc/magisk -type f -exec chcon --reference system/system/product {} \;
echo '/dev/magisk(/.*)? u:object_r:magisk_file:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
echo '/data/adb/magisk(/.*)? u:object_r:magisk_file:s0' | sudo tee -a system/vendor/etc/selinux/vendor_file_contexts
sudo chmod +x ./magiskpolicy
sudo ./magiskpolicy --load system/vendor/etc/selinux/precompiled_sepolicy --save system/vendor/etc/selinux/precompiled_sepolicy --magisk "allow * magisk_file lnk_file *"
# https://android.stackexchange.com/questions/161462/bionic-open-tzdata-path-android-data-not-set
sudo tee -a system/system/etc/init/hw/init.rc <<EOF
on post-fs-data
start logd
start adbd
mkdir /dev/magisk
mount tmpfs tmpfs /dev/magisk mode=0755
copy /system/etc/magisk/magisk64 /dev/magisk/magisk64
chmod 0755 /dev/magisk/magisk64
symlink /dev/magisk/magisk64 /dev/magisk/magisk
symlink /dev/magisk/magisk64 /dev/magisk/su
symlink /dev/magisk/magisk64 /dev/magisk/resetprop
copy /system/etc/magisk/magisk32 /dev/magisk/magisk32
chmod 0755 /dev/magisk/magisk32
copy /system/etc/magisk/magiskinit /dev/magisk/magiskinit
chmod 0755 /dev/magisk/magiskinit
symlink /dev/magisk/magiskinit /dev/magisk/magiskpolicy
mkdir /dev/magisk/.magisk 700
mkdir /dev/magisk/.magisk/mirror 700
mkdir /dev/magisk/.magisk/block 700
rm /dev/.magisk_unblock
start IhhslLhHYfse
start FAhW7H9G5sf
wait /dev/.magisk_unblock 40
rm /dev/.magisk_unblock
service IhhslLhHYfse /system/bin/sh /system/etc/magisk/loadpolicy.sh
user root
seclabel u:r:magisk:s0
oneshot
service FAhW7H9G5sf /dev/magisk/magisk --post-fs-data
user root
seclabel u:r:magisk:s0
oneshot
service HLiFsR1HtIXVN6 /dev/magisk/magisk --service
class late_start
user root
seclabel u:r:magisk:s0
oneshot
on property:sys.boot_completed=1
start YqCTLTppv3ML
service YqCTLTppv3ML /dev/magisk/magisk --boot-complete
user root
seclabel u:r:magisk:s0
oneshot
EOF
# WSA FINISHED
}
function waydroid_github_issue_method() {
#### SKIPPPP
sudo tee -a system/system/etc/init/hw/init.rc <<EOF
on post-fs-data
mkdir /dev/magisk
mount tmpfs tmpfs /dev/magisk mode=0755
copy /data/adb/magisk/magisk64 /dev/magisk/magisk64
chmod 0755 /dev/magisk/magisk64
symlink ./magisk64 /dev/magisk/magisk
symlink ./magisk64 /dev/magisk/su
symlink ./magisk64 /dev/magisk/resetprop
copy /data/adb/magisk/magisk32 /dev/magisk/magisk32
chmod 0755 /dev/magisk/magisk32
copy /data/adb/magisk/magiskinit /dev/magisk/magiskinit
chmod 0755 /dev/magisk/magiskinit
symlink ./magiskinit /dev/magisk/magiskpolicy
mkdir /dev/magisk/.magisk 700
mkdir /dev/magisk/.magisk/mirror 700
mkdir /dev/magisk/.magisk/mirror/data 700
mkdir /dev/magisk/.magisk/block 700
mount none /data /dev/magisk/.magisk/mirror/data bind rec
start FAhW7H9G5sf
service FAhW7H9G5sf /dev/magisk/magisk --post-fs-data
user root
oneshot
service HLiFsR1HtIXVN6 /dev/magisk/magisk --service
class late_start
user root
oneshot
on property:sys.boot_completed=1
start YqCTLTppv3ML
service YqCTLTppv3ML /dev/magisk/magisk --boot-complete
user root
EOF
}
"""
#- name: Merge Language Resources
cp $WD_ARCH/resources.pri pri/en-us.pri
cp $WD_ARCH/AppxManifest.xml xml/en-us.xml
tee priconfig.xml <<EOF
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<resources targetOsVersion="10.0.0" majorVersion="1">
<index root="\" startIndexAt="\">
<indexer-config type="folder" foldernameAsQualifier="true" filenameAsQualifier="true" qualifierDelimiter="."/>
<indexer-config type="PRI"/>
</index>
</resources>
EOF
wine64 ~/makepri.exe new /pr pri /in MicrosoftCorporationII.WindowsSubsystemForAndroid /cf priconfig.xml /of $WD_ARCH/resources.pri /o
sed -i -zE "s/<Resources.*Resources>/<Resources>\n$(cat xml/* | grep -Po '<Resource [^>]*/>' | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/\$/\\$/g' | sed 's/\//\\\//g')\n<\/Resources>/g" $WD_ARCH/AppxManifest.xml
"""
### SKIP FINISHED
"""
on init
sysclktz 0
export PATH /data/bin:/system/sbin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin
export ANDROID_DATA /data
export ANDROID_ROOT /system
mkdir /dev/block 755
chmod 0660 /sys/power/wake_unlock
mkdir /dev/block 755
mknod /dev/tty c 5 0
chmod 0666 /dev/tty
rm -rf ~/Desktop/init.rc
cp system/system/etc/init/hw/init.rc ~/Desktop/init.rc
sudo sed -i -E 's|(export DOWNLOAD_CACHE.*cache)|\1\
export ANDROID_DATA /data\
export ANDROID_ROOT /system\
mkdir /dev/block 755|g' ~/Desktop/init.rc
#sudo sed -i -E 's;(chmod 0550.*pstore);\1\r\n chmod 0755 /sys/fs/cgroup/cgroup.procs;g' system/system/etc/init/hw/init.rc
sudo sed -i -E 's|(export DOWNLOAD_CACHE.*cache)|\1\
export ANDROID_DATA /data\
export ANDROID_ROOT /system\
mkdir /dev/block 755|g' system/system/etc/init/hw/init.rc
cat system/system/etc/init/hw/init.rc | grep export
#sudo mkdir system/dev/block
#sudo touch system/dev/magisk/.magisk/config
#sudo mkdir -p system/dev/magisk/.magisk/mirror/data/adb/modules
#sudo mkdir -p system/sys/fs/selinux
#sudo touch system/sys/fs/selinux/context
sudo sed -i -E 's|(export DOWNLOAD_CACHE.*cache)|\1\
export ANDROID_DATA /data\
export ANDROID_ROOT /system\
mkdir /dev/block 755|g' system/system/etc/init/hw/init.rc
"""
echo '/system/bin/strace u:object_r:zygote_socket:s0' | sudo tee -a /vendor/etc/selinux/vendor_file_contexts
sudo sed -i -E "s|service zygote /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server|service zygote /system/bin/strace -o /cache/zygote_ap.strace /system/bin/app_process -Xzygote /system/bin --zygote --start-system-server|g" /system/etc/init/hw/init.zygote32.rc
sudo sed -i -E "s|service zygote /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote|service zygote /system/bin/strace -o /cache/zygote_ap64.strace /system/bin/app_process64 -Xzygote /system/bin --zygote --start-system-server --socket-name=zygote|g" /system/etc/init/hw/init.zygote64_32.rc
sudo sed -i -E "s|service zygote_secondary /system/bin/app_process32 -Xzygote /system/bin --zygote --socket-name=zygote_secondary --enable-lazy-preload|service zygote_secondary /system/bin/strace -o /cache/zygote_ap32.strace /system/bin/app_process32 -Xzygote /system/bin --zygote --socket-name=zygote_secondary --enable-lazy-preload|g" /system/etc/init/hw/init.zygote64_32.rc
function others() {
waydroid init -r bliss - s GAPPS
# Test Waydroid
#sudo cp -rf /run/media/user/SED2/system.img /usr/share/waydroid-extra/images/system.img
#sudo cp -rf /run/media/user/SED2/vendor.img /usr/share/waydroid-extra/images/vendor.img
sudo waydroid init -f
sudo systemctl start waydroid-container.service
#sudo waydroid container restart
waydroid session start
# Install Gapps
waydroid session stop
cd ~/waydroid_script
sudo python3 waydroid_extras.py -g
#sudo waydroid init -f
sudo systemctl restart waydroid-container.service
#sudo waydroid container restart
waydroid session start
sudo python3 waydroid_extras.py -i
#rm -rf /var/lib/waydroid/images/system.img
#rm -rf /var/lib/waydroid/images/vendor.img
#sudo cp /run/media/user/SED2/system18.img /usr/share/waydroid-extra/images/system.img
#sudo cp /run/media/user/SED2/vendor18.img /usr/share/waydroid-extra/images/vendor.img
ls /usr/share/waydroid-extra/images
}
#parsec
#cd /tmp
#wget https://builds.parsecgaming.com/package/parsec-linux.deb
#sudo dpkg -i /tmp/parsec-linux.deb
"""
cd ~
sudo apt install openjdk-8-jdk
wget https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux-4333796.zip
mv tools android-sdk-tools
cd android-sdk-tools
sdkmanager "system-images;android-28;google_apis_playstore;x86_64" "build-tools;28.0.3" "platforms;android-28" --sdk_root="$ANDROID_SDK_ROOT"
sdkmanager "platform-tools" --sdk_root="$ANDROID_SDK_ROOT"
sdkmanager --licenses
touch ~/.android/repositories.cfg
cd ~/.android/platform-tools
adb --version
adb kill-server
adb devices
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment