#!/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