代码之家  ›  专栏  ›  技术社区  ›  cduhn

什么会导致“无效的二进制文件”而没有从iTunes Connect跟进电子邮件?

  •  38
  • cduhn  · 技术社区  · 15 年前

    我试图代表我的一个客户提交一个现有应用程序的更新,我从iTunes Connect中得到“无效二进制”故障,但没有对错误的解释。我明天要休假两周,没有网络接入,所以我有点迫不及待地想找到解决办法。我们非常感谢您的任何见解。

    此更新会更改应用程序的名称并修复一些小错误。我以前是通过iTunes Connect提交的,但现在我是根据苹果公司的要求通过xcode提交此更新。

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

    在接下来的一到两个小时内,iTunes Connect门户仍报告应用程序处于“等待上载”状态。我相信从Xcode中上传完成到iTunes Connect中状态发生变化之间的延迟是正常的。考虑到应用程序的大小,这些小时的延迟似乎过多,但我想这并不完全令人惊讶。

    最终,在iTunes Connect中,状态会自动变为“无效二进制”。我知道iTunes Connect应该发送一封电子邮件来解释发生这种情况时的错误,但我没有收到任何信息,我的客户也没有。(我认为它应该发送给所有在iTunes Connect中标记为应用程序状态更改通知的用户。这个假设正确吗?)

    以下是从我的应用商店分发配置复制和粘贴的生成设置:

    附加功能=
    archs=$(archs_标准_32_位)
    sdkroot=iphoneos4.0
    只有活动的拱=是
    有效的_archs=armv6 armv7
    symroot=/users/cduhn/documents/workspace/xcode_build_输出
    objroot=$(symroot)
    configuration_build_dir=$(build_dir)/$(configuration)$(有效的_平台名称)
    configuration_temp_dir=$(project_temp_dir)/$(configuration)$(effective_platform_name)
    shared_precomps_dir=$(cache_root)/sharedRecompiledHeaders
    构建变量=正常
    debug_information_format=dwarf with dsym
    启用OpenMP支持=否
    生成配置文件代码=否
    precomps_include_headers_from_build_products_dir=是
    运行_clang_static_analyzer=no
    扫描所有源文件
    验证产品=否
    code_sign_entitlements=权利.plist
    代码符号标识=
    code_sign_identity[sdk=iphoneos*]=iphone发行版:捕捉瞬间
    代码符号资源规则路径=
    其他标志=
    脱衣舞
    alternate_group=$(安装_group)
    alternate_owner=$(安装_owner)
    alternate_mode=$(安装_mode_标志)
    备用权限文件=
    部署位置=否
    部署后处理=否
    安装_group=$(group)
    安装所有者=$(用户)
    安装_模式_标志=u+w,go-w,a+rx
    dstroot=/tmp/$(项目名称).dst
    安装路径=$(home)/应用程序
    macosx_deployment_target=$(继承)
    跳过安装=是
    copy_phase_strip=是
    剥离已安装的产品=
    strip_style=全部
    目标设备系列=1
    分离条=否
    iPhoneOS部署目标=3.0
    模块名
    模块启动
    模块停止
    模块\版本=
    捆绑装载程序=
    标准库类型=动态
    Dylib_兼容版本=
    Dylib_当前版本=
    链接器显示已损坏的名称=否
    preserve_dead_code_inits_and_terms=否
    安装名称=
    导出的符号文件=
    初始化程序=
    link_with_standard_libraries=是
    mach_o_type=mh_执行
    ld_openmp_flags=-fopenmp
    命令文件=
    其他_ldflags=-所有_加载-objc
    ld_map_file_path=$(target_temp_dir)/$(product_name)-linkmap-$(current_variant)-$(current_arch).txt
    生成主对象文件=否
    预绑定=否
    预链接库
    keep_private_externs=否
    ld_runpath_search_路径=
    separate_symbol_edit=否
    PRILIKK-FLAG=
    扇形标志=
    未排序的符号文件=
    警告标志=
    ld_generate_map_file=否
    compress_png_files=是
    在拷贝文件中应用规则=否
    可执行扩展名=
    可执行文件前缀=
    infoplist_expand_build_settings=是
    generate_pkginfo_file=是
    框架版本=A
    info plist_file=irevealmaui-info.plist
    infoplist其他预处理器标记=
    infoplist_output_format=二进制
    信息预处理器定义=
    信息列表前缀标题=
    infoplist_preprocess=否
    复制保存数据=否
    private_headers_folder_path=$(contents_folder_path)/private headers
    product_name=irevealmaui
    plist_file_output_format=二进制
    public_headers_folder_path=$(contents_folder_path)/headers
    strings_file_output_encoding=二进制
    wrapper_extension=应用程序
    始终搜索用户路径=否
    框架搜索路径=
    header_search_paths=$sdkroot/usr/include/libxml2/**../three20/build/products/three20
    library_search_paths=$(inherited)“$(srcroot)/../dryint/classes/external/google analytics”
    搜索路径=
    排除的_递归_搜索_路径_子目录=*.nib*.lproj*.framework*.gch(*)cvs.svn*.xcodeproj*.xcode*.pbproj*.pbxproj
    包括“递归搜索”子目录=
    其他测试标志=
    测试主机=
    测试设备=
    当前项目版本=
    version_info_file=$(product_name)_vers.c
    版本\信息\导出\解密=
    版本信息前缀=
    版本信息后缀=
    版本控制系统=
    版本_info _builder=$(用户)
    gcc_fast_objc_dispatch=是
    gcc_auto_vectorization=否
    gcc_objc_call_cxx_cdtors=是
    gcc_enable_se3_extensions=否
    gcc_enable sse41_extensions=否
    gcc_enable sse42_extensions=否
    gcc_enable_supplementary_sse3_instructions=否
    gcc_strict_aliasing=否
    gcc_feedback_directed_optimization=关闭
    gcc_enable_fix_and_continue=否
    gcc_generate_debugging_symbols=是
    gcc_dynamic_no_pic=是
    gcc_generate_test_coverage_files=否
    gcc_inlines_are_private_extern=是
    gcc_model_tuning=g4
    GCC_Instrument_Program_Flow_Arcs=否
    gcc_enable_kernel_development=否
    gcc_debugging_symbols=默认
    gcc_Reuse_Strings=是
    gcc_no_common_blocks=否
    gcc_enable_objc_gc=不支持
    gcc_optimization_level=s
    gcc_fast_math=否
    gcc_启用_符号_分离=是
    gcc_threasafe_statics=是
    gcc_symbols_private_extern=是
    gcc_unroll_loops=否
    gcc_model_ppc64=否
    gcc_char_is_unsigned_char=否
    gcc_enable_asm_keyword=是
    GCC语言标准=C99
    gcc_check_return_value_of_operator_new=否
    gcc_cw_asm_语法=是
    gcc_input_filetype=自动
    GCC_Altivec_扩展=否
    gcc_enable_cpp_exceptions=是
    gcc_enable_cpp_rtti=是
    gcc_link_with_dynamic_libraries=是
    gcc_enable_objc_exceptions=是
    gcc_enable_trigraphs=否
    gcc_enable_floating_point_library_calls=否
    gcc_use_directive_function_calls=否
    gcc_use_register_function_calls=否
    gcc_increase_precompiled_header_sharing=否
    其他_cplusplusFlags=$(其他_cflags)
    gcc_precompile_prefix_header=是
    gcc_prefix_header=irevealmaui_prefix.pch
    gcc_启用_内置_函数=是
    gcc_enable_pascal_strings=是
    gcc_force_cpu_subtype_all=否
    gcc_short_enums=否
    gcc_one_byte_bool=否
    gcc_use_standard_include_search=是
    GCC预处理器定义=
    GCC预处理器定义未在预编译中使用=
    gcc_warn_check_switch_statements=否
    gcc_warn_effective_cplusplus_violations=否
    gcc_warn_four_character_constants=否
    gcc_warn_about_global_constructors=否
    gcc_warn_shadow=否
    gcc_warn_64_to_32_bit_conversion=否
    gcc_warn_allow_incomplete_protocol=是
    gcc_warn_inhibit_all_warnings=否
    gcc_warn_initializer_not_fully_brackeded=否
    gcc_warn_about_return_type=是
    gcc_warn_missing_括号=否
    gcc_warn_about_missing_field_initials=否
    gcc_warn_about_missing_prototype=否
    gcc_warn_about_missing_newline=否
    gcc_warn_multiple_definition_types_for_selector=否
    gcc_warn_non_virtual_destructor=否
    警告标志=
    gcc_warn_hidden_virtual_functions=否
    gcc_warn_pedantic=否
    gcc_warn_about_pointer_signedness=是
    gcc_warn_prototype_conversion=否
    gcc_warn_sign_compare=否
    gcc_warn_strict_selector_match=否
    gcc_将\u隐式\u函数\u声明\u视为\u错误=否
    GCC将不合格代码错误视为警告=否
    gcc_将_警告_视为_错误=否
    gcc_warn_typecheck_calls_to_printf=是
    gcc_warn_undeclared_selector=否
    gcc_warn_uninitialized_autos=否
    gcc_warn_unknown_pragmas=否
    gcc_warn_unused_函数=否
    gcc_warn_unused_label=否
    gcc_warn_unused_参数=否
    gcc_warn_unused_value=否
    gcc_warn_unused_variable=是
    gcc_warn_about_deprecated_functions=yes
    gcc_warn_about_invalid_offsetof_macro=是
    ibc_flatten_nibs=是
    IBC_其他_标志=
    IBC_插件_搜索_路径=
    ibjpLuxIn=
    ibc_错误=是
    ibc_notices=是
    ibc_warnings=是
    < /代码> 
    
    

    以下是我的信息内容。列表:

    我们非常感谢您的任何见解。

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

    根据我的状态历史,看起来“无效二进制”状态实际上是在几分钟内建立起来的,但是iTunes Connect用一种设计糟糕的缓存策略掩盖了这一事实。

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

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

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

    此更新会更改应用程序的名称并修复一些小错误。我以前是通过iTunes Connect提交的,但现在我是根据苹果公司的要求通过Xcode提交这个更新。

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

    在接下来的一两个小时内,iTunes Connect门户仍报告应用程序处于“等待上载”状态。我相信从Xcode中完成上传到iTunes Connect中的状态改变之间的延迟是正常的。考虑到应用程序的规模,这些小时的延迟似乎太长了,但我认为这并不完全令人惊讶。

    最终,在iTunes Connect中,状态会自动变为“无效二进制”。我知道iTunes Connect应该发送一封电子邮件来解释发生这种情况时的错误,但我没有收到任何信息,我的客户也没有收到。(我认为它应该发送给所有标记为通知iTunes Connect中应用程序状态更改的用户。这个假设正确吗?)

    以下是从我的应用商店分发配置复制和粘贴的生成设置:

    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的内容:

    任何见解都非常感谢。

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

    根据我的状态历史,看起来“无效二进制”状态实际上是在几分钟内建立起来的,但是iTunes Connect用一种设计糟糕的缓存策略掩盖了这一事实。

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

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

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

    30 回复  |  直到 6 年前
        1
  •  32
  •   Sasho    10 年前

    经过16个小时的不间断的研究尝试和错误,我在苹果开发者论坛中找到了一个解决方案。

    显然,有一个bug允许您的二进制文件通过验证和上传,但随后会被iTunes Connect系统拒绝。你不会收到任何电子邮件来解释发生的事情!

    如果你的应用同时适用于iPhone和iPad,那么你可能在info.plist文件中有类似的内容:

    您应该完全删除 cfbundleConfiles~ipad 参数,并将ipad图标包括在 图标文件 array中,而不是像这里那样:

    全是伙计们!

    如果这对你有帮助,请告诉我!

    我在苹果开发者论坛上找到了一个解决方案。

    显然,有一个bug允许您的二进制文件通过验证和上传,但随后会被iTunes Connect系统拒绝。你不会收到任何电子邮件来解释发生的事情!

    如果你的应用同时适用于iPhone和iPad,那么在info.plist文件中可能会出现类似的情况:

    screenshot before

    您应该完全删除 CFBundleIconFiles~ipad 参数并将iPad图标包含在 Icons files 按如下方式排列:

    screenshot after fix

    全是伙计们!

    如果这对你有帮助,请告诉我!

        2
  •  10
  •   rjobidon    15 年前

    即使应用程序加载器接受了我的二进制文件,我在iTunes Connect中也有同样的无效二进制错误。解决方案很简单…

    打开info.plist,右键单击并检查 显示原始键/值 :

    • 可配置 =icon.png(我的iPhone 57x57 png图标)
    • cfbundleconfile~ipad =icon-72.png(我的iPad 72x72 png图标)
    • cfbundleConfiles公司 =数组
      • 项目0 = ICON.PNG
      • 项目1 =icon@2x.png(我的iPhone 4 114x114 PNG图标)
      • 项目2 =ICNO-72.PNG

    保存,清除所有目标,建立和分析,压缩在查找工具和重新提交!

    错误是因为我键入了“icon files”键。在原始视图中,这已映射到“图标文件”,而不是cfbundleConfiles。我有Xcode3.2.3,我想Xcode3.2.4更好地映射了这个键标识符。

    祝大家好运!

    来源: Technical Q&A QA1686: App Icons on iPad and iPhone

        3
  •  8
  •   cduhn    15 年前

    感谢所有提出解决方案的人。事实证明,你的建议对我的案件没有帮助,但我确实解决了这个问题。以下是我的工作:

    从项目中删除entitlements.plist。然后执行添加->新文件并重新添加entitlements.plist。

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

        4
  •  7
  •   Aaron    14 年前

    我也有同样的问题好几天了。看起来这个错误可能是由这么多不同的问题引起的,所以很遗憾苹果没有用电子邮件详细说明这个错误。

    相反,在Xcode中执行以下操作:

    • 选择应用程序转到“生成”>“生成”&存档
    • 完成后,转到“窗口”>“管理器”
    • 在“存档的应用程序”下选择您的应用程序
    • 点击“验证”
    • 如果验证成功(如我的验证一样):
    • 单击“提交”。

    然后,这将向苹果提交申请。对我来说,几秒钟后,状态变为“等待审阅”,而不是“无效二进制文件”。

        5
  •  3
  •   Tony    14 年前

    在Xcode中,单击左侧的应用程序名称,然后转到右侧的构建设置选项卡。向下滚动到“代码签名标识”->“发布”

    请确保选择了您的分发配置文件。我没有意识到我必须显式地设置这个,我的应用程序被验证得很好,但是二进制文件无效。我的设置仍在开发人员配置文件中

        6
  •  3
  •   Lance Cleveland    13 年前

    使用xcode中的构建和归档工具,如本文另一个响应中所述。

    出于某种原因,存档工具触发了苹果公司的一些东西,以发送回电子邮件告诉我什么是实际错误的(损坏的PNG文件)。

    我的问题?Xcode压缩某些PNG文件时会损坏它们。转到“构建设置”,查看“打包”部分并将“压缩PNG文件”设置为“否”。

        7
  •  3
  •   Alexander Shartsis    12 年前

    目前(2013年5月8日),如果您在应用程序中访问ududd,则会引发此错误。mkstorekit(一个流行的开放源码库)是这样做的,这就是造成它的原因。在您的文件中搜索下面的方法(假设它不是预编译的二进制文件,在这种情况下,无论您拥有什么,都可以通过谷歌搜索并查看它们的发行说明)

    [uidevice currentdevice].唯一标识符

        8
  •  2
  •   Mahesh    10 年前

    这里的答案对我没有帮助。 我在我的项目中使用可可脂。出于某种原因,cocoapods项目设置基本SDK和支持的平台被设置为OSX。(椰子版本:0.37.2) 我把它切换到了iOS,它工作了。

    或者由于某种原因,cocoapods项目设置base sdk和支持的平台被设置为osx。(椰子版本:0.37.2) 我把它切换到了iOS,它工作了。 My Cocoapods Project Settings

        9
  •  1
  •   Yann Bouschet    14 年前

    我也遇到了同样的问题,很明显它与应用程序附带的默认启动画面大小有关。

    我发送的是1024x768默认图像,但在本文中我发现:

    http://weston-fl.com/blog/?p=840/

    它需要是1024x748(对于横向默认值) 我觉得它起作用了:iTunesConnect在那之后拿走了它。

        10
  •  1
  •   j0k gauthamp    12 年前

    这可能是以下问题,我在从iTunesConnect提交自动响应后收到:

    缺少推送通知权限-您的应用程序向Apple推送通知服务注册,但应用程序签名的权限不包括所需的“APS环境”权限。确保已为此应用启用推送通知服务,并且已下载包含“APS环境”权限的分发配置文件。

    更正问题后,请返回iTunes Connect管理应用程序模块中的应用程序版本详细信息页面,然后单击准备提交二进制文件按钮。这将引导您通过二进制提交流,并将您的应用程序版本状态返回到等待上载。然后可以使用应用程序加载器上载新的二进制文件。如果在您提交的文件中发现任何其他问题,我们将与您联系。

        11
  •  1
  •   Exile3daime    9 年前

    这可能是iOS 10中与隐私相关的问题。它要求开发人员在使用“打开照片库”、“打开相机”、“访问日历”等用户隐私数据时添加说明…等等。

    请检查您的代码的每个部分,包括第三方框架,看看是否有一些隐私问题。然后将说明添加到info.plist文件中。我是这样解决的^^

    “访问日历”…等等。

    请检查您的代码的每个部分,包括第三方框架,看看是否有一些隐私问题。然后将说明添加到info.plist文件中。我是这样解决的^^ enter image description here

        12
  •  0
  •   ppaulojr Judy    15 年前

    iPad图标的诀窍确实有效。

    卸下cfbundlediconfiles~ipad并将72x72图标添加到icon files键。

    注意屏幕截图,这种方法有时会创建缺少的屏幕截图错误

        13
  •  0
  •   Steve    15 年前

    我在同一个问题上挣扎了很久。今天早上我发现团队代理关闭了所有通知,所以我打开了所有通知,当应用程序更改为“等待上传”时,我终于开始收到状态更改电子邮件,但当状态更改为“二进制无效”时,仍然没有收到任何通知。经过几次尝试,我终于将应用程序更新设置为“等待审阅”状态。解决这个问题的方法是将目标构建设置中的“iPhone OS部署目标”值从iPhone OS 2.2.1(原始应用程序的设置)更改为iPhone OS 3.0。

        14
  •  0
  •   ilyashev    15 年前

    我有这个问题。我的问题是将部署目标设置为小于3.2的值,但仍然将架构设置为“针对ARMV7优化”。这是使用Xcode3.2.3。后一个设置应该更改为“标准”(armv6和armv7)。“当我构建了我的开发应用程序时,我必须更改它,因为Xcode在我尝试在旧的iTouch上运行该应用程序时抱怨道,但是在发布版本上没有可运行的设备(除非先使用特别的设备进行测试),所以在iTunes连接之前,您不会注意到这个问题。”拒绝二进制文件。

        15
  •  0
  •   Tom Andersen    14 年前

    我也有同样的问题。我首先尝试了津贴这件事,因为它似乎适合我的情况。

    男孩,他们是不同的: 旧权利等级:

    <plist version="1.0">
    <dict>
        <key>get-task-allow</key>
        <false/>
    </dict>
    

    新的…(xcode 3.2.5、4.2目标和最小IOS)

    <plist version="1.0">
    <dict>
        <!--- Required entitlements (in most cases shouldn't be changed) --->
        <key>application-identifier</key>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
        <key>keychain-access-groups</key>
        <array>
            <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
        </array>
    
    <!--- Custom entitlements below --->
    
    
    </dict>
    </plist>
    
        16
  •  0
  •   Tim    14 年前

    我为此挣扎了半天。甚至尝试重新安装xcode。对我来说,答案是回到iTunes Connect中的配置门户,撤销我的证书,然后创建一个新的证书。然后生成新的分发配置文件,然后重新生成并重新提交。脖子上长时间的无证疼痛。

        17
  •  0
  •   Roshan    14 年前

    在我的案例中,我使用不同的CSR生成了供应配置文件,而不是使用第一次创建用于访问供应门户的原始CSR。代码签名和提交带有原始CSR生成的配置文件的应用程序解决了我的问题。

        18
  •  0
  •   LetBulletFlies    14 年前

    今天我多次遇到同样的“无效二进制”问题。最后,我通过检查xcode 4中的构建消息解决了这个问题。单击显示生成日志的所有消息,查找代码签名和验证部分,通常位于底部。我提交的所有失败文件在生成日志中都有验证错误,但在“存档-验证”按钮中传递。

        19
  •  0
  •   JOM agenthunt    14 年前

    相同的问题,不同的解决方案:我的 档案方案 正在使用临时 生成配置 ,当它应该被释放时。

    我在博客上尝试修复失败的检查清单 Application Failed Codesign Verification .

        20
  •  0
  •   tesmojones    13 年前

    我也有同样的问题。确保在分发设置配置文件中选择“应用商店”作为分发方法,而不是“临时”。

        21
  •  0
  •   Bill Cheswick    13 年前

    我有一个指向不再存在的提取图标文件的指针。我删除了指针,到目前为止上传似乎可以接受。他们确实很快就发了一封邮件,给出了相关的细节,尽管上面的提示使我像往常一样走上了正确的道路。

        22
  •  0
  •   Ram G.    12 年前

    谢谢。。我的项目中的图标文件有问题。我已经按照萨索的建议把它们移走了。最后改为等待审查。

        23
  •  0
  •   Naveen Shan    12 年前

    如果是报摊应用程序。

    确保添加了报摊图标。在我的例子中,问题是我忘记在项目包中添加报摊图标,但我在plist中引用了它。

    应用程序加载程序将不验证报摊图标,因此只在“iTunes Connect”中显示错误“invalid binary”。

    谢谢

        24
  •  0
  •   Benjamin Piette    12 年前

    这里也有同样的问题,解决的办法似乎是 添加丢失的视网膜4英寸启动屏幕 对于我的项目(我是故意删除它的-以前的更新是可以的,但他们似乎不再喜欢它了),正如在存档应用程序时日志中建议的那样。

        25
  •  0
  •   Esqarrouth Jeremias Binder    11 年前

    我最近在我的应用程序中添加了flurry广告时得到了这个错误。

    如果您的案例是关于广告的,则在上载之前必须在iTunesConnect中接受。 http://techcrunch.com/2014/04/11/apple-developers-must-now-agree-to-ad-identifier-rules-or-risk-app-store-rejection/

        26
  •  0
  •   Raon    10 年前

    我刚收到苹果公司的邮件

    缺少64位支持-从2015年2月1日开始,提交给应用商店的新iOS应用程序必须包括64位支持,并使用iOS 8 SDK构建。从2015年6月1日开始,应用程序更新也需要遵循同样的要求。要在项目中启用64位,我们建议使用默认的xcode构建设置__标准架构_157;来构建一个同时具有32位和64位代码的二进制文件。
    < /代码> 
    
    

    所以请记住在项目目标设置和项目设置中添加ARM64作为有效的体系结构。

    现在添加arm64 by

    看起来就像

    所以请记住在项目目标设置和项目设置中添加ARM64作为有效的体系结构。

    enter image description here

    现在添加arm64 by

    enter image description here

    看起来就像

    enter image description here

        27
  •  0
  •   William George    10 年前

    二千零一十五

    这个 Invalid Binary 如果 EMBEDDED_CONTENT_CONTAINS_SWIFT true ,但未包括 Swift 二进制代码。

    继续并在应用程序生成设置中伪造此值。

    Xcode还包括用户定义的包含单词的设置 迅捷 -我也去挑选了。

        28
  •  0
  •   Umesh Sawant    10 年前

    我也面临同样的问题,尝试了大部分的解决方案,最后得出了下面的解决方案。

    只需检查以下内容……

    1)添加 ARM64作为有效的体系结构 在项目目标设置和项目设置中

    2)修改 info.plist文件和添加图标文件数组 所有必需的带有名称的图像。

    3)最重要的是——因为被拒绝,你改变了 版本号 在plist文件中的应用程序,但不在iTunes门户上。
    您需要在应用程序和iTunes门户上设置/管理相同的版本号。 设置此项并再次尝试上载二进制文件,这将解决您的问题。

        29
  •  0
  •   zeeawan    9 年前

    就我而言,我也一样 无效二进制 在几秒钟内状态为我上传的应用程序,无论是由xcode->组织者或应用程序加载器,没有来自苹果的电子邮件。我取代了 PNG 文件在 图标集 在我的 Mac OS X应用程序 问题解决了。

    我从“Charleston Software Associates”得到了损坏的PNG文件线索,非常感谢。

        30
  •  0
  •   zzz    6 年前

    另一个可能的选项,在重新提交二进制文件几次后收到此错误消息:

    plist包含cfbundleicons下的uinewssstandicon子属性, 用于新闻和功能。要包含报摊功能, info.plist必须包含uinewsstandapp=true info.plist键。

    查看您的信息。plist__我自己没有添加该属性,并且在本地或试飞测试期间没有出现任何错误。

    推荐文章