我正在为运行iOS 12或更高版本的越狱设备制作一个iOS应用。
我需要我的应用程序运行命令行命令,因此要实现此目的,我需要使用custom Objective-C header file来创建对象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 ,但它会保留显示相同的消息。
该如何解决?