mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-30 22:07:39 +00:00
26618f8d73
Running broadcast tests from the app does not accurately verifies whether the broadcasts can be delivered when the app is not running in the foreground, which is why we are running the test. The only sane way to verify broadcasts is to trigger the broadcast test directly from the daemon on boot complete. If it is not deliverable, then activity mode shall be chosen. In the meantime, cleanup AndroidManifest.xml
122 lines
3.3 KiB
Bash
Executable File
122 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
################################################################
|
|
# AVD Magisk Setup
|
|
################################################################
|
|
#
|
|
# This script will setup an environment with minimal Magisk that
|
|
# Magisk Manager will be happy to run properly within the official
|
|
# emulator bundled with Android Studio (AVD).
|
|
#
|
|
# ONLY use this script for developing Magisk Manager or root apps
|
|
# in the emulator. The constructed Magisk environment is not a
|
|
# fully functional one as if it is running on an actual device.
|
|
#
|
|
# The script assumes you are using x86/x64 emulator images.
|
|
# Build binaries with `./build.py binary` before running this script.
|
|
#
|
|
################################################################
|
|
|
|
abort() {
|
|
echo "$@"
|
|
exit 1
|
|
}
|
|
|
|
mount_sbin() {
|
|
mount -t tmpfs -o 'mode=0755' tmpfs /sbin
|
|
$SELINUX && chcon u:object_r:rootfs:s0 /sbin
|
|
}
|
|
|
|
if [ ! -f /system/build.prop ]; then
|
|
# Running on PC
|
|
cd "`dirname "$0"`/.."
|
|
adb push native/out/x86/busybox scripts/emulator.sh /data/local/tmp
|
|
emu_arch=`adb shell uname -m`
|
|
if [ "$emu_arch" = "x86_64" ]; then
|
|
adb push native/out/x86/magiskinit64 /data/local/tmp/magiskinit
|
|
else
|
|
adb push native/out/x86/magiskinit /data/local/tmp
|
|
fi
|
|
adb shell sh /data/local/tmp/emulator.sh
|
|
exit 0
|
|
fi
|
|
|
|
cd /data/local/tmp
|
|
chmod 777 busybox
|
|
chmod 777 magiskinit
|
|
|
|
if [ `./busybox id -u` -ne 0 ]; then
|
|
# Re-run script with root
|
|
exec /system/xbin/su 0 sh $0
|
|
fi
|
|
|
|
# First setup a good env to work with
|
|
rm -rf bin
|
|
./busybox mkdir bin
|
|
./busybox --install -s bin
|
|
OLD_PATH="$PATH"
|
|
PATH="/data/local/tmp/bin:$PATH"
|
|
|
|
# Remove previous setup if exist
|
|
pgrep magiskd >/dev/null && pkill -9 magiskd
|
|
[ -f /sbin/magisk ] && umount -l /sbin
|
|
|
|
# SELinux stuffs
|
|
[ -e /sys/fs/selinux ] && SELINUX=true || SELINUX=false
|
|
if $SELINUX; then
|
|
ln -sf ./magiskinit magiskpolicy
|
|
./magiskpolicy --live --magisk 'allow magisk * * *'
|
|
fi
|
|
|
|
# Setup sbin overlay
|
|
if mount | grep -q rootfs; then
|
|
mount -o rw,remount /
|
|
rm -rf /root
|
|
mkdir /root
|
|
chmod 750 /root
|
|
ln /sbin/* /root
|
|
mount -o ro,remount /
|
|
mount_sbin
|
|
ln -s /root/* /sbin
|
|
else
|
|
mount_sbin
|
|
mkdir -p /sbin/.magisk/mirror/system_root
|
|
block=`mount | grep ' / ' | awk '{ print $1 }'`
|
|
[ $block = "/dev/root" ] && block=/dev/block/dm-0
|
|
mount -o ro $block /sbin/.magisk/mirror/system_root
|
|
for file in /sbin/.magisk/mirror/system_root/sbin/*; do
|
|
[ ! -e $file ] && break
|
|
if [ -L $file ]; then
|
|
cp -af $file /sbin
|
|
else
|
|
sfile=/sbin/`basename $file`
|
|
touch $sfile
|
|
mount -o bind $file $sfile
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Magisk stuffs
|
|
if [ -e /apex ]; then
|
|
./magiskinit -x magisk /sbin/magisk.bin
|
|
[ -e /system/lib64 ] && LIB=lib64 || LIB=lib
|
|
cat <<EOF > /sbin/magisk
|
|
#!/system/bin/sh
|
|
export LD_LIBRARY_PATH="\$LD_LIBRARY_PATH:/apex/com.android.runtime/$LIB"
|
|
exec /sbin/magisk.bin "\$0" "\$@"
|
|
EOF
|
|
else
|
|
./magiskinit -x magisk /sbin/magisk
|
|
fi
|
|
chmod 755 /sbin/magisk
|
|
ln -s ./magisk /sbin/su
|
|
ln -s ./magisk /sbin/resetprop
|
|
ln -s ./magisk /sbin/magiskhide
|
|
mkdir -p /sbin/.magisk/busybox
|
|
cp -af ./busybox /sbin/.magisk/busybox/busybox
|
|
/sbin/.magisk/busybox/busybox --install -s /sbin/.magisk/busybox
|
|
mkdir -p /data/adb/modules 2>/dev/null
|
|
mkdir /data/adb/post-fs-data.d 2>/dev/null
|
|
mkdir /data/adb/services.d 2>/dev/null
|
|
/sbin/magisk --daemon
|
|
/sbin/magisk --broadcast-test
|