【问题标题】:Invalid Signature. A sealed resource is missing or invalid (Using RoboVM with Android Studio)无效的签名。密封资源丢失或无效(将 RoboVM 与 Android Studio 结合使用)
【发布时间】:2017-06-15 18:50:30
【问题描述】:

我已经完成了一个 LibGDX 应用程序,可以将它放到 Apple 应用程序商店中。但是,当我使用 XCode 附带的 Application Loader (XCode->Open Developer Tool->Application Loader) 将其放在 iTunes Connect 上时,我会收到以下错误日志:

ERROR ITMS-90035: "Invalid Signature. A sealed resource is missing or invalid. The file at path [IOSLauncher.app/IOSLauncher] is not properly signed. Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level). Additionally, make sure the bundle you are uploading was built using a Release target in Xcode, not a Simulator target. If you are certain your code signing settings are correct, choose "Clean All" in Xcode, delete the "build" directory in the Finder, and rebuild your release target. For more information, please consult https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html"
ERROR ITMS-90022: "Missing required icon file. The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format for iOS versions >= 7.0."
ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '76x76' pixels, in .png format for iOS versions >= 7.0."
ERROR ITMS-90023: "Missing required icon file. The bundle does not contain an app icon for iPad of exactly '152x152' pixels, in .png format for iOS versions >= 7.0." 

最后三个错误是我可以修复的(据我所知,这不是我担心的第一个错误的原因)。

我有最新版本的 XCode 和 RoboVM 插件(今天刚刚重新安装),我有一个 iOS 配置文件(分发)显示here。捆绑包 ID 与应用 ID 匹配。此外,我的所有证书都已下载并在我的 KeyChain 上。

这些是我使用 Android Studio 中的 RoboVM 构建 IPA 时使用的设置:image here 如您所见,我使用(我认为的)正确的签名证书和配置文件。

以下是我拥有的其他一些可能有用的文件:

robovm.properties:

app.version=1.0
app.id=com.mcfadden.raindodge
app.mainclass=com.samuel.doubledodge.IOSLauncher
app.executable=IOSLauncher
app.build=1
app.name=Rain Dodge

Info.plist.xml:

<?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>CFBundleDevelopmentRegion</key>
    <string>en</string>
    <key>CFBundleDisplayName</key>
    <string>${app.name}</string>
    <key>CFBundleExecutable</key>
    <string>${app.executable}</string>
    <key>CFBundleIdentifier</key>
    <string>${app.id}</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>${app.name}</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>${app.version}</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>${app.build}</string>
    <key>LSRequiresIPhoneOS</key>
    <true/>
    <key>MinimumOSVersion</key>
    <string>8.0</string>
    <key>UIRequiresFullScreen</key>
    <string>YES</string>
    <key>UIViewControllerBasedStatusBarAppearance</key>
    <false/>
    <key>UIStatusBarHidden</key>
    <true/>
    <key>UIDeviceFamily</key>
    <array>
        <integer>1</integer>
        <integer>2</integer>
    </array>
    <key>UIRequiredDeviceCapabilities</key>
    <array>
        <string>armv7</string>
        <string>opengles-2</string>
    </array>
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
        <string>UIInterfaceOrientationLandscapeRight</string>
    </array>
    <key>CFBundleIcons</key>
    <dict>
        <key>CFBundlePrimaryIcon</key>
        <dict>
            <key>CFBundleIconFiles</key>
            <array>
                <string>Icon</string>
                <string>Icon-72</string>
            </array>
        </dict>
    </dict>
</dict>
</plist>

Robovm.xml:

<config>
  <executableName>${app.executable}</executableName>
  <mainClass>${app.mainclass}</mainClass>
  <os>ios</os>
  <arch>thumbv7</arch>
  <target>ios</target>
  <iosInfoPList>Info.plist.xml</iosInfoPList>
  <resources>
    <resource>
      <directory>../android/assets</directory>
      <includes>
        <include>**</include>
      </includes>
      <skipPngCrush>true</skipPngCrush>
    </resource>
    <resource>
      <directory>data</directory>
    </resource>
  </resources>
  <forceLinkClasses>
    <pattern>com.badlogic.gdx.scenes.scene2d.ui.*</pattern>
    <pattern>com.badlogic.gdx.graphics.g3d.particles.**</pattern>
    <pattern>com.android.okhttp.HttpHandler</pattern>
    <pattern>com.android.okhttp.HttpsHandler</pattern>
    <pattern>com.android.org.conscrypt.**</pattern>
    <pattern>com.android.org.bouncycastle.jce.provider.BouncyCastleProvider</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.BC$Mappings</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi</pattern>
    <pattern>com.android.org.bouncycastle.jcajce.provider.keystore.bc.BcKeyStoreSpi$Std</pattern>
    <pattern>com.android.org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi</pattern>
    <pattern>com.android.org.bouncycastle.crypto.digests.AndroidDigestFactoryOpenSSL</pattern>
    <pattern>org.apache.harmony.security.provider.cert.DRLCertFactory</pattern>
    <pattern>org.apache.harmony.security.provider.crypto.CryptoProvider</pattern>
  </forceLinkClasses>

  <libs>
      <lib>z</lib>   
  </libs>
  <frameworkPaths>
    <path>libs</path>
  </frameworkPaths>
  <frameworks>
    <framework>UIKit</framework>
    <framework>OpenGLES</framework>
    <framework>QuartzCore</framework>
    <framework>CoreGraphics</framework>
    <framework>CoreMotion</framework>
    <framework>OpenAL</framework>
    <framework>AudioToolbox</framework>
    <framework>AVFoundation</framework>
    <framework>GLKit</framework>
    <framework>CoreTelephony</framework>
    <framework>CoreMedia</framework>
    <framework>CoreVideo</framework>
    <framework>MessageUI</framework>
    <framework>CFNetwork</framework>
    <framework>MobileCoreServices</framework>
    <framework>EventKit</framework>
    <framework>EventKitUI</framework>
    <framework>AdSupport</framework>
    <framework>StoreKit</framework>
    <framework>SystemConfiguration</framework>
    <framework>GoogleMobileAds</framework>
  </frameworks>
</config>

如果您需要更多信息,请发表评论,我会提供。我完全不知道为什么这不起作用。谢谢你的帮助。

【问题讨论】:

  • 您找到解决方案了吗?我有同样的问题。-
  • 我遇到了同样的问题。有什么解决办法吗?
  • 跟我一样 - 有什么解决办法吗?

标签: ios xcode robovm application-loader


【解决方案1】:

我不知道它是否对你有帮助,但对我来说,删除现有的 IPA 构建文件就足够了。我的 IPA 文件名是“IOSLauncher.ipa”,所以我不得不删除“IOSLauncher.app”和“ IOSLauncher.app.dSYM”目录和“IOSLauncher.ipa”文件。

【讨论】:

    【解决方案2】:

    我有 Xcode 版本 9.2 (9C40b),我使用 2 台 iMac,一台装有 High Sierra 10.13.1,另一台装有 塞拉利昂 10.12.6。销毁所有证书并重建它们以尝试解决此阻塞错误后:

    无效签名 - 密封资源丢失或无效。路径中的文件未正确签名。确保您已使用分发证书而不是临时证书或开发证书签署您的应用程序..

    我已将我的项目从主 APFS(Apple 文件系统)分区移动到装有 High Sierra 的 iMac 中的 HFS+ 分区(我使用了备份分区但您也可以使用 HFS+ 格式的 USB 笔)。我认为这是 Apple 的错误,所以我添加了 open radar bug 报告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-31
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2014-12-16
      相关资源
      最近更新 更多