验证应用商店分发的代码签名的奇怪错误

时间:2010-11-15 23:15:57

标签: ios app-store code-signing appstore-approval

在构建我的应用以分发到应用商店时,我收到以下警告:

warning: Application failed codesign verification.  The signature was invalid, or it was not signed with an Apple submission certificate. (-19011)  
Executable=/Users/tijszwinkels/Dropbox/Documents/projects/iphone/BatteryLogger Pro/build/App-store distribution-iphoneos/BatteryLogger Pro.app/BatteryLogger Pro
codesign_wrapper-0.7.10: using Apple CA for profile evaluation    
Illegal entitlement key/value pair: keychain-access-groups, <CFArray 0x104270 [0xa0376ee0]>{type = mutable-small, count = 1, values = (
    0 : <CFString 0x104170 [0xa0376ee0]>{contents = "eu.TinkerTank.BatteryLoggerPro"}
)}
Illegal entitlement key/value pair: application-identifier, eu.TinkerTank.BatteryLoggerPro
 - (null)

warning: Application failed codesign verification. The signature was invalid, or it was not signed with an Apple submission certificate. (-19011) Executable=/Users/tijszwinkels/Dropbox/Documents/projects/iphone/BatteryLogger Pro/build/App-store distribution-iphoneos/BatteryLogger Pro.app/BatteryLogger Pro codesign_wrapper-0.7.10: using Apple CA for profile evaluation Illegal entitlement key/value pair: keychain-access-groups, <CFArray 0x104270 [0xa0376ee0]>{type = mutable-small, count = 1, values = ( 0 : <CFString 0x104170 [0xa0376ee0]>{contents = "eu.TinkerTank.BatteryLoggerPro"} )} Illegal entitlement key/value pair: application-identifier, eu.TinkerTank.BatteryLoggerPro - (null)

提交后,我收到相同的“应用程序失败的代码签名验证”错误。

这是据说出错的文件:

但是,我还没有配置任何'手动'的Entitlements.plist文件。因此,此文件自动生成于:/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.1.sdk/Entitlements.plist

<?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>eu.TinkerTank.BatteryLoggerPro</string>
    <key>keychain-access-groups</key>
    <array>
        <string>eu.TinkerTank.BatteryLoggerPro</string>
    </array>
</dict>
</plist>

关于这里可能出现什么问题的任何想法?

2 个答案:

答案 0 :(得分:1)

在我的情况下, keychain-access-groups 是错误的。容易错过,Filemerge不得不把它交给我。

不正确:

<key>keychain-access-groups</key>
<array>
    <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
</array>

正确:

<key>keychain-access-groups</key>
<array>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
</array>

完整正确的文件:

<?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>com.apple.developer.ubiquity-container-identifiers</key>
    <array>
            <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
    <key>com.apple.developer.ubiquity-kvstore-identifier</key>
    <string>$(TeamIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

答案 1 :(得分:0)

一位朋友(感谢Martijn!)发现此文件通常包含捆绑种子ID(App id前缀)。

手动创建Entitlements.plist并填写变量允许我提交。

这是我的Entitlements.plist

<?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>78Z2PTX5KR.eu.TinkerTank.BatteryLoggerPro</string>
    <key>keychain-access-groups</key>
    <array>
        <string>78Z2PTX5KR.eu.TinkerTank.BatteryLoggerPro</string>
    </array>
</dict>
</plist>

其中'78Z2PTX5KR'是捆绑种子ID,eu.TinkerTank.BatteryLoggerPro是捆绑标识符。

这确实为我解决了问题,但$(AppIdentifierPrefix)应该自动解决。我做错了什么?