在 Mac App Store 应用程序中签名库

Posted

技术标签:

【中文标题】在 Mac App Store 应用程序中签名库【英文标题】:Signing libraries in Mac App Store app 【发布时间】:2011-10-29 02:31:22 【问题描述】:

我刚刚向 Mac App Store 提交了一个使用一些外部动态库的应用。

我收到一封来自 Apple 的电子邮件:

无效签名 - 可执行的 something.app/Contents/Frameworks/some.dylib 未签名,签名无效,或未使用 Apple 提交证书签名。有关详细信息,请参阅代码签名和应用程序沙盒指南。

问题当然是因为我只签署了“我的”可执行文件,而不是库。

即使它们不是由我编写的,也对库进行签名是常见/良好的做法吗?

【问题讨论】:

【参考方案1】:

认为对文件进行数字签名:

    一种验证该文件完整性的方法,从而可以检测它是否被修改;

    一种验证谁发布该文件的方法,这与编写相应的源代码不同。您正在证明确实是您发送了该文件。

由于动态库包含可执行代码,因此最好对它们进行数字签名(在某些情况下,例如 MAS,这是强制性的),其原因与您签署主可执行文件的原因相同:确保您的应用程序完全符合您的要求(只有你)已经从你的构建机器发货,没有任何变化。一个正在运行的程序包括主可执行文件和所有加载的库。如果您只对主可执行文件进行签名,而对动态库不签名,则可以更改动态库(甚至替换它们),从而改变程序的功能。

【讨论】:

以上是关于在 Mac App Store 应用程序中签名库的主要内容,如果未能解决你的问题,请参考以下文章

Mac App Store应用签名和pkg签名(必须签名后才能销售)

Mac 应用程序 |代码签名 |不通过 Mac App Store 分发 [关闭]

Mac App Store 权利 - 代码对象根本没有签名

提交到 Mac App Store 时不断为应用程序的安装程序提供“无效签名”

Unity 之 上传Mac App Store过程详解

APP公布到应用市场(苹果APP STORE+安卓各大应用市场)