是的,你可以这样做。只需修改应用程序的 Info.plist 文件(并可能重新启动)。
在越狱设备上,修改 App Store 应用的 Info.plist 文件不会导致应用签名出现问题。
我想您可以尝试找到一种以编程方式执行此操作的方法,但老实说,我不知道除了脚本之外还需要其他任何东西。你只是在做一次修改,对吧?所以,对我来说,这听起来像是简单地编写这个修改的脚本,然后把它放在你的“调整”包DEBIAN/preinst
或DEBIAN/postinst
文件中就足够了。
我有几个想法:
1.默认情况下,您的 Info.plist 文件将是二进制文件,这使得编辑变得更加困难(通过脚本)。这可以通过在修改 plist 文件之前发出此命令来轻松解决:
plutil -convert xml1 Info.plist
从您的应用程序.app
目录中。这会将 Info.plist 保留为文本文件。如果你没有plutil
,请告诉我,我可以追踪哪个 Cydia 包包含它。
注意:您不必在编辑后将 plist 转换回二进制文件。文本 plist 也是有效的。
2.您可以选择将修改后的 Info.plist 与您的 Debian 软件包捆绑在一起,并简单地将 App Store 版本替换为调整后的版本。但是,您必须担心版本号以及该文件中您使用新版本更新的任何其他属性。在这种情况下,简单地将 Info.plist 的一个版本复制到.app
目录中可能不适用于所有版本。因此,您可能需要检测您拥有的版本,或在 plist 文件中搜索
<key>UIBackgroundModes</key>
并在那里插入VOIP模式。我不擅长使用sed
and之类的工具awk
,如果您需要有关该部分的帮助,您可能可以在这里提出一个简单的脚本问题......我知道 iOS ......脚本......不太好 :)
3.如果您的脚本由于某种原因需要检测 Info.plist 中的应用程序版本,则此命令行将执行此操作:
plutil -key CFBundleVersion Info.plist
注意:虽然可能有一个 Private API 可以做到这一点,但如果没有. 我很难想象 Apple 会看到这样做的原因,如果他们没有看到这样做的理由,可能没有 API(公共或私有)。通常,您UIBackgroundModes
在编译时决定。