iphone以编程方式重启

时间:2011-06-21 02:19:42

标签: ios objective-c jailbreak reboot

我有代码

system("reboot") 

reboot命令在终端中有效,但即使我以root身份运行应用程序,操作仍会被拒绝。有没有人找到任何可行的方法,或者可以解释一下 SBSetting的重启,这让我很好奇?

5 个答案:

答案 0 :(得分:26)

我终于找到了一种以编程方式重新启动iOS设备而无需设备生成的方法! 重启iOS设备的命令行工具称为libimobiledevice:

http://krypted.com/mac-os-x/use-libimobiledevice-to-view-ios-logs/

真是太神奇了。我在安装时碰到的一个障碍是试图安装这一行:

brew install -v --devel --fresh automake autoconf libtool wget libimobiledevice

但是我通过运行此行解决了安装问题:

brew install -v --fresh automake autoconf libtool wget libimobiledevice

在那个问题之后,我按照其余的说明瞧了一声!

大多数命令都可以在此页面上找到: http://krypted.com/uncategorized/command-line-ios-device-management/

重启iOS设备的魔术命令是:

idevicediagnostics restart

这个工具真正令人惊奇的不仅是重启iOS设备,还使用以下命令将iOS设备日志输出到mac的终端应用程序:

idevicesyslog

答案 1 :(得分:9)

我找到了一种方法,尽管它有点复杂。问题是,即使您将应用设置为以 root 运行,当您拨打system()电话时,您显然仍然只能使用用户移动权限。由于移动无法调用重启(成功),因此无效。

我解决这个问题的方法是利用 SBSettings 支持的新功能。 SBSettings有一个运行的特权守护程序进程。它允许您通过简单地编写脚本(或其他可执行文件)并将其转储到适当的目录(/var/mobile/Library/SBSettings/Commands)来插入您自己的命令。然后,重新启动sbsettingsd进程后,可以通过发布通知来运行脚本。如果您命名脚本

com.mycompany.reboot

然后从您的应用中,您可以执行此代码:

#import <notify.h>

notify_post("com.mycompany.reboot");

然后,让 com.mycompany.reboot 成为一个简单的shell脚本:

#!/bin/sh
reboot

并确保在com.mycompany.reboot脚本上使用chmod 755。有关此SBSettings命令功能的完整详细信息,请访问:

http://thebigboss.org/guides/sbsettings-toggle-spec(参见调用外部函数和脚本 ...)

无论如何,它确实需要你的应用程序依赖于SBSettings,但它是一个免费的应用程序,大多数用户可能想要它仍然拥有它。目前,它通过notify_post()以编程方式完成了重新启动(或任何其他需要root访问权限的目标)的目标。

答案 2 :(得分:4)

对于某些人来说,这个答案可能会让人感觉不舒服,但我还没有找到一个更好的解决方案,如何重新启动一个尚未越狱的iOS设备,所以我的回答如下:

为了从命令行重启设备,我做了一些准备工作:

  • 将设备连接到计算机
  • 将iTunes快捷方式添加到Dock
  • 选择聚光灯并搜索名为Automator 的应用程序[必须安装Xcode才能启动Automator!]
  • 启动Automator时,选择“应用程序”选项
  • 选择录制按钮以开始录制以下操作
  • 选择iTunes快捷方式
  • 从设备选项
  • 中选择您的设备
  • 选择还原备份...按钮
  • 选择“还原”按钮
  • 选择Automator应用程序上的停止按钮以停止录制。
  • 从Automator应用程序中,从顶部栏中选择文件,然后将新录制的应用程序保存到您选择的位置

此时您有一个应用程序文件,它将执行上述步骤。我倾向于让iTunes保持打开状态,因为它总是将iOS设备连接起来并准备好进行访问。当iTunes关闭并重新启动时,设备需要时间与iTunes完全连接,这往往会破坏Automator应用程序的流量。

此时我可以进入终端,转到app文件的位置并运行以下命令[示例]:

打开automator.app (将' automator.app '替换为您的文件名称)

如果您和我一样,并且您在jenkins中运行此命令,则需要运行以下命令:

  1. 打开[location] / [your_app_name.app]
  2. 睡30
  3. 出于某种原因,automator应用程序需要休​​眠时间才能完成所有录制的操作。

    另外,我相信你也可以写一个AppleScript来做所有这些但是我讨厌AppleScript并且采取了简单的方法!

答案 3 :(得分:2)

答案 4 :(得分:2)

如果应用程序在其沙箱中运行,则无法执行此操作。在越狱手机上你可以执行reboot shell命令。