如何更改我的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
权利。
把这个文件放在哪里并不重要。 关键是:
- 您将需要修改Xcode的
SDKSettings.plist
文件, 如下所示 。CODE_SIGNING_REQUIRED
应该设置为NO
。 - 不要在Xcode中对应用程序进行编码。 在“ 生成设置”中 ,确保代码符号标识设置为“ 不要代码符号” 。
- 之后,然后build立您的应用程序的iOS设备 (不是模拟器!),然后转到您的Mac上的输出文件所在的目录。 对于名为
HelloWorld
的应用程序,您正在寻找HelloWorld.app
文件夹。 它可以根据您的configuration而有所不同,所以我不打算告诉你在哪里。 如果有疑问,请使用命令行find
命令。 - 从这个位置下载
ldid
,或者从这里下载 。 - 将entitlements.xml文件复制到
HelloWorld.app
所在的目录中。 (注意:你不必在这里…如果你把它放在别的地方,只需调整下面给出的命令行)。 - 将目录切换到您的entitlements.xml文件所在的目录。
- 使用此命令伪造代码签名 :
$ldid -Sentitlements.xml HelloWorld.app/HelloWorld
之后,您需要传输整个HelloWorld.app文件夹,以在您的设备上安装应用程序。 有很多方法可以做到这一点,听起来你已经有了一个方法。
我有一个脚本的整个过程设置,使其更容易。
注意:我没有说明这个权利是否是在iOS 6上使用BKSDisplayServicesSetScreenBlanked()
的正确权利。我还没有testing过。 我知道这个授权可以让你在较低的iOS版本上使用SBDimScreen()
。 但是,这个答案只是如何添加这种越狱应用程序的权利的描述。
权利是在Xcode项目文件中设置的,或者是在Xcode项目select的授权文件中设置的。
查看“摘要”或“构build阶段”中的项目设置以获取权利文件的设置或名称