【问题标题】:Settings.bundle & keychain for applications from Cydia doesn't work来自 Cydia 的应用程序的 Settings.bundle 和钥匙串不起作用
【发布时间】:2012-08-09 15:04:55
【问题描述】:

我正在开发与 Cydia 一起分发的应用程序。因此它安装在 /Applications 文件夹中,而不是像通常的 AppStore 应用程序那样安装在 /var/mobile/Applications/ 中。而且我认为安装会给我带来一些巨大的问题。 起初,用著名的 Apple 的 KeychainItemWrapper 读写钥匙串根本不起作用。 另外,我的 settings.bundle 也不起作用。应用设置不显示在 Settings.app 中。

当我在 Simulator 中测试应用程序,甚至将其从 Xcode 直接部署到设备(部署到 /var/mobile/Applications/)时,一切都像魅力一样。

我尝试将已安装的 .app 移动到 var/mobile/Applications/XXXXXX/myapp.app 并让 mobile:mobile 成为它的所有者。它没有帮助。

任何解决方案可以使这项工作?

【问题讨论】:

  • 您是否对应用程序进行代码设计?钥匙串 api 依赖于代码签名
  • 是的,我签署了应用程序,但没有使用苹果提供的证书。我自己生成的。如果应用没有经过代码签名,它甚至无法在我的设备上启动。
  • 我发现,编码也需要设置权利。所以所有的问题都解决了。谢谢 2 所有。
  • @albicelestial 您是如何在您的 JB 应用程序上获得钥匙串访问权限的,因为我遇到了同样的问题。
  • 克里斯,您必须添加权利(选择您的项目,在摘要中向下滚动到底部并单击“权利”复选框,然后添加钥匙串访问组(如果默认情况下未添加))。在此操作之后 KeychainItemWrapper 工作正常。

标签: iphone objective-c ios jailbreak cydia


【解决方案1】:

设置包

越狱应用的设置略有不同。你需要做一些类似的事情,与普通的 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
...

钥匙链

为了使钥匙串适用于我的应用程序,我需要将 entitlements 添加到我的二进制文件中。我发现需要哪些权利的方法是首先以正常方式构建应用程序(不是越狱应用程序,只是使用 Xcode 的普通 3rd 方应用程序商店应用程序)。然后,我检查了 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>

这种添加权利的方法可能不是必需的。有关其他选项,请参阅您的问题下方的 cmets。但是,由于其他原因,我正在添加其他权利,并且无法通过 Xcode 做到这一点。

【讨论】:

  • 谢谢,我认为 PreferenceLoader 是使它工作的唯一方法。
  • @albicelestial,是的,PreferenceLoader 是我用于所有越狱应用程序的工具。
  • “preferenceloader”对 Keychain 包装器有帮助吗?
  • @Chris,不,偏好加载器对此无济于事。我认为他需要添加一个单独的权利 xml 文件(并使用 ldid -Sentitlements.xml 进行代码签名)。 See the Apple docs 关于权利和钥匙串访问。
猜你喜欢
  • 1970-01-01
  • 2011-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多