【发布时间】:2014-03-19 15:06:58
【问题描述】:
有没有人有一些关于在 Xcode for iOS 中创建控制台工具的技巧。我想通过launchd运行它,它应该向服务器发送请求。
但是我找不到任何方法来在 Xcode for ARM 中编译没有 UI 的“应用程序”。
谢谢
【问题讨论】:
标签: ios xcode jailbreak launchd launch-daemon
有没有人有一些关于在 Xcode for iOS 中创建控制台工具的技巧。我想通过launchd运行它,它应该向服务器发送请求。
但是我找不到任何方法来在 Xcode for ARM 中编译没有 UI 的“应用程序”。
谢谢
【问题讨论】:
标签: ios xcode jailbreak launchd launch-daemon
我同意the other answer,安装 iOSOpenDev 通常是解决此问题的正确方法。安装后,它会向 Xcode 添加新模板。然后,您可以使用 File -> New -> Target... 将新目标添加到您的项目中。从 iOSOpenDev 模板中进行选择,该模板名为 Command-line Tool。
但是,如果这不是一个选项,或者您想知道如何以另一种方式做到这一点,那也不是太难。
只需创建一个新的 Xcode 项目。对于项目类型,从最简单的开始...可能是 iOS -> Application -> Single View Application。
创建项目后,只需删除所有 View、ViewController 或 .xib 文件,因为您不会使用它们。在您的框架列表(项目设置 -> 构建阶段)中,您可以删除 UIKit.framework 或任何其他非图形工具不需要的内容。
然后,只需进入生成的 main.m 文件,并删除它对UIApplicationMain() 的调用。相反,我通常会创建一个主守护程序类,然后从 main.m 中以这样的方式启动它:
#import "HelloDaemon.h"
int main(int argc, char *argv[]) {
@autoreleasepool {
HelloDaemon* daemon = [[HelloDaemon alloc] init];
// start a timer so that the process does not exit.
NSTimer* timer = [[NSTimer alloc] initWithFireDate: [NSDate date]
interval: 1.0
target: daemon
selector: @selector(run:)
userInfo: nil
repeats: NO];
NSRunLoop* runLoop = [NSRunLoop currentRunLoop];
[runLoop addTimer: timer forMode: NSDefaultRunLoopMode];
[runLoop run];
}
return 0;
}
我的守护进程类包含run: 方法:
-(void) run:(NSTimer *) timer;
当您为 iOS 设备(不是模拟器!)构建此“应用程序”时,它会将其粘贴在构建输出目录中,例如:
./Build/Products/Debug-iphoneos/HelloDaemon.app/HelloDaemon
可执行文件是.app 目录下的HelloDaemon 文件。将其复制到您的 iPhone,并从命令行使用它,作为启动守护程序,或者您想要的任何其他方式。
【讨论】:
iOSOpenDev 提供您所描述的内容。
【讨论】: