16

我需要运行以下代码来关闭我的 iphone 屏幕。

在 iOS6 上:

void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked");

然后使用:

BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim

它不起作用。有人告诉我,我需要com.apple.backboard.client授权才能在我的 iPhone 上工作。我不知道如何设置这些权利。我见过几种设置权利的方法,但它们让我很困惑,比如这个。

是的,您确实需要对权利进行代码签名。但是,不,它不必与越狱手机上的 Apple 证书一起使用。您可以通过下载 ldid 可执行文件来伪造代码签名,然后执行

cd MyAppName.app 
ldid -Sentitlements.xml MyAppName

假设您的应用程序名为 MyAppName,并且您创建了权利文件 entitlements.xml。如果您使用 ldid 伪造代码签名,我相信此权利文件对您有用。

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
 "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">
   <dict>
     <key>com.apple.backboard.client</key>
     <true/>
   </dict> 
</plist>

即使使用上述方法,我将上述权利文件放在哪里?

4

2 回答 2

22

对于越狱应用程序/权利,你需要做这样的事情。首先,创建一个名为entitlements.xml(或任何你喜欢的)的文件:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>com.apple.backboard.client</key>
    <true/>
  </dict>
</plist>

如果需要,您可以添加更多权利。此示例文件只是授予应用程序com.apple.backboard.client权利。

你把这个文件放在哪里并不重要。关键是:

  1. 您将需要修改 Xcode 的SDKSettings.plist文件,如此处所示CODE_SIGNING_REQUIRED应设置为NO
  2. 不要在 Xcode 中对您的应用程序进行代码签名。在Build Settings中,确保代码签名标识设置为Don't Code Sign
  3. 在为iOS 设备(不是模拟器!)构建应用程序之后,然后转到 Mac 上输出文件所在的目录。对于名为 的应用程序,您正在寻找该文件夹。它可能因您的配置而异,因此我不会费心告诉您它在哪里。如果有疑问,请使用命令行命令。HelloWorldHelloWorld.appfind
  4. 从此位置下载ldid预先构建的,或从此处作为源下载。
  5. 将 entitlements.xml 文件复制到与 where is 相同的目录中HelloWorld.app。(注意:你不必在这里拥有它......如果你把它放在其他地方,只需调整我在下面显示的命令行)。
  6. 将目录更改为您的 entitlements.xml 文件所在的目录。
  7. 使用此命令伪造代码签名
$ldid -Sentitlements.xml HelloWorld.app/HelloWorld

在那之后,您需要传输整个 HelloWorld.app 文件夹以在您的设备上安装该应用程序。有很多方法可以做到这一点,听起来你已经有办法了。

我用脚本设置了整个过程,以使其更容易。

注意:我没有说明此权利是否是用于BKSDisplayServicesSetScreenBlanked()在 iOS 6 上调用的正确权利。我尚未对此进行测试。我确实知道此权利允许您SBDimScreen()在较低的 iOS 版本上使用。但是,这个答案只是对如何为越狱应用程序添加这种权利的描述。

于 2013-02-14T22:29:45.593 回答
-1

权利在 Xcode 项目文件中设置或在 Xcode 项目选择的权利文件中设置。

在“摘要”或“构建阶段”中的项目设置中查找设置或权利文件的名称

于 2013-02-14T10:24:37.083 回答