我在 Cydia 上托管的应用程序有问题。用户抱怨应用程序在启动时崩溃。该应用程序使用CoreData,我认为它与此有关。奇怪的是,它在测试时使用模拟器或在我的设备上运行良好。但是一旦通过 Cydia 安装它就会崩溃。
事实证明,使用 SBSettings 中的“修复用户目录权限”可以解决此问题。
现在我能做些什么呢?
我刚刚与 BigBoss 的存储库人员讨论了这个问题。
我从来没有真正得到明确的答案,但在我看来,当 Cydia 安装您的应用程序时,它不一定(明确地)为您的应用程序设置所有权。这对我来说似乎很奇怪。就我而言,他们正在测试安装我的应用程序,并看到它归 user/group = { 1000 / 100 } 所有,这是我准备 .deb 包的机器上的 linux 用户 ID 和组 ID!
如果我构建一个 .deb 包,将其部署到我自己的本地测试存储库,然后使用 Cydia 安装它(指向我自己的存储库),我也可以看到相同的行为。
无论如何,我向他们解释了这一点,他们做了一些事情来解决它(我没有更多的东西)。
但是,另一种选择是手动修复安装后脚本中的权限。在您的 .deb 包中,您将拥有以下文件夹和文件结构:
如果你把它放在你的postinst脚本中,我认为它应该立即解决这个问题,之后不必进入 SBSettings:
#!/bin/bash
chown -R root.wheel /Applications/MyAppName.app/
exit 0
例如,如果您需要创建其他目录,您可以在脚本中执行更多操作。但是,以上内容至少足以更改 .app 目录本身的所有权。
这个 BigBoss 链接建议在您的应用程序代码中创建额外的目录,并指出安装程序以root身份运行,而您的应用程序通常以用户mobile运行。根据您在做什么,最好在postinst
(根)或应用程序(移动)中修复所有权/权限。