[core] Support debugger

This commit is contained in:
vvb2060 2021-06-29 04:20:55 +08:00
parent 338c73bf10
commit 409a197431
8 changed files with 45 additions and 9 deletions

View File

@ -69,6 +69,7 @@ extract "$ZIPFILE" 'post-fs-data.sh' "$MODPATH"
extract "$ZIPFILE" 'service.sh' "$MODPATH"
extract "$ZIPFILE" 'uninstall.sh' "$MODPATH"
extract "$ZIPFILE" 'framework/lspd.dex' "$MODPATH"
extract "$ZIPFILE" 'lspd' "$MODPATH"
extract "$ZIPFILE" 'manager.apk' '/data/adb/lspd'
mkdir "$MODPATH/riru"
@ -99,11 +100,12 @@ if [ "$RIRU_MODULE_DEBUG" = true ]; then
mv "$MODPATH/riru" "$MODPATH/system"
mv "$MODPATH/system/lib/liblspd.so" "$MODPATH/system/lib/libriru_lspd.so"
mv "$MODPATH/system/lib64/liblspd.so" "$MODPATH/system/lib64/libriru_lspd.so"
cp -r "$MODPATH/framework" "$MODPATH/system/framework"
mv "$MODPATH/framework" "$MODPATH/system/framework"
mkdir -p "/data/adb/riru/modules/lspd"
fi
set_perm_recursive "$MODPATH" 0 0 0755 0644
chmod 0744 "$MODPATH/lspd"
# Lsposed config
ui_print "- Creating configuration directories"

19
core/magisk_module/lspd Normal file
View File

@ -0,0 +1,19 @@
#!/system/bin/sh
dir=${0%/*}
if [ -d "$dir/system" ]; then
java_options="-Djava.class.path=$dir/system/framework/lspd.dex"
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
else
java_options="-Djava.class.path=$dir/framework/lspd.dex"
fi
# shellcheck disable=SC2086
exec /system/bin/app_process $java_options /system/bin --nice-name=lspd org.lsposed.lspd.core.Main "$@" >/dev/null 2>&1

View File

@ -135,4 +135,4 @@ if [ ! -z "${MISC_PATH}" ]; then
start_log_catcher all "LSPosed:V XSharedPreferences:V LSPosed-Bridge:V LSPosedManager:V LSPosedService:V *:F" true ${LOG_VERBOSE}
fi
/system/bin/app_process -Djava.class.path=$(magisk --path)/.magisk/modules/riru_lsposed/framework/lspd.dex /system/bin --nice-name=lspd org.lsposed.lspd.core.Main >/dev/null 2>&1
"$MODDIR/lspd"

View File

@ -19,5 +19,6 @@
# Copyright (C) 2021 LSPosed Contributors
#
MODDIR=${0%/*}
# post-fs-data.sh may be blocked by other modules. retry to start this
/system/bin/app_process -Djava.class.path=$(magisk --path)/.magisk/modules/riru_lsposed/framework/lspd.dex /system/bin --nice-name=lspd org.lsposed.lspd.core.Main --from-service >/dev/null 2>&1
"$MODDIR/lspd" --from-service

View File

@ -16,9 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with LSPosed. If not, see <https://www.gnu.org/licenses/>.
#
# Copyright (C) 2020 EdXposed Contributors
# Copyright (C) 2021 LSPosed Contributors
#
MODDIR=${0%/*}
rm -rf /data/adb/lspd

View File

@ -20,7 +20,7 @@
check_magisk_version() {
ui_print "- Magisk version: $MAGISK_VER_CODE"
if [ "$MAGISK_VER_CODE" -lt 22105 ]; then
if [ "$MAGISK_VER_CODE" -lt 23000 ]; then
ui_print "*********************************************************"
ui_print "! Please install Magisk v23+"
abort "*********************************************************"

View File

@ -19,6 +19,7 @@
package org.lsposed.lspd.service;
import android.app.ActivityThread;
import android.content.Context;
import android.ddm.DdmHandleAppName;
import android.os.IBinder;
@ -38,6 +39,7 @@ public class ServiceManager {
private static LSPApplicationService applicationService = null;
private static LSPManagerService managerService = null;
private static LSPSystemServerService systemServerService = null;
private static Context systemContext = null;
public static final String TAG = "LSPosedService";
private static void waitSystemService(String name) {
@ -60,9 +62,6 @@ public class ServiceManager {
if (!ConfigManager.getInstance().tryLock()) System.exit(0);
for (String arg : args) {
if (arg.equals("--debug")) {
DdmHandleAppName.setAppName("lspd", 0);
}
if (arg.equals("--from-service")) {
Log.w(TAG, "LSPosed daemon is not started properly. Try for a late start...");
}
@ -86,6 +85,8 @@ public class ServiceManager {
android.os.Process.killProcess(android.system.Os.getppid());
createSystemContext();
waitSystemService("package");
waitSystemService("activity");
waitSystemService(Context.USER_SERVICE);
@ -151,4 +152,15 @@ public class ServiceManager {
public static boolean systemServerRequested() {
return systemServerService.systemServerRequested();
}
private static void createSystemContext() {
ActivityThread activityThread = ActivityThread.systemMain();
systemContext = activityThread.getSystemContext();
systemContext.setTheme(android.R.style.Theme_DeviceDefault_Light_DarkActionBar);
DdmHandleAppName.setAppName("lspd", 0);
}
public static Context getSystemContext() {
return systemContext;
}
}

View File

@ -34,6 +34,10 @@ public final class ActivityThread {
throw new UnsupportedOperationException("STUB");
}
public static ActivityThread systemMain() {
throw new UnsupportedOperationException("STUB");
}
private class ApplicationThread extends IApplicationThread.Stub{
@Override
public IBinder asBinder() {