Что может вызвать «неверный бинарный файл» без последующего отслеживания электронной почты из iTunes Connect? - PullRequest
38 голосов
/ 08 августа 2010

Я пытаюсь отправить обновление существующего приложения от имени одного из моих клиентов, и я получаю сбои "Invalid Binary" из iTunes Connect без объяснения ошибки.Завтра я уезжаю на двухнедельный отпуск без доступа к сети, поэтому я немного отчаянно нуждаюсь в решении.Будем благодарны за любые идеи.

Это обновление меняет название приложения и исправляет несколько мелких ошибок.Я делал предыдущие заявки через iTunes Connect, но я отправляю это обновление через XCode, как того требует Apple.

Я назначил себя техническим контактом для этого клиента, поэтому я получаю уведомление, когда помещаюновая версия в состоянии «Ожидание загрузки» через iTunes Connect.Когда я затем проверяю двоичный файл через органайзер Xcode, инструмент в конце концов сообщает, что двоичный файл действителен.Когда я отправляю двоичный файл через органайзер Xcode, он в конечном итоге возвращается и сообщает, что двоичный файл успешно загружен.Оба эти шага занимают некоторое время (может быть по 15 минут каждый), возможно, потому что пакет приложений составляет 63 мегабайта с тысячами ресурсов.

В течение следующего часа или двух портал iTunes Connect по-прежнему сообщает, что приложение находится всостояние «Ожидание загрузки».Я полагаю, что некоторая задержка является нормальной между временем, когда загрузка завершается в XCode, и когда состояние изменяется в iTunes Connect.Эти часы задержки кажутся чрезмерными, но я полагаю, что это не совсем удивительно, учитывая размер приложения.

В конечном итоге состояние просто незаметно меняется на «Invalid Binary» в iTunes connect.Я понимаю, что iTunes Connect должен отправить электронное письмо с объяснением ошибки, когда это происходит, но я ничего не получаю, равно как и мой клиент.(Я предполагаю, что он должен быть доступен всем пользователям, помеченным для уведомления об изменениях состояния приложения в iTunes Connect. Это предположение верно?)

Вот параметры сборки, скопированные и вставленные из моей конфигурации дистрибутива App Store:

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:

Любые идеи приветствуются.

EDIT - Видимообъяснение задержки изменения статуса

Судя по моей истории статусов, кажется, что статус "Invalid Binary" фактически устанавливается в течение нескольких минут, но iTunes Connect скрывает этот факт с плохо разработанной стратегией кэширования.

Чтобы отслеживать изменения в состоянии, я обновляю и нажимаю между четырьмя страницами: «Управление приложениями», страница «Информация о приложении», «Просмотр сведений» и «История состояния».Когда наконец обновляется история состояний, это показывает, что приложение перешло в состояние «Недопустимый двоичный файл» примерно за час до этого.

В качестве эксперимента я попытался изменить свой идентификатор приложения и отправить двоичный файл в качестве нового приложения.На этот раз я нажал на страницу «Подробности» через несколько минут после отправки двоичного файла.Его статус показывал «Загрузить получено».Видимый прогресс!Пару минут спустя я щелкнул в «Истории состояния», и она показала «Invalid Binary» всего через несколько минут после завершения загрузки.Затем я вернулся и обновил страницу «Просмотр деталей».Он по-прежнему показывает «Upload Received», несмотря на то, что в истории состояния отображается «Invalid Binary».Это довольно четкое свидетельство того, что все эти страницы кэшируются и показывают устаревшие данные в течение длительных периодов времени.Я понял это только после повторной отправки бинарного файла как нового приложения, потому что я загружал страницы для этого приложения в первый раз.

Это не решает мою проблему «Недопустимый двоичный файл» и не объясняет, почемуЯ не получаю никаких писем, но это помогает исключить некоторые гипотезы.

Ответы [ 30 ]

1 голос
/ 14 сентября 2016

Это может быть проблема конфиденциальности в iOS 10. Требуется, чтобы разработчики добавили описание при использовании данных о конфиденциальности пользователя, таких как «Открыть библиотеку фотографий», «Открыть камеру», «Календарь доступа» ... и так далее.

Пожалуйста, проверьте каждую часть ваших кодов, включая сторонние фреймворки, чтобы увидеть, есть ли какие-то проблемы с конфиденциальностью. Затем добавьте описание в файл Info.plist. Я решил это таким образом ^ _ ^ enter image description here

0 голосов
/ 26 июня 2013

Просто у меня была та же проблема, и, похоже, решение было добавить недостающий экран запуска Retina 4 дюйма в мой проект (я специально удалил его - предыдущие обновления были в порядке с этим, но этокажется, им это больше не нравится), как рекомендовано в журналах при архивировании приложения.

0 голосов
/ 16 февраля 2011

У меня такая же проблема. Сначала я попробовал программу с правами, так как казалось, что она соответствует моей ситуации.

Мальчик, они разные Старый список прав:

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

Новый ... (xcode 3.2.5, 4.2 target и min 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>
0 голосов
/ 28 марта 2013

Если в случае газетного киоска приложение.

Убедитесь, что добавлен значок газетного киоска.В моем случае проблема заключается в том, что я забываю добавить значок киоска в пакет проекта, но я ссылаюсь на него в plist.

Загрузчик приложения не будет проверять значок киоска, поэтому ошибка «недопустимый двоичный файл» отображается только в «iTunes connect».

спасибо

0 голосов
/ 25 января 2013

Спасибо .. это была проблема с файлами значков в моем проекте. Я удалил их, как предложил Сашо. Наконец перешел на ожидание просмотра.

0 голосов
/ 13 августа 2010

Я уже давно борюсь с той же проблемой. Сегодня утром я обнаружил, что у командного агента все уведомления отключены, поэтому я включил их все и, наконец, начал получать электронные письма об изменении состояния, когда приложение изменилось на «Ожидание загрузки», но ничего не изменилось, когда состояние изменилось на «Binary Invalid». ». После нескольких попыток я наконец-то получил обновление приложения в состоянии «Ожидание просмотра». Для меня это решило изменение значения «Цель развертывания iPhone OS» в настройках сборки цели с iPhone OS 2.2.1 (настройка для исходного приложения) на iPhone OS 3.0.

0 голосов
/ 29 марта 2011

Я боролся с этим полдня. Даже попробовал переустановить xcode. Для меня ответом было возвращение на портал инициализации в itunes connect, отзыв моего сертификата и создание нового. Затем создайте новый профиль обеспечения распространения, затем перестройте и повторно отправьте. Какая длительная недокументированная боль в шее.

0 голосов
/ 06 марта 2015

2015

Проблема Invalid Binary теперь может быть вызвана, если EMBEDDED_CONTENT_CONTAINS_SWIFT равен true, но не может фактически включить любой код Swift в двоичный файл.

Идите вперед и подделайте это значение в настройках сборки приложения.

Xcode также включал пользовательские настройки, включающие слово Swift - я просто выбрал его и выбрал.

0 голосов
/ 18 июня 2014

Я получил эту ошибку, когда недавно добавил Flurry Ad в свое приложение.

Если ваше дело касается рекламы, вы должны принять itunesconnect перед загрузкой. http://techcrunch.com/2014/04/11/apple-developers-must-now-agree-to-ad-identifier-rules-or-risk-app-store-rejection/

0 голосов
/ 04 октября 2011

Та же проблема, другое решение: моя схема архивирования использовала специальную конфигурацию сборки , когда она должна была быть выпущена.

Контрольный список для моих неудачных попыток исправить в моем блоге Проверка приложения Coiled Codesign Verification .

...