From bc132e4b2658ecdaf0bb472f474cbfbfdb8c31f9 Mon Sep 17 00:00:00 2001 From: Dusk Date: Mon, 31 Mar 2025 11:05:34 +0800 Subject: [PATCH] ok --- StikJIT/StikJITApp.swift | 2 +- StikJIT/Views/HomeView.swift | 1 + StikJIT/Views/SettingsView.swift | 21 ++++++++++++++++- StikJIT/idevice/JITEnableContext.m | 4 ++-- StikJIT/idevice/jit.c | 36 +++++++++++++++++------------- StikJIT/idevice/jit.h | 2 +- 6 files changed, 46 insertions(+), 20 deletions(-) diff --git a/StikJIT/StikJITApp.swift b/StikJIT/StikJITApp.swift index 4202a07..d869a4a 100644 --- a/StikJIT/StikJITApp.swift +++ b/StikJIT/StikJITApp.swift @@ -25,7 +25,7 @@ struct HeartbeatApp: App { "https://github.com/doronz88/DeveloperDiskImage/raw/refs/heads/main/PersonalizedImages/Xcode_iOS_DDI_Personalized/Image.dmg", "https://github.com/doronz88/DeveloperDiskImage/raw/refs/heads/main/PersonalizedImages/Xcode_iOS_DDI_Personalized/Image.dmg.trustcache" ] - + let outputDir: String = "DDI" let outputFiles: [String] = [ diff --git a/StikJIT/Views/HomeView.swift b/StikJIT/Views/HomeView.swift index 13ef8c4..fdac319 100644 --- a/StikJIT/Views/HomeView.swift +++ b/StikJIT/Views/HomeView.swift @@ -15,6 +15,7 @@ extension UIDocumentPickerViewController { } struct HomeView: View { + @Binding var is_lc: Bool @AppStorage("username") private var username = "User" @AppStorage("customBackgroundColor") private var customBackgroundColorHex: String = Color.primaryBackground.toHex() ?? "#000000" @State private var selectedBackgroundColor: Color = Color(hex: UserDefaults.standard.string(forKey: "customBackgroundColor") ?? "#000000") ?? Color.primaryBackground diff --git a/StikJIT/Views/SettingsView.swift b/StikJIT/Views/SettingsView.swift index e39eb52..f5b87f3 100644 --- a/StikJIT/Views/SettingsView.swift +++ b/StikJIT/Views/SettingsView.swift @@ -18,6 +18,7 @@ struct SettingsView: View { @State private var pairingFileIsValid = false @State private var isImportingFile = false @State private var importProgress: Float = 0.0 + @State private var is_lc = false @StateObject private var mountProg = MountingProgress.shared @@ -30,7 +31,8 @@ struct SettingsView: View { "Stossy11": "https://github.com/Stossy11.png", "Neo": "https://github.com/neoarz.png", "Se2crid": "https://github.com/Se2crid.png", - "HugeBlack": "https://github.com/HugeBlack.png" + "HugeBlack": "https://github.com/HugeBlack.png", + "Wynwxst": "https://github.com/Wynwxst.png" ] var body: some View { @@ -240,6 +242,21 @@ struct SettingsView: View { self.mounted = isMounted() } } + SettingsCard { + VStack(alignment: .leading, spacing: 20) { + Text("Misclaneous Settings") + .font(.headline) + .foregroundColor(.primary) + .padding(.bottom, 4) + + Toggle("Enable in-LiveContainer JIT", isOn: $is_lc) + .padding() + + HomeView(is_lc: $is_lc) + } + .padding(.vertical, 20) + .padding(.horizontal, 16) + } // About section @@ -324,6 +341,8 @@ struct SettingsView: View { CollaboratorRow(name: "Se2crid", url: "https://github.com/Se2crid", imageUrl: developerProfiles["Se2crid"] ?? "") CollaboratorRow(name: "HugeBlack", url: "https://github.com/HugeBlack", imageUrl: developerProfiles["HugeBlack"] ?? "") + + CollaboratorRow(name: "Wynwxst", url: "https://github.com/Wynwxst", imageUrl: developerProfiles["Wynwxst"] ?? "") } } diff --git a/StikJIT/idevice/JITEnableContext.m b/StikJIT/idevice/JITEnableContext.m index 83e985f..4fa6598 100644 --- a/StikJIT/idevice/JITEnableContext.m +++ b/StikJIT/idevice/JITEnableContext.m @@ -84,7 +84,7 @@ JITEnableContext* sharedJITContext = nil; completionHandler(result,[NSString stringWithCString:message encoding:NSASCIIStringEncoding]); }, [self createCLogger:logger]); } -- (void)debugAppWithBundleID:(NSString*)bundleID logger:(LogFunc)logger { +- (void)debugAppWithBundleID:(NSString*)bundleID logger:(LogFunc)logger isLC:(BOOL)isLC { if(!provider) { if(logger) { logger(@"Provider not initialized!"); @@ -93,7 +93,7 @@ JITEnableContext* sharedJITContext = nil; return; } - debug_app(provider, [bundleID UTF8String], [self createCLogger:logger]); + debug_app(provider, [bundleID UTF8String], [self createCLogger:logger], (bool)(isLC)); } diff --git a/StikJIT/idevice/jit.c b/StikJIT/idevice/jit.c index 9d226c6..1acc41d 100644 --- a/StikJIT/idevice/jit.c +++ b/StikJIT/idevice/jit.c @@ -19,7 +19,7 @@ #include "jit.h" -int debug_app(TcpProviderHandle* tcp_provider, const char *bundle_id, LogFuncC logger) { +int debug_app(TcpProviderHandle* tcp_provider, const char *bundle_id, LogFuncC logger,bool isLC) { // Initialize logger idevice_init_logger(Debug, Disabled, NULL); IdeviceErrorCode err = IdeviceSuccess; @@ -99,8 +99,10 @@ int debug_app(TcpProviderHandle* tcp_provider, const char *bundle_id, LogFuncC l * Process Control - Launch App *****************************************************************/ logger("=== Launching App ==="); + uint64_t pid; // Get the adapter back from the XPC device + AdapterHandle *pc_adapter = NULL; err = xpc_device_adapter_into_inner(xpc_device, &pc_adapter); if (err != IdeviceSuccess) { @@ -141,21 +143,25 @@ int debug_app(TcpProviderHandle* tcp_provider, const char *bundle_id, LogFuncC l xpc_service_free(debug_service); return 1; } - - // Launch application - uint64_t pid; - err = process_control_launch_app(process_control, bundle_id, NULL, 0, NULL, 0, - true, false, &pid); - if (err != IdeviceSuccess) { - logger("Failed to launch app: %d", err); - process_control_free(process_control); - remote_server_free(remote_server); - xpc_service_free(pc_service); - xpc_service_free(debug_service); - return 1; + if(!isLC){ + + // Launch application + + err = process_control_launch_app(process_control, bundle_id, NULL, 0, NULL, 0, + true, false, &pid); + if (err != IdeviceSuccess) { + logger("Failed to launch app: %d", err); + process_control_free(process_control); + remote_server_free(remote_server); + xpc_service_free(pc_service); + xpc_service_free(debug_service); + return 1; + } + + logger("Successfully launched app with PID: %" PRIu64 "", pid); + } else { + pid = getpid(); } - logger("Successfully launched app with PID: %" PRIu64 "", pid); - // Disable memory limit for PID err = process_control_disable_memory_limit(process_control, pid); if (err != IdeviceSuccess) { diff --git a/StikJIT/idevice/jit.h b/StikJIT/idevice/jit.h index c42f2fc..8f3b8f3 100644 --- a/StikJIT/idevice/jit.h +++ b/StikJIT/idevice/jit.h @@ -11,6 +11,6 @@ #include "idevice.h" typedef void (^LogFuncC)(const char* message, ...); -int debug_app(TcpProviderHandle* provider, const char *bundle_id, LogFuncC logger); +int debug_app(TcpProviderHandle* provider, const char *bundle_id, LogFuncC logger, bool isLC); #endif /* JIT_H */