iphone - 来自 Cydia 的应用程序的 Settings.bundle 和钥匙串(keychain)不起作用

标签 iphone objective-c ios jailbreak cydia

我正在开发与 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 .

And here

And here

您应该让您的应用程序依赖于 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/

相关文章:

iphone - 如何最好地存储 SNMP 消息并将其发送到 ios?

ios - iPhone:如何使用 Xcode 向 Web 服务发送 HTTP 请求

iphone - 添加类别并出现 35 个链接器错误

ios - 如何防止我的游戏访问麦克风?

iphone - 在 iPhone 沙箱中查找文件

iphone - 为了避免苹果拒绝,我的应用程序最重要的是什么?

iphone - 从 viewController 内的 tableview 推送 viewController 不起作用

ios - UIScrollView 和 Storyboard

ios - 将 CALayer 放在 UIButton 层堆栈的最底部

iphone - ZUUIRevealController 与 UITabBarController 而不是 UINavigationController