如何更改我的iOS应用程序的权利?

我需要运行下面的代码来closures我的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上工作。 我不知道如何设置这些权利。 我已经看到了设置权利的几种方式,但是像这样,我很困惑。

是的,您确实需要对权利进行编码签名。 但是,不,它不需要在越狱手机上获得苹果证书。 您可以通过下载ldid可执行文件来伪造代码签名,并执行此操作

 cd MyAppName.app ldid -Sentitlements.xml MyAppName 

假设您的应用程序名为MyAppName,并且您创build了权利文件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> 

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

对于越狱应用程序/权利 ,你需要做这样的事情。 首先,创build一个名为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中对应用程序进行编码。 在“ 生成设置”中 ,确保代码符号标识设置为“ 不要代码符号”
  3. 之后,然后build立您的应用程序的iOS设备 (不是模拟器!),然后转到您的Mac上的输出文件所在的目录。 对于名为HelloWorld的应用程序,您正在寻找HelloWorld.app文件夹。 它可以根据您的configuration而有所不同,所以我不打算告诉你在哪里。 如果有疑问,请使用命令行find命令。
  4. 从这个位置下载预先构build的ldid ,或者从这里下载 。
  5. 将entitlements.xml文件复制到HelloWorld.app所在的目录中。 (注意:你不必在这里…如果你把它放在别的地方,只需调整下面给出的命令行)。
  6. 将目录切换到您的entitlements.xml文件所在的目录。
  7. 使用此命令伪造代码签名 :
 $ldid -Sentitlements.xml HelloWorld.app/HelloWorld 

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

我有一个脚本的整个过程设置,使其更容易。

注意:我没有说明这个权利是否是在iOS 6上使用BKSDisplayServicesSetScreenBlanked()的正确权利。我没有testing过。 我知道这个授权可以让你在较低的iOS版本上使用SBDimScreen() 。 但是,这个答案只是一个如何添加这种越狱应用程序的权利的描述。

权利是在Xcode项目文件中设置的,或者是在Xcode项目select的授权文件中设置的。

查看“摘要”或“构build阶段”中的项目设置以获取权利文件的设置或名称