首页 > 解决方案 > Swift iOS:dyld:dyld_sim 无法在受限进程中加载

问题描述

我正在为运行 iOS 12 或更高版本的越狱设备制作 iOS 应用程序。

我需要我的应用程序运行命令行命令,为此我使用自定义的 Objective-C 头文件创建对象 NSTask 及其所需的一切,然后使用桥接头将其公开给 Swift。

因此,要运行任务,我使用以下函数:

func task(launchPath: String, arguments: String...) -> NSString {
    let task = NSTask.init()
    task?.setLaunchPath(launchPath)
    task?.arguments = arguments

    // Create a Pipe and make the task
    // put all the output there
    let pipe = Pipe()
    task?.standardOutput = pipe

    // Launch the task
    task?.launch()
    task?.waitUntilExit()

    // Get the data
    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)

    return output!
}

并这样称呼它:

installPackage = task(launchPath: "/usr/bin/dpkg", arguments: "-i", packageID, "control")

我注意到这没有做任何事情,所以我想检查该命令真正在做什么。

为此,我打印了installPackage. 这应该打印了 dpkg 命令输出,但它打印了以下内容:

print(installPackage)

~> dyld: dyld_sim cannot be loaded in a restricted process

我已经读过要解决此问题,您需要关闭Thread Sanitizer或将Build Configuration更改为Release,但它一直显示相同的消息。

我能做些什么来解决这个问题?

标签: iosswiftios-simulatornstaskdyld

解决方案


推荐阅读