什么会导致“无效二进制"?没有来自 iTunes Connect 的电子邮件跟进? [英] What can cause "invalid binary" with no email followup from iTunes Connect?

查看:30
本文介绍了什么会导致“无效二进制"?没有来自 iTunes Connect 的电子邮件跟进?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图代表我的一位客户提交现有应用程序的更新,但我收到来自 iTunes Connect 的无效二进制"故障,但没有解释错误.我明天要离开 2 周没有网络访问的假期,所以我有点迫切需要一个解决方案.非常感谢任何见解.

I'm trying to submit an update of an existing application on behalf of one of my clients, and I'm getting "Invalid Binary" failures from iTunes Connect with no explanation of the error. I'm leaving on a 2 week vacation without network access tomorrow, so I'm a bit desperate for a solution. Any insights are greatly appreciated.

此更新更改了应用程序的名称并修复了一些小错误.我之前是通过 iTunes Connect 提交的,但我现在按照 Apple 的要求通过 Xcode 提交此更新.

This update changes the name of the application and fixes a few minor bugs. I did previous submissions via the iTunes Connect, but I'm submitting this update via Xcode as Apple now requires.

我将自己设置为该客户的技术联系人,因此当我通过 iTunes Connect 将新版本置于等待上传"状态时会收到通知.当我通过 Xcode 管理器验证二进制文件时,该工具最终报告二进制文件有效.当我通过 Xcode 管理器提交二进制文件时,它最终会返回并说二进制文件已成功上传.这两个步骤都需要一段时间(每个步骤可能需要 15 分钟),可能是因为应用程序包大小为 63 兆字节,包含数千个资源.

I set myself up as the technical contact for this client, so I receive a notification when I put the new version into a "Waiting for Upload" state via iTunes Connect. When I then validate the binary via the Xcode organizer, the tool eventually reports that the binary is valid. When I submit the binary via the Xcode organizer, it eventually comes back and says that the binary has been successfully uploaded. Both of these steps take a while (maybe 15 minutes each), probably because the app bundle is 63 megabytes with thousands of resources.

在接下来的一两个小时内,iTunes Connect 门户仍然报告该应用程序处于等待上传"状态.我相信在 Xcode 中完成上传和 iTunes Connect 中的状态更改之间存在一些延迟是正常的.这些小时的延迟似乎过分,但考虑到应用的大小,我想这并不完全令人惊讶.

For the next hour or two the iTunes Connect portal still reports that the application is in a "Waiting for Upload" state. I believe some latency is normal between the time when the upload completes in Xcode and when the state changes in iTunes Connect. These hours of latency seem excessive, but not entirely surprising I suppose, given the size of the app.

最终状态只是在 iTunes 连接中默默地更改为无效二进制".我知道 iTunes Connect 应该在发生这种情况时发送一封电子邮件来解释错误,但我没有收到任何消息,我的客户也没有收到任何消息.(我假设它应该发送给所有在 iTunes Connect 中标记为接收应用状态更改通知的用户.这个假设是否正确?)

Eventually the state just silently changes to "Invalid Binary" in iTunes connect. I understand that iTunes Connect is supposed to send out an email explaining the error when this happens, but I'm not receiving anything, nor is my client. (I assume it should go out to all users flagged for notification of app state changes in iTunes Connect. Is this assumption correct?)

以下是从我的 App Store Distribution 配置复制和粘贴的构建设置:

Here are the build settings copied and pasted from my App Store Distribution configuration:

ADDITIONAL_SDKS = 
ARCHS = $(ARCHS_STANDARD_32_BIT)
SDKROOT = iphoneos4.0
ONLY_ACTIVE_ARCH = YES
VALID_ARCHS = armv6 armv7
SYMROOT = /Users/cduhn/Documents/workspace/xcode_build_output
OBJROOT = $(SYMROOT)
CONFIGURATION_BUILD_DIR = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
CONFIGURATION_TEMP_DIR = $(PROJECT_TEMP_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
SHARED_PRECOMPS_DIR = $(CACHE_ROOT)/SharedPrecompiledHeaders
BUILD_VARIANTS = normal
DEBUG_INFORMATION_FORMAT = dwarf-with-dsym
ENABLE_OPENMP_SUPPORT = NO
GENERATE_PROFILING_CODE = NO
PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES
RUN_CLANG_STATIC_ANALYZER = NO
SCAN_ALL_SOURCE_FILES_FOR_INCLUDES = NO
VALIDATE_PRODUCT = NO
CODE_SIGN_ENTITLEMENTS = Entitlements.plist
CODE_SIGN_IDENTITY = 
CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution: Capturing Moments
CODE_SIGN_RESOURCE_RULES_PATH = 
OTHER_CODE_SIGN_FLAGS = 
STRIPFLAGS = 
ALTERNATE_GROUP = $(INSTALL_GROUP)
ALTERNATE_OWNER = $(INSTALL_OWNER)
ALTERNATE_MODE = $(INSTALL_MODE_FLAG)
ALTERNATE_PERMISSIONS_FILES = 
DEPLOYMENT_LOCATION = NO
DEPLOYMENT_POSTPROCESSING = NO
INSTALL_GROUP = $(GROUP)
INSTALL_OWNER = $(USER)
INSTALL_MODE_FLAG = u+w,go-w,a+rX
DSTROOT = /tmp/$(PROJECT_NAME).dst
INSTALL_PATH = $(HOME)/Applications
MACOSX_DEPLOYMENT_TARGET = $(inherited)
SKIP_INSTALL = YES
COPY_PHASE_STRIP = YES
STRIP_INSTALLED_PRODUCT = 
STRIP_STYLE = all
TARGETED_DEVICE_FAMILY = 1
SEPARATE_STRIP = NO
IPHONEOS_DEPLOYMENT_TARGET = 3.0
MODULE_NAME = 
MODULE_START = 
MODULE_STOP = 
MODULE_VERSION = 
BUNDLE_LOADER = 
STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic
DYLIB_COMPATIBILITY_VERSION = 
DYLIB_CURRENT_VERSION = 
LINKER_DISPLAYS_MANGLED_NAMES = NO
PRESERVE_DEAD_CODE_INITS_AND_TERMS = NO
LD_DYLIB_INSTALL_NAME = 
EXPORTED_SYMBOLS_FILE = 
INIT_ROUTINE = 
LINK_WITH_STANDARD_LIBRARIES = YES
MACH_O_TYPE = mh_execute
LD_OPENMP_FLAGS = -fopenmp
ORDER_FILE = 
OTHER_LDFLAGS = -all_load -ObjC
LD_MAP_FILE_PATH = $(TARGET_TEMP_DIR)/$(PRODUCT_NAME)-LinkMap-$(CURRENT_VARIANT)-$(CURRENT_ARCH).txt
GENERATE_MASTER_OBJECT_FILE = NO
PREBINDING = NO
PRELINK_LIBS = 
KEEP_PRIVATE_EXTERNS = NO
LD_RUNPATH_SEARCH_PATHS = 
SEPARATE_SYMBOL_EDIT = NO
PRELINK_FLAGS = 
SECTORDER_FLAGS = 
UNEXPORTED_SYMBOLS_FILE = 
WARNING_LDFLAGS = 
LD_GENERATE_MAP_FILE = NO
COMPRESS_PNG_FILES = YES
APPLY_RULES_IN_COPY_FILES = NO
EXECUTABLE_EXTENSION = 
EXECUTABLE_PREFIX = 
INFOPLIST_EXPAND_BUILD_SETTINGS = YES
GENERATE_PKGINFO_FILE = YES
FRAMEWORK_VERSION = A
INFOPLIST_FILE = iRevealMaui-Info.plist
INFOPLIST_OTHER_PREPROCESSOR_FLAGS = 
INFOPLIST_OUTPUT_FORMAT = binary
INFOPLIST_PREPROCESSOR_DEFINITIONS = 
INFOPLIST_PREFIX_HEADER = 
INFOPLIST_PREPROCESS = NO
COPYING_PRESERVES_HFS_DATA = NO
PRIVATE_HEADERS_FOLDER_PATH = $(CONTENTS_FOLDER_PATH)/PrivateHeaders
PRODUCT_NAME = iRevealMaui
PLIST_FILE_OUTPUT_FORMAT = binary
PUBLIC_HEADERS_FOLDER_PATH = $(CONTENTS_FOLDER_PATH)/Headers
STRINGS_FILE_OUTPUT_ENCODING = binary
WRAPPER_EXTENSION = app
ALWAYS_SEARCH_USER_PATHS = NO
FRAMEWORK_SEARCH_PATHS = 
HEADER_SEARCH_PATHS = ${SDKROOT}/usr/include/libxml2/** ../three20/Build/Products/three20
LIBRARY_SEARCH_PATHS = $(inherited) "$(SRCROOT)/../desiccant/Classes/External/google-analytics"
REZ_SEARCH_PATHS = 
EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = *.nib *.lproj *.framework *.gch (*) CVS .svn *.xcodeproj *.xcode *.pbproj *.pbxproj
INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES = 
OTHER_TEST_FLAGS = 
TEST_HOST = 
TEST_RIG = 
CURRENT_PROJECT_VERSION = 
VERSION_INFO_FILE = $(PRODUCT_NAME)_vers.c
VERSION_INFO_EXPORT_DECL = 
VERSION_INFO_PREFIX = 
VERSION_INFO_SUFFIX = 
VERSIONING_SYSTEM = 
VERSION_INFO_BUILDER = $(USER)
GCC_FAST_OBJC_DISPATCH = YES
GCC_AUTO_VECTORIZATION = NO
GCC_OBJC_CALL_CXX_CDTORS = YES
GCC_ENABLE_SSE3_EXTENSIONS = NO
GCC_ENABLE_SSE41_EXTENSIONS = NO
GCC_ENABLE_SSE42_EXTENSIONS = NO
GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = NO
GCC_STRICT_ALIASING = NO
GCC_FEEDBACK_DIRECTED_OPTIMIZATION = Off
GCC_ENABLE_FIX_AND_CONTINUE = NO
GCC_GENERATE_DEBUGGING_SYMBOLS = YES
GCC_DYNAMIC_NO_PIC = YES
GCC_GENERATE_TEST_COVERAGE_FILES = NO
GCC_INLINES_ARE_PRIVATE_EXTERN = YES
GCC_MODEL_TUNING = G4
GCC_INSTRUMENT_PROGRAM_FLOW_ARCS = NO
GCC_ENABLE_KERNEL_DEVELOPMENT = NO
GCC_DEBUGGING_SYMBOLS = default
GCC_REUSE_STRINGS = YES
GCC_NO_COMMON_BLOCKS = NO
GCC_ENABLE_OBJC_GC = unsupported
GCC_OPTIMIZATION_LEVEL = s
GCC_FAST_MATH = NO
GCC_ENABLE_SYMBOL_SEPARATION = YES
GCC_THREADSAFE_STATICS = YES
GCC_SYMBOLS_PRIVATE_EXTERN = YES
GCC_UNROLL_LOOPS = NO
GCC_MODEL_PPC64 = NO
GCC_CHAR_IS_UNSIGNED_CHAR = NO
GCC_ENABLE_ASM_KEYWORD = YES
GCC_C_LANGUAGE_STANDARD = c99
GCC_CHECK_RETURN_VALUE_OF_OPERATOR_NEW = NO
GCC_CW_ASM_SYNTAX = YES
GCC_INPUT_FILETYPE = automatic
GCC_ALTIVEC_EXTENSIONS = NO
GCC_ENABLE_CPP_EXCEPTIONS = YES
GCC_ENABLE_CPP_RTTI = YES
GCC_LINK_WITH_DYNAMIC_LIBRARIES = YES
GCC_ENABLE_OBJC_EXCEPTIONS = YES
GCC_ENABLE_TRIGRAPHS = NO
GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS = NO
GCC_USE_INDIRECT_FUNCTION_CALLS = NO
GCC_USE_REGISTER_FUNCTION_CALLS = NO
GCC_INCREASE_PRECOMPILED_HEADER_SHARING = NO
OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS)
GCC_PRECOMPILE_PREFIX_HEADER = YES
GCC_PREFIX_HEADER = iRevealMaui_Prefix.pch
GCC_ENABLE_BUILTIN_FUNCTIONS = YES
GCC_ENABLE_PASCAL_STRINGS = YES
GCC_FORCE_CPU_SUBTYPE_ALL = NO
GCC_SHORT_ENUMS = NO
GCC_ONE_BYTE_BOOL = NO
GCC_USE_STANDARD_INCLUDE_SEARCHING = YES
GCC_PREPROCESSOR_DEFINITIONS = 
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = 
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO
GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO
GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO
GCC_WARN_ABOUT_GLOBAL_CONSTRUCTORS = NO
GCC_WARN_SHADOW = NO
GCC_WARN_64_TO_32_BIT_CONVERSION = NO
GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES
GCC_WARN_INHIBIT_ALL_WARNINGS = NO
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = NO
GCC_WARN_ABOUT_RETURN_TYPE = YES
GCC_WARN_MISSING_PARENTHESES = NO
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO
GCC_WARN_ABOUT_MISSING_NEWLINE = NO
GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = NO
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = NO
WARNING_CFLAGS = 
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = NO
GCC_WARN_PEDANTIC = NO
GCC_WARN_ABOUT_POINTER_SIGNEDNESS = YES
GCC_WARN_PROTOTYPE_CONVERSION = NO
GCC_WARN_SIGN_COMPARE = NO
GCC_WARN_STRICT_SELECTOR_MATCH = NO
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO
GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS = NO
GCC_TREAT_WARNINGS_AS_ERRORS = NO
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES
GCC_WARN_UNDECLARED_SELECTOR = NO
GCC_WARN_UNINITIALIZED_AUTOS = NO
GCC_WARN_UNKNOWN_PRAGMAS = NO
GCC_WARN_UNUSED_FUNCTION = NO
GCC_WARN_UNUSED_LABEL = NO
GCC_WARN_UNUSED_PARAMETER = NO
GCC_WARN_UNUSED_VALUE = NO
GCC_WARN_UNUSED_VARIABLE = YES
GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES
GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = YES
IBC_FLATTEN_NIBS = YES
IBC_OTHER_FLAGS = 
IBC_PLUGIN_SEARCH_PATHS = 
IBC_PLUGINS = 
IBC_ERRORS = YES
IBC_NOTICES = YES
IBC_WARNINGS = YES

这是我的 Info.plist 的内容:

Here are the contents of my Info.plist:

非常感谢任何见解.

编辑 - 解释了明显的状态更改延迟

根据我的状态历史记录,似乎无效二进制"状态实际上是在几分钟内建立的,但 iTunes Connect 用设计不佳的缓存策略隐藏了这一事实.

Based on my status history, it appears that the "Invalid Binary" status is actually being established within minutes, but iTunes Connect is concealing this fact with a poorly designed caching strategy.

为了监视状态变化,我一直在刷新并在四个页面之间单击:管理您的应用程序"、应用程序信息"页面、查看详细信息"和状态历史记录".当状态历史最终更新时,它显示应用在大约一个小时前进入无效二进制"状态.

To monitor for a change in state, I've been refreshing and clicking around between four pages: "Manage Your Applications", the "App Information" page, "View Details", and "Status History". When the status history finally updates, it shows that the app went into an "Invalid Binary" state around an hour prior.

作为一项实验,我尝试更改我的应用 ID 并将二进制文件作为新应用提交.这一次,我在提交二进制文件几分钟后点击了查看详细信息"页面.其状态显示为已接收上传".明显进步!几分钟后,我点击了状态历史记录,在我上传完成几分钟后,它显示无效的二进制".然后我返回并刷新了我的查看详细信息"页面.尽管状态历史记录显示无效二进制",但它仍然显示已接收上传".这是非常清楚的证据,表明所有这些页面都被缓存并长时间显示陈旧数据.我只是在我将二进制文件作为新应用程序重新提交时才发现这一点,因为我是第一次加载该应用程序的页面.

As an experiment, I tried changing my app ID and submitting the binary as a new app. This time, I clicked into the "View Details" page a few minutes after submitting the binary. Its status showed, "Upload Received". Apparent progress! A couple minutes later I clicked into Status History, and it showed "Invalid Binary" mere minutes after my upload finished. Then I went back and refreshed my "View Details" page. It still shows "Upload Received", despite the fact that the Status History shows "Invalid Binary". This is pretty clear evidence that all these pages are being cached and showing stale data for long periods of time. I only caught this when I resubmitted the binary as a new app because I was loading the pages for that app for the first time.

这不能解决我的无效二进制"问题,也不能解释为什么我没有收到任何电子邮件,但它确实有助于排除一些假设.

This doesn't solve my "Invalid Binary" problem, nor does it explain why I'm not getting any emails, but it does help rule out some hypotheses.

推荐答案

感谢所有提出解决方案的人.事实证明,您的建议对我的情况没有任何帮助,但我确实解决了问题.以下是对我有用的方法:

Thanks to everyone who proposed solutions. As it turns out, none of your suggestions helped in my case, but I did solve the problem. Here's what worked for me:

从您的项目中删除 Entitlements.plist.然后执行 Add -> New File 并重新添加 Entitlements.plist.

Delete Entitlements.plist from your project. Then do Add -> New File and re-add Entitlements.plist.

Entitlements.plist 的格式在 SDK 3.1.3 和 3.2 之间发生了变化.如果您的 Entitlements.plist 是使用早于 3.2 的 SDK 创建的,并且您现在尝试使用 SDK 3.2 或更高版本更新您的应用程序,那么您似乎必须删除 Entitlements.plist 并使用新格式重新添加它.否则,Apple 将拒绝您升级为无效的二进制文件".

The format of the Entitlements.plist changed between SDK 3.1.3 and 3.2. If your Entitlements.plist was created with an SDK earlier than 3.2, and you're now trying to update your app using SDK 3.2 or greater, it appears that you have to delete the Entitlements.plist and re-add it using the new format. Otherwise Apple will reject your upgrade as an "Invalid Binary".

这篇关于什么会导致“无效二进制"?没有来自 iTunes Connect 的电子邮件跟进?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆