LSPosed/magisk-loader/magisk_module/daemon

55 lines
1.9 KiB
Bash

#!/system/bin/sh
dir=${0%/*}
magiskPath=$(magisk --path)
tmpLspdApk="/data/local/tmp/daemon.apk"
debug=@DEBUG@
flavor=@FLAVOR@
if [ -r $tmpLspdApk ]; then
java_options="-Djava.class.path=$tmpLspdApk"
java_options="$java_options -Dlsp.library.path=/data/local/tmp"
debug="true"
else
java_options="-Djava.class.path=$dir/daemon.apk"
java_options="$java_options -Dlsp.library.path=$dir"
fi
if [ $debug = "true" ]; then
os_version=$(getprop ro.build.version.sdk)
if [ "$os_version" -eq "27" ]; then
java_options="$java_options -Xrunjdwp:transport=dt_android_adb,suspend=n,server=y -Xcompiler-option --debuggable"
elif [ "$os_version" -eq "28" ]; then
java_options="$java_options -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y -Xcompiler-option --debuggable"
else
java_options="$java_options -XjdwpProvider:adbconnection -XjdwpOptions:suspend=n,server=y"
fi
fi
mount tmpfs -t tmpfs /data/resource-cache
if [ ! -S "/dev/socket/zygote" ]; then
timeout 0.5 inotifyd - /dev/socket:near | while read -r line; do
$debug && log -p v -t "LSPosed" "inotify: $line"
if [ -S "/dev/socket/zygote" ]; then
$debug && log -p v -t "LSPosed" "zygote started"
touch /dev/socket&
exit
fi
done
fi
$debug && log -p d -t "LSPosed" "start $flavor daemon $*"
if [ "$(getprop ro.build.version.sdk)" -ge 29 ]; then
umount /apex/com.android.art/bin/dex2oat*
mkdir "$magiskPath/dex2oat"
cp -p /apex/com.android.art/bin/dex2oat32 "$magiskPath/dex2oat/dex2oat32"
cp -p /apex/com.android.art/bin/dex2oat64 "$magiskPath/dex2oat/dex2oat64"
chcon -R u:object_r:magisk_file:s0 "$magiskPath/dex2oat"
mount --bind "$magiskPath/dex2oat/dex2oat32" /apex/com.android.art/bin/dex2oat32
mount --bind "$magiskPath/dex2oat/dex2oat64" /apex/com.android.art/bin/dex2oat64
fi
# shellcheck disable=SC2086
exec /system/bin/app_process $java_options /system/bin --nice-name=lspd org.lsposed.lspd.Main "$@" >/dev/null 2>&1