dav*_*ids 6 xcode itunesconnect code-signing ios
我正在尝试将iOS应用程序推送到iTunes Connect,但是当我尝试在Xcode中验证它时出现此错误:
Application failed codesign verification. The signature was invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate
Run Code Online (Sandbox Code Playgroud)
我见过很多与同一问题相关的问题,但那些对我不起作用.我遵循Apple 技术说明TN2250的每一步.我检查在构建设置中是否选择了发布的分发配置文件(尝试使用通配符和应用程序的自定义配置文件),架构是正确的.为了确保应用程序已使用该配置文件进行签名,我使用该codesign -d -vvvv MyApp.app命令,并得到如下内容:
Executable=/Users/myuser/Library/Developer/Xcode/Archives/2012-09-17/myapp 17-09-12 09.27.xcarchive/Products/Applications/MyApp.app/MyApp
Identifier=com.example.MyApp
...
Authority=iPhone Distribution: My Company
Authority=Apple Worldwide Developer Relations Certification Authority
Authority=Apple Root CA
...
Run Code Online (Sandbox Code Playgroud)
我检查了权利,我没有修改过security cms -D -i MyApp.app/embedded.mobileprovision,得到这个:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ApplicationIdentifierPrefix</key>
<array>
<string>PR3F1X</string>
</array>
<key>CreationDate</key>
<date>2012-09-17T07:20:35Z</date>
<key>DeveloperCertificates</key>
<array>
<data>
...
</data>
</array>
<key>Entitlements</key>
<dict>
<key>application-identifier</key>
<string>PR3F1X.com.example.MyApp</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>PR3F1X.*</string>
</array>
</dict>
<key>ExpirationDate</key>
<date>2013-09-16T07:20:35Z</date>
<key>Name</key>
<string>PROFILE NAME</string>
<key>TeamIdentifier</key>
<array>
<string>PR3F1X</string>
</array>
<key>TimeToLive</key>
<integer>364</integer>
<key>UUID</key>
<string>...</string>
<key>Version</key>
<integer>1</integer>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
这个应用程序的包ID看起来像com.example.MyApp,我认为上面的情况可能是问题,但改变了它们,它没有做.之后,我撤销了我的证书,获得了新的mobileprovision配置文件并再次完成了整个过程,但没有成功.
我正在使用的软件是Mac OS X 10.7.4的Xcode 4.3.2
我看不出问题出在哪里,我错过了什么.
编辑1:修改捆绑包ID是否需要手动更改其他设置?
编辑2:我刚从头开始制作一个示例应用程序,使用相同的证书对其进行签名,一切顺利,所以似乎问题出在配置中.我试图看到这两个项目设置之间的差异,但唯一值得注意的是第一个只有iPad而且它使用了几个PhoneGap插件.
我有同样的问题。您必须检查您的应用程序签名,请参阅如何检查我的应用程序签名上的权利,如下所示:
codesign -d --entitlements - /path/to/MyGreatApp.app
如果你得到类似的信息,我OK不知道你有什么错误:
Executable=/path/to/MyGreatApp.app/MyGreatApp
??qq?<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>ABC123DE45.com.appleseedinc.mygreatapp</string>
<key>get-task-allow</key>
<false/>
<key>keychain-access-groups</key>
<array>
<string>ABC123DE45.com.appleseedinc.mygreatapp</string>
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
但如果你只得到:
Executable=/path/to/MyGreatApp.app/MyGreatApp
那么,就有问题了。可能是您在使用工具退出代码时损坏了权限codesign。
我已采取后续步骤来修复它:
创建配置文件权利文件:
安全 cms -D -i /path/to/the.app/embedded.mobileprovision > Provision_entitlements.plist
打开 Provision_entitlements.plist 和 enterprise.plist。修改 enterprise.plist 的设置,它应该等于provision_entitlements.plist->Entitlements 属性。保存更改。
退出应用程序时,将参数 --entitlements enterprise.plist 添加到协同设计工具中。
codesign -fs "iPhone Distribution: My Company" APP_DIRECTORY --entitlements enterprise.plist
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
6848 次 |
| 最近记录: |