This commit is contained in:
Dusk 2025-03-31 11:05:34 +08:00
parent 7d5fd0c90c
commit bc132e4b26
6 changed files with 46 additions and 20 deletions

View file

@ -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] = [

View file

@ -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

View file

@ -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"] ?? "")
}
}

View file

@ -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));
}

View file

@ -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) {

View file

@ -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 */