1

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

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)

提交后,我收到相同的“应用程序未通过代码验证”错误。

这是据说是错误的文件:

<?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>

但是,我没有配置任何“手动”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>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

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

4

2 回答 2

1

就我而言,钥匙串访问组是错误的。很容易错过,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>
于 2012-11-22T17:59:29.213 回答
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)应该自动解决。有什么我做错了吗?

于 2010-11-15T23:26:44.750 回答