我正在开发与 Cydia 一起分发的应用程序。因此它安装在/Applications 文件夹中,而不是像通常的 AppStore 应用程序一样安装在/var/mobile/Applications/中。而且我认为安装给我带来了一些大问题。 起初,使用著名的 Apple 的 KeychainItemWrapper 进行钥匙串(keychain)读写根本不起作用。 另外,我的 settings.bundle 也不起作用。应用设置不会显示在 Settings.app 中。
当我在 Simulator 中测试应用程序或什至将它从 Xcode 直接部署到设备(它被部署到/var/mobile/Applications/)时,一切都很顺利。
我尝试将已安装的 .app 移动到 var/mobile/Applications/XXXXXX/myapp.app 并将 mobile:mobile 作为它的所有者。它没有帮助。
有什么解决方案可以使这项工作正常进行吗?
最佳答案
设置包
越狱应用的设置略有不同。您需要做一些与普通 Settings.bundle 相似的事情,但也有区别。
参见 here for some information on that .
您应该让您的应用程序依赖于 preferenceloader
包,它有助于越狱应用程序管理设置。所以,您的 DEBIAN/control 文件中会有类似这样的内容:
package: com.mycompany.MyApp
Name: MyApp
Version: 2.2-2
Architecture: iphoneos-arm
Depends: preferenceloader
Description: Do something for jailbreak iPhones
...
钥匙串(keychain)
为了使钥匙串(keychain)适用于我的应用程序,我需要将权利 添加到我的二进制文件中。我发现需要哪些权利的方法是首先以正常方式构建应用程序(不是越狱应用程序,只是使用 Xcode 的普通第 3 方应用程序商店应用程序)。然后,我检查了 Xcode 构建的二进制文件中的权利:
ldid -e MyApp.app/MyApp
然后将这些权利拼接成一个新的 entitlements.xml 文件。 See here for an example of applying entitlements .我相信您的应用程序的权利应如下所示:
<key>application-identifier</key>
<string>L44W4W8ABC.com.mycompany.MyApp</string>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.team-identifier</key>
<string>L44W4W8ABC</string>
有可能不需要这种添加权利的方法。有关其他选项,请参阅问题下方的评论。但是,由于其他原因我正在添加其他权利,并且无法通过 Xcode 执行此操作。
关于iphone - 来自 Cydia 的应用程序的 Settings.bundle 和钥匙串(keychain)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886362/