在最近的一封电子邮件中详细介绍了10.10beta 5和10.9.5的看门人的变化之后,我立即用TN2206推荐的方法验证了我的应用程序。令我惊讶的是,由于我没有使用任何资源规则并建立在小牛的基础上,它失败了:
$ spctl -a -t exec -v /Applications/MyApp.app/
/Applications/MyApp.app/: rejected
source=obsolete resource envelope然后,我继续检查Xcode存档中提交的二进制文件,该文件立即被拒绝,但没有“过时的资源信封”警告。我想那是因为它是由提交证书签署的。
$ spctl -a -t exec -v Products/Applications/MyApp.app/
Products/Applications/MyApp.app/: rejected稍后,我检查了资源信封本身:
$ codesign -d -v /Applications/MyApp.app/
Executable=/Applications/MyApp.app/Contents/MacOS/MyApp
Identifier=my.app.id
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=14108 flags=0x200(kill) hashes=697+5 location=embedded
Signature size=4169
Info.plist entries=34
TeamIdentifier=not set
Sealed Resources version=1 rules=5 files=82
Internal requirements count=1 size=220然后提交的应用程序:
$ codesign -d -v Products/Applications/MyApp.app/
Executable=/Users/jorgepeixotovasquez/Library/Developer/Xcode/Archives/2014-07-09/myapp 09-07-14 00.34.xcarchive/Products/Applications/MyApp.app/Contents/MacOS/myApp
Identifier=my.app.id
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=14123 flags=0x0(none) hashes=697+5 location=embedded
Signature size=4393
Signed Time=09/07/2014 00:34:08
Info.plist entries=34
TeamIdentifier=F2XAAD6WWR
Sealed Resources version=2 rules=12 files=85
Internal requirements count=1 size=220如您所见,Mac下载的应用程序只有一个版本1的资源信封,即使提交了版本2的资源信封。可以肯定的是,我检查了我的/Application文件夹,发现我从Mac下载的每个应用程序都有一个版本1的信封,甚至苹果的信封。
有没有人知道这是否正常,也就是说,如果Mac在重新签署应用程序时,只添加一个版本的信封?
此外,这会否引起问题呢?
苹果会解决这个问题吗?
修复之后,我应该重新提交我的应用程序吗?
发布于 2014-08-27 19:15:26
这确实是个错误。打开雷达它是作为副本关闭的,这是打开的。
发布于 2014-08-06 07:02:29
版本指示符(1或2)更多地与使用了什么版本的OS有关,生成和签名代码。
资源信封版本1及2
(包含版本1或版本2资源信封的代码签名也分别称为版本1签名或版本2签名)
< OS v10.9 (版本1)
--resource-rules)来控制包中的哪些文件应该由代码签名来密封。(对10.9+不推荐)OS X v10.9+ (第2版)
若要确定代码签名具有哪个版本的资源信封,请使用codesign -dv
$ codesign -dv My.app/
[...]
Sealed Resources version=2 rules=15 files=53
[...]OSX10.9.5和约塞米蒂开发人员预览5中的更改
OS X版本10.9.5+更改
OS版本10.9或更高版本的:
--resource-rules标志或ResourceRules.plist。(您的应用程序将被拒绝)为了确保当前和即将发布的版本与网关管理员一起正常工作,在OS版本10.10 (Seed 5或更高版本)和OS版本10.9.5上进行测试。
默认情况下,spctl只接受开发者ID签名的应用程序和从Mac下载的应用程序。它将拒绝与Mac开发或发行证书签署的应用程序。
在应用程序上使用spctl,如下所示:
$ spctl -a -t exec -vv Foo.app这是如果您的应用程序的签名将被接受的输出:
Foo.app: accepted
source=Developer ID➣的源代码也可能是。
如果您的应用程序的签名只有一个过时的版本1资源信封,您将看到以下内容:
Foo.app: rejected
source=obsolete resource envelope注意:在运行OS小精灵时,有必要对代码进行签名,以获得版本2的签名。实际的代码签名机制是操作系统的一部分,而不是codesign工具。将codesign工具从小牛复制到旧的OS版本是行不通的。
发布于 2014-08-08 20:20:29
我提交的申请也有信封v2,它被苹果的v1所取代。
我将"*.dylib“放在”参考资料“文件夹中,完全没有签名。
验证嵌套库是否已签名:
codesign --display --verbose=4 library.dylib
library.dylib: code object is not signed at all 然而,这还不够。
为了修复它,我添加了额外的后构建codesign和pkg创建脚本。遵循这个教程
还要确保您的第三方框架结构正确(不要省略符号链接)。查看苹果框架结构指南
编辑:没有工作。包仍然在版本1中返回。知道吗?
https://stackoverflow.com/questions/25152451
复制相似问题