Недопустимый Двоичный файл приложения для iPhone

Посмотрите на этот пример Plnkr

Переменная this сильно отличается timesCalled с каждым нажатием кнопки увеличивается только на 1. Ответ на мой личный вопрос:

.click( () => { } )

и

.click(function() { })

создают одинаковое количество функции при использовании в цикле, как вы можете видеть из подсчета Guid в Plnkr.

77
задан 16 revs, 3 users 99% 23 May 2017 в 12:24
поделиться

12 ответов

Это был мой опыт, что XCode иногда запутывается о который подписание сертификата использованию. Я выработал привычку выхода и перезапуска XCode после любого изменения в настройках подписывания кода (и выполнение чистой сборки) для работы вокруг этой проблемы.

34
ответ дан logancautrell 24 November 2019 в 10:59
поделиться

Ну, после повторения шагов несколько раз, я был наконец успешен в загрузке моего приложения.

я не знаю точно, что зафиксировало его, но до успешной попытки, я закрыл XCode и Firefox и перезапустил их. Я предполагаю, что одно из тех приложений имело некоторый плохой амулет.

4
ответ дан 2 revs 24 November 2019 в 10:59
поделиться

У меня была такая же проблема, и я решил ее следующим образом:

Сертификаты свойств были установлены на моем компьютере для разработки, и mobileprovision.embedded был включен в архив распространения. Примерно через час поисков в Google и копаний я нашел источник ошибки. Внутри Xcode я скопировал конфигурацию выпуска и создал новую конфигурацию распространения, а затем изменил удостоверение подписи на свой сертификат распространения. Однако, несмотря на то, что он был обновлен в графическом интерфейсе, файл проекта не был обновлен правильно.

Если вы столкнетесь с той же ошибкой, найдите в своем каталоге [ProjectName] .xcodeproj файл project.pbxproj и откройте его в избранном редактор. Ищите раздел Распространение. Мой сломанный выглядел так:

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Developer: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Developer: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “DB12BCA7-FE72-42CA-9C2B-612F76619788″;
};
name = Distribution;
};

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

C384C90C0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CODE_SIGN_ENTITLEMENTS = "";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
PREBINDING = NO;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
SDKROOT = iphoneos2.2.1;
};
name = Distribution;
};
C384C90D0F9939FA00E76E41 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CODE_SIGN_IDENTITY = “iPhone Distribution: Edward McCreary”;
“CODE_SIGN_IDENTITY[sdk=iphoneos*]” = “iPhone Distribution: Edward McCreary”;
COPY_PHASE_STRIP = YES;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = GenPass_Prefix.pch;
INFOPLIST_FILE = Info.plist;
PRODUCT_NAME = GenPass;
PROVISIONING_PROFILE = “F00D3778-32B2-4550-9FCE-1A4090344400″;
“PROVISIONING_PROFILE[sdk=iphoneos*]” = “F00D3778-32B2-4550-9FCE-1A4090344400″;
};
name = Distribution;
};

гидов изменились, чтобы защитить невинных

10
ответ дан 24 November 2019 в 10:59
поделиться

Вот проблема, с которой я столкнулся: я добавил двоичный файл в Subversion перед загрузкой. Затем при сравнении / архивировании двоичного файла были включены скрытые каталоги .svn, что нарушило подписание кода.

4
ответ дан 24 November 2019 в 10:59
поделиться

Та же проблема, другое решение.

В моем случае я сжимал файл с помощью zip -r myapp.zip myapp.app Получается, команда zip прикрутил связку. Сжатие из искателя заставило его работать.

7
ответ дан 24 November 2019 в 10:59
поделиться

Я просто хотел упомянуть, что у меня тоже была проблема с zip из команды линия тоже. Проблема заключается в том, как он по умолчанию обрабатывает символические ссылки. Использование:

zip -y -r myapp.zip myapp.app

Эта проблема решена.

21
ответ дан 24 November 2019 в 10:59
поделиться

I tried various things after reading various posts including those above. What finally worked for me was starting completely over! I deleted every certificate and provisioning profile associated with my app.

I recreated a new development certificate and a new distribution certificate. I downloaded the intermediate certificate again. Then I recreated both the development profile and the distribution profile.

After installing the three certificates (I noticed the distribution had both private and public keys this time) and the two provisioning profiles (my distribution profile didn't get flagged as not having a valid certificate!), everything worked.

Once I made the decision to revoke everything and just start over, it only took about 5 minutes to create the new stuff and re-install.

4
ответ дан 24 November 2019 в 10:59
поделиться

Получите имя столбца из int на Java ( подробнее читайте здесь ):

public String getColName (int colNum) {

   String res = "";

   int quot = colNum;
   int rem;        
    /*1. Subtract one from number.
    *2. Save the mod 26 value.
   *3. Divide the number by 26, save result.
   *4. Convert the remainder to a letter.
   *5. Repeat until the number is zero.
   *6. Return that bitch...
   */
    while(quot > 0)
    {
        quot = quot - 1;
        rem = quot % 26;
        quot = quot / 26;

        //cast to a char and add to the beginning of the string
        //add 97 to convert to the correct ascii number
        res = (char)(rem+97) + res;            
    }   
    return res;
}
-121--1103054-

Это известная проблема [ссылка мертва], которая stl:: vector не может правильно содержать выровненные данные, такие как D3DXMATRIXA16. Один плакат закрепил первопричину (или, по крайней мере, одну из них?): объявление вектора:: resize передает выровненные данные по значению, а не в качестве конст-ссылки. В этом потоке было предложено несколько обходных путей, наиболее безопасным из которых является полное удаление stl:: vector . Вы также можете самостоятельно исправить заголовки stl и перекомпилировать - это может быть проще, чем звучит, но я сам этого не делал.

EDIT: теперь ссылки разорваны (спасибо @ David Menard), вот альтернативный, более сложный ответ .

Проблема исправлена в VS2012RC - вот ссылка на соответствующую проблему подключения [ссылка мертва]. Оказывается, это была проблема в самом стандарте C++, зафиксированная в 2008 году.

-121--3120156-

При построении я заметил, что в сборке не было добавлено выделение ресурсов.

Исправление для меня заключалось в том, чтобы установить построение для iphone-устройства как место, где я обычно использую симулятор, но тогда он не будет включать профиль конфигурирования...

Это может быть ошибкой типа noob. Обычно вы не можете построить на устройство, но когда вы делаете это для распространения вы можете.

5
ответ дан 24 November 2019 в 10:59
поделиться

У меня была та же проблема, и после нескольких попыток я удалил .plist права из Code Signing Entitlements (просто оставил его пустым), и он отлично собрался и загрузился ФИНАЛЬНО.

Удачи всем :-D

7
ответ дан 24 November 2019 в 10:59
поделиться

Мои два цента:

Загрузите последнюю версию загрузчика приложений. Я только что обновился и теперь получаю другое сообщение об ошибке.

0
ответ дан 24 November 2019 в 10:59
поделиться

У меня была такая же проблема. Я уже был готов бросить эту проблему, но понял, что к чему, когда пошел проверять свой код с помощью Murky. Я всегда просматриваю отличия в файлах, которые изменились перед проверкой. В этот раз я заметил, что файл project.pbxproj изменился.... и в разделе Distribution запись для "PROVISIONING_PROFILE[sdk=iphoneos*]" была пустой.

Выход из программы и перезапуск Xcode не помогли. Вместо этого я зашел в настройки проекта и цели и изменил подпись кода, чтобы напрямую выбрать профиль распространения, а не полагаться на функцию автоматического выбора. Это привело к тому, что файл project.pbxproj заполнился правильными значениями, даже если функция автовыбора якобы выбрала тот же профиль, который я выбрал вручную.

Мне нужно пиво...

2
ответ дан 24 November 2019 в 10:59
поделиться

Только сегодня возникла эта проблема, но ответы здесь не помогли. Я наконец нашел проблему.

Убедитесь, что вы используете раскрывающееся меню: Project> Edit Active Target « ProjectName » для изменения подписи кода на распространение - я выбирал проект на панели «Группы и файлы» и использовал кнопка Info, которая показывает информацию PROJECT , а не информацию TARGET - очень сбивает с толку! Я понял только тогда, когда я отключил подписку кода в проекте и построил, а он все еще хочет подписать код!

Думаю, именно поэтому в посте Эдди ему пришлось изменить его на уровне project.pbxproj

Также в исходном посте на 1-м шаге: 1. В Xcode выберите Device | Release target. Неужто это должно быть Устройство | Цель распространения? (при условии, что этот скопированный выпуск и переименован в его распространение в соответствии с инструкциями Apple на портале Provisioning Portal)

0
ответ дан 24 November 2019 в 10:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: