【问题标题】:iOS console application to be runned by launchd由 launchd 运行的 iOS 控制台应用程序
【发布时间】:2014-03-19 15:06:58
【问题描述】:

有没有人有一些关于在 Xcode for iOS 中创建控制台工具的技巧。我想通过launchd运行它,它应该向服务器发送请求。

但是我找不到任何方法来在 Xcode for ARM 中编译没有 UI 的“应用程序”。

谢谢

【问题讨论】:

    标签: ios xcode jailbreak launchd launch-daemon


    【解决方案1】:

    我同意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,并从命令行使用它,作为启动守护程序,或者您想要的任何其他方式。

    参考文献

    Chris Alvares' old, but good tutorial on launch daemons

    【讨论】:

      【解决方案2】:

      iOSOpenDev 提供您所描述的内容。

      【讨论】:

        猜你喜欢
        • 2011-01-22
        • 1970-01-01
        • 2013-02-11
        • 2019-01-30
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多