在为iPhone编写后台进程时出错

时间:2014-06-03 12:16:12

标签: ios objective-c jailbreak cydia

对于我的应用程序,我想做一个后台处理,所以我做了。 但是现在尝试在这样的postinst中通过脚本加载进程 /Library/LaunchDaemons/com.dev.app

我收到错误消息:

  

无法打开作业覆盖数据库:/private/var/db/launchd.db/com.apple.launchd/overrides.plist:2:没有此类文件或目录

任何人都可以帮我摆脱这个吗?

编辑:

Debian postinst脚本:

chown root:wheel /Library/LaunchDaemons/com.dev.app.plist
launchctl load /Library/LaunchDaemons/com.dev.app.plist

1 个答案:

答案 0 :(得分:1)

我也看到了这条错误信息。

如果您查看手机的文件系统(例如使用ssh登录),我打赌您没有/private/var/db/launchd.db的文件夹。

仅仅因为iOS无法找到数据库文件并不意味着您的守护程序没有被加载(或卸载)。在命令行(登录到手机)中使用ps -Aef命令检查您的守护程序进程是否正在运行。

在守护程序的plist文件(例如/System/Library/LaunchDaemons/com.mycompany.mydaemon.plist)中,您可以设置已禁用标记(但是,您可能赢了)。 overrides.plist文件可以覆盖守护程序的plist文件中的Disabled设置。

我的猜测是,这主要是一个OS X功能,并不是iOS常用的,它与大部分相同的代码库共享。

编辑:

如果确实感觉需要摆脱消息,那么看起来简单地创建该目录就会消除它。因此,在调用postinst之前,您可以在launchctl脚本中添加类似的内容:

mkdir -p /var/db/launchd.db/com.apple.launchd