【问题标题】:IBM Worklight/MobileFirst 6.x/7.0 - "Code object is not signed at all." error with buildtime.sh scriptIBM Worklight/MobileFirst 6.x/7.0 - “代码对象根本没有签名。” buildtime.sh 脚本出错
【发布时间】:2015-07-10 20:55:09
【问题描述】:

将我的 Worklight 应用程序上传到 iTunes 时出错。

应用程序验证失败并出现以下错误:

签名无效。代码对象根本没有签名。二进制在 路径 [MyApp.app/buildtime.sh] 包含无效签名。确保 您已经使用分发证书签署了您的应用程序,而不是 临时证书或开发证书。验证 Xcode 中的代码签名设置在目标级别是正确的(其中 覆盖项目级别的任何值)。此外,请确保 您上传的包是使用 Xcode 中的 Release 目标构建的, 不是模拟器目标。如果您确定您的代码签名设置 是正确的,在Xcode中选择“Clean All”,删除“build”目录 在 Finder 中,并重建您的发布目标。了解更多信息, 请咨询 https://developer.apple.com/library/ios/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html

我的问题是我在 2 周前提交了相同的申请,并且运行良好。今天的版本只更改了 www/ 文件夹内容,失败并出现此错误。

我用谷歌搜索了这个问题,找到了Codesign of Dropbox API fails in Xcode 4.6.3: "code object is not signed at all",但我尝试添加 --deep 选项,但这对我不起作用。

这与 buildtime.sh 脚本有关吗?当我读到它时,它似乎只是更新了 worklight.plist 文件中的构建时间值:

#!/bin/bash
# Licensed Materials - Property of IBM
# 5725-I43 (C) Copyright IBM Corp. 2006, 2013. All Rights Reserved.
# US Government Users Restricted Rights - Use, duplication or
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp.

# Update buildtime in project 
echo -n ${TARGET_BUILD_DIR}/${PRODUCT_NAME}.app/worklight.plist | xargs -0
/usr/libexec/PlistBuddy -c "Set :buildtime `date +\"%s\"`"

此外,在谷歌搜索问题时,我在以下位置发现了一些类似问题: https://github.com/AppGyver/steroids/issues/918 他们似乎将混合应用程序与 sh 脚本一起使用,这让我相信问题与 buildtime.sh 脚本有关。

我删除了 buildtime 脚本,并删除了我的 Xcode 项目上的 run script 阶段,这次没有报错。

这样做安全吗?

有人在 Worklight 项目中遇到过同样的错误吗?是否与 buildtime.sh 脚本或 Apple 新政策有关?

【问题讨论】:

    标签: ios xcode ibm-mobilefirst codesign


    【解决方案1】:

    MFP 开发者中心关于此问题的博文:https://developer.ibm.com/mobilefirstplatform/2015/05/01/recent-changes-in-apples-app-submission-process/

    问题在于 Apple 现在也在检查应用程序包(.ipa 文件)中包含的 .sh 文件是否已签名。

    在基于 Worklight/MobileFirst Platform 的应用程序中,恰好有一个这样的 .sh 文件,buildtime.sh,它被添加到包中。该文件没有理由出现在生成的包中。该文件仅在构建时需要,而不是运行时。

    有一个简单的解决方法:删除不要删除)Xcode 中目标配置中的buildtime.sh 文件(在构建阶段> 复制捆绑资源中)。

    还有来自IBM Fix Central 的可用 iFix(IBM APAR PI39826、Worklight/MFP Studio/CLI;无需更改服务器):

    • 6.0.0.2-IF201504301500
    • 6.1.0.2-IF201504301501
    • 6.2.0.1-IF201504301522
    • 6.3.0.0-IF201504301455
    • 7.0.0.0-IF201504301556

    此 iFix 仅适用于:

    • 新创建的应用程序
    • 其本机文件夹被删除并重新生成的应用程序

    通过使用 iFix,这些应用程序将不会在目标配置中包含 buildtime.sh 文件。

    现有的应用程序必须只简单地从目标配置中删除 .sh 文件,如上所述,然后在 Xcode 中重新构建。

    【讨论】:

    • 那么你确认如果我删除了buildtime.sh脚本和与之相关的run script阶段,然后提交到App Store,我就没有风险了吗? (我这样做后在设备上进行了测试,似乎还可以,但想知道提交的版本是否存在问题或被拒绝的风险)
    • 如果您从我的答案中指定的位置删除了 buldtime.sh,您应该没问题。不要从项目本身中删除它,只是在 Xcode 的 Build Phases 部分中的引用。
    • 我已经在 9 小时前提交了删除 buildtime.sh ,对这个提交的二进制文件有影响吗?
    • 如果您在没有 .sh 文件的情况下提交了它,那么如果这是您上次提交时遇到的唯一其他错误,则它应该通过;同样,重要的部分是从 Build Phases > Copy Bundle Resources 部分中删除引用)。如果您删除了文件并编译了项目并且它可以工作然后提交,那么它应该通过了 App Store 验证。
    猜你喜欢
    • 2015-08-22
    • 1970-01-01
    • 2015-08-19
    • 2014-07-05
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    相关资源
    最近更新 更多