У меня проблема с созданием архива приложения для iOS из приложения. Приложение прекрасно компилируется и даже работает в симуляторе. Теперь я хотел провести специальное тестирование и не могу сгенерировать архив приложений для iOS. Когда я нажимаю на Product -> Archive, он генерирует общий архив xcode. Может кто-нибудь помочь мне. Я должен упомянуть, что я уже создал iOS App Archive этого приложения. По какой-то причине он просто прекратил генерировать iOS Archive. Большое спасибо.
175
xcodebuild
. Решение состоит в том, чтобы указать пункт назначения:xcodebuild -destination generic/platform=iOS
Ответы:
Проверьте настройки сборки:
источник
/usr/local/include
. Если вы создаете статическую библиотеку, заголовки должны быть общедоступными, поэтому правильнее будет, если № 3 изменит путь к общедоступной папке заголовков на что-то более разумноеinclude/$(TARGET_NAME)
. @CopperCash отмечает это в ответе ниже.Это может произойти, если вы добавили фреймворк / библиотеку ... вам нужно отредактировать Target-> Build Settings этой библиотеки и установить для параметра «Пропустить установку» значение «Да». При повторном архивировании XCode должен снова начать создавать «Архив приложений iOS», а не «общий архив xcode».
источник
В дополнение к « Пропустить установку» в « Да» и в случае, если вы открыли другой проект lib / framwork в своем проекте приложения, вы должны переместить заголовки (если они есть) из общедоступного в проект в фазе сборки / копирования заголовков .
источник
Я сделал следующее, чтобы это работало на меня:
Absolute path
наproducts directory
. Примечание: см. Подсказку ниже, чтобы сузить область поиска, чтобы найти библиотеку, вызывающую эту ошибку.и это было все!
Подсказка: чтобы получить представление о проблемных файлах, из-за которых ваш архив создает архивный файл, а не ipa, сделайте следующее:
usr/local/include
будут определены файлы заголовков виновника, которые вам нужно переместить из Public в Project, или файлы, которые вы должны изменить с абсолютного пути к каталогу продуктов (или даже файлы, которые вы забыли установить для флага установки пропуска, установив yes). но этот каталог (например, usr / local / include) варьируется в зависимости от структуры вашей библиотеки. Во многих случаях ... вы увидите все файлы, перечисленные в разделе « Копировать файлы» в шаге 3, перечисленные здесь. Если вы найдете их здесь, то у вас есть определенный ответ на причину вашей проблемы.обновите до подсказки: чтобы сделать жизнь еще проще ... какие бы файлы ни появлялись на шаге 4 в подсказке выше ... просто найдите их в глобальном поиске xcode .. и вы должны получить немедленные результаты для того, что вы хотите ... например, это было содержимое моей папки (следуя инструкциям выше):
Так что я могу сказать, что это как-то связано с библиотеками crypto и ssl .
заставил меня понять, что я забыл установить пропустить установку на да.
источник
./usr/local/include
.Если вы экспортируете архив, откройте его и посмотрите
/urs/local/include
в разделе Продукты попробуйте следующее :Работал на меня после обновления моего приложения React Native до
0.11.0
Xcode7
и CocoaPods0.39.0.beta.4
.источник
Если вы используете CocoaPods, а также WatchKit или расширение для Today, существует открытая проблема в репо CocoaPods, объясняющая, в чем может быть ваша проблема.
Решение для меня , чтобы удалить
Copy Pod Resources
фазы от WatchKit расширения и сегодня Удлинитель цели подBuild Phases
. Проект скомпилирован и заархивирован, как и ожидалось, когда я это сделалНадеюсь, это поможет кому-то, это поставило меня в тупик на целый день!
источник
Если какой-либо из приведенных выше ответов не работает, возможно, ваша проблема связана с
cocoaPods
. Последнее обновление все0.38.1
испортило для меня, но потом я понизился0.37.1
и все вернулось на круги своя. С помощьюXcode 6.3.1
Позже редактирование: обновление
0.38.2
также исправит это. Больше информации о том, что вызвало эту проблему здесь: Cocoapods 0.38.1 не удалось создать действительный архивисточник
0.38.2
и до сих пор есть проблемы. Вы на Xcode 7?/Library/Frameworks
. Я думаю, что это может иметь какое-то отношение к тому, что какао-бобы Google не создавались как динамическая структура. Это похоже на github.com/CocoaPods/CocoaPods/issues/3889Несмотря на то, что я использую Xcode5, и мне пришлось отредактировать схему сборки - попытка применить все вышеперечисленные предложения не помогла в моем случае.
У меня было две цели, скажем, «App» и «App FREE». Мои проблемы с общим архивом произошли, когда я пытался заархивировать бесплатную версию, которую я добавил после «нормальной» версии приложения. В моем случае, когда я выбрал схему на панели инструментов и выбрал «Редактировать схему» ... я увидел, что раздел «Сборка» имеет две цели, а именно: «Приложение» и «Бесплатное приложение».
Я снял все флажки для приложения, оставив только проверенные столбцы App FREE, и нажал кнопку ОК. В следующий раз, когда я выбрал «Продукт»> «Архив», я получил БЕСПЛАТНОЕ приложение вместо общего архива. :)
источник
Если у вас есть только один проект, возможно, это решение будет полезным. Эта проблема возникла, когда я дублировал цель. В результате у меня были две цели, построенные параллельно. Это было причиной проблемы. Общий архив IOS был построен.
Чтобы выключить параллель, перейдите к
источник
У меня была эта проблема после обновления до iOS 9 и Xcode 7. Решение Джоша Х сработало для меня:
Я также сделал скрипт постустановки для моего Podfile, чтобы сделать это автоматически!
Просто добавьте его в конец вашего Podfile и запустите
pod install
источник
У меня есть несколько проектов в моей рабочей области (GTL, Pods и мой основной проект), и это то, что сработало для меня:
Выберите проект, там будет 2 типа, есть проект и есть цели .
Для проектов, которые вам не нравятся
GTL
илиPODS
:Проекты:
Цели:
Для основного проекта (который обычно называется так же, как имя вашего продукта):
Проекты:
Цели:
Проверьте цель развертывания ios для каждого проекта и цели, чтобы убедиться, что они все одинаковы.
источник
У меня была эта проблема. В моем случае это было вызвано сохранением цели приложения Mac как зависимости приложения iOS.
Причина, по которой он был настроен таким образом, заключалась в том, что приложение Mac было инструментом, используемым для генерации некоторых данных для приложения iOS, которое затем было включено в комплект.
Мне пришлось удалить эту зависимость и собрать инструмент отдельно перед созданием самого приложения для iOS.
источник
В моем сценарии я получил ошибочный «Общий архив» только после того, как начал включать код Swift в свой проект преимущественно Objective-C. После многих проблем и изучения архивного файла, который выплевывал Xcode, я заметил, что
SwiftSupport
долгих поисков папка (с необходимыми dylibs для среды выполнения Swift) находилась в моем архиве не так, как в новом ванильном архиве приложений проекта Swift. ,Я нашел
Installation Directory
настройку сборки и заметил, что в моем проекте задан произвольный путь. Я просто удалил его (установив его на общее значение/Applications
), и следующий Build -> Archive, который я сделал, работал как ожидалось и дал мне надлежащий iOS App Archive.TL; ДР: Убедитесь, что для вашей
Installation Directory
настройки сборки установлено значение по умолчанию,/Applications
когда вы включаете код Swift в свое приложение, особенно если вы начинаете с более старого файла проекта, который может иметь некоторые неожиданные устаревшие настройки сборки.источник
Оставив это здесь, чтобы спасти других от того же путешествия.
Я обнаружил, что мне нужно удалить ту же фазу сборки Copy Pod Resources из статической библиотеки в моей рабочей области.
источник
Дополнение к ответу Алекса Л.
Пункт 3. Измените «Build Settings» -> «Public Folder Folder Path» на «include / xxx», также работает.
источник
Если ничего из вышеперечисленного не помогло вам ... через много времени .......
Я удалил значение в Info.plist для Bundle Version, потому что был достаточно доволен только Bundle Version Short 1.0.Плохой. Не делай этого.
* Обратите внимание, что я на самом деле сделал это, отредактировав его в пользовательском интерфейсе справа, не осознавая, что он поместит пустой ключ в файл Info.plist. Я думаю, что это делает его недействительным. Мой пакет обнаружился как другие элементы во время архивации и не имел значка, и я не мог загрузить никуда.
Это сводится к недопустимым значениям в Info.plist. Если это недопустимый архив, попробуйте разархивировать старый архив и вставить / перезаписать текущий и посмотреть, исправит ли он это при перестройке архива.
источник
Зайдите в настройки сборки и добавьте
yourAppName / Resources / dist.plist для Прав подписи кода
Нажмите cmd + B с устройством iOS или реальным устройством, выбранным в качестве цели сборки
Когда закончите -> перейдите в папку «Продукты» и щелкните правой кнопкой мыши на вашем AppName.app
Выберите «Показать в Finder»
Создайте папку с именем Payload ( заглавная "P" )
Скопируйте yourAppName в свою папку Payload
Создайте zip- файл из своей папки Payload
Переименуйте zip в yourAppName.ipa
СДЕЛАНО
источник
Попробовав практически все:
Затем я заметил, что в моем загрузочном разделе «недостаточно свободного места»… около 1 ГБ или около того. Я перезагрузился, затем получил около 18 ГБ бесплатно.
Затем открыл Xcode и проект, выполнил Archive ... и неожиданно (после часа попыток построить архив) я наконец получил не общий архив.
Не знаю, была ли это проблема с свободным диском, которая исправила его, или перезагрузка macOS, которая это исправила, но у меня это сработало.
источник
Если у вас есть файлы .xcodeproj в Project> Targets> Build Phases> target target, удалите их оттуда и затем соберите свой ipa. Меня устраивает. ура
Вы можете получить ответ здесь: xcode создает общий архив xcode вместо iOS App Archive
источник
В моем случае мне пришлось переместить и FMDB, и BlocksKit в статические библиотеки. Ранее они были построены как подпроекты. Помните, что вы можете использовать липо для создания универсальных библиотек. При создании конечных продуктов код симулятора будет автоматически вырезан.
источник
Другой возможной причиной этого является наличие ссылок в «Целевых зависимостях» на проекты для другой платформы. В моем конкретном случае я работал над проектом, который разделяет код для OSX и iOS. В одной из целей iOS я случайно добавил цель OSX в качестве зависимости.
источник
Чтобы быть тщательным, я публикую свое решение.
Я столкнулся с той же самой проблемой, пытаясь создать Архив проекта iOS в Xcode 5.1.1 (5B1008). Ни одно из приведенных выше предложений не устранило проблему, и большинство из них не относились к делу (я не добавлял никаких фреймворков и не имел открытых записей в разделе «Копировать заголовки» моих этапов сборки).
В моем случае решение проблемы заключалось в простом закрытии моего проекта, удалении любых ранее созданных мной архивов, переходе в «Предпочтения»> «Учетные записи», удалении моей учетной записи разработчика, выходе из Xcode, повторном запуске, повторном добавлении моей учетной записи разработчика, запуске процесса архивирования. очередной раз. Это решило мою проблему немедленно.
источник
Еще одно решение, так как все вышеперечисленное не работает для меня ...
Изменил
User Header Search Paths
(я полагаю,Header Search Paths
будет работать так же элегантно), чтобы"$(BUILT_PRODUCTS_DIR)/BlocksKit"
.Задний план :
В BlockKit разработчики структурировали заголовки в основном проекте иначе, чем структура при развертывании. Таким образом, вы не можете ссылаться на заголовки в проекте и должны ссылаться на заголовки, скопированные в каталог сборки.
источник
То, как это работало для меня в (Xcode 5), у меня было 2 цели, и когда я редактировал схему, на левой панели редактора схемы вы увидите [BUILD, RUN, TEST, PROFILE XXX.APP, ANALYZE, ARCHIVE ] на панели BUILD вы увидите список целей вашего проекта в списке. В дальнем правом конце вы увидите выбор АРХИВ, убедитесь, что для архивирования выбрана только одна цель.
В моем проекте были выбраны 2 мои цели, я проверил только ту цель, которую хотел в продукте, и она сработала!
источник
Я решил эту ошибку, открыв исключительно проект приложения в XCode, т.е. не открывать рабочее пространство содержащее приложение и другие проекты / библиотеки / фреймворки.
Имея 2 отдельных проекта, фреймворк или разделяемую библиотеку и приложение для iOS, мне пришлось открывать 2 разных окна XCode, каждое из которых открывало файл .xcodeproj напрямую, а не общее .xcworkspace , чтобы предварительно собрать каждое из них.
В качестве приятного побочного эффекта XCode больше не перестраивает каждую цель каждого проекта после выполнения очистки , что приводит к сокращению времени сборки.
Предыстория: я создаю SDK с открытым исходным кодом и демонстрационное приложение для iOS. Я открыл оба в одном рабочем пространстве. Установка Skip install to YES для целей SDK не позволит никому создать архив, так как он будет пустым, поэтому это не вариант. Использование Project вместо общедоступных заголовков приведет к тому, что в архиве будут отсутствовать файлы заголовков, которые должны быть распространены, так что это тоже не вариант.
источник
Потому что это было потому, что я работал в рабочей области. Проект был заархивирован, но не будет отображаться в окне органайзера. Я закрыл рабочее пространство и сам открыл проект. Архив был открыт в органайзере ... надеюсь, это поможет.
источник
В моем случае у меня был собственный скрипт, который копировал некоторые временные файлы в:
Это означало, что после изучения архива с целью проверки его содержимого я обнаружил рядом с файлом .app папку myTempDir. Однажды я изменил скрипт, чтобы сохранить в другом месте вещи были отсортированы.
источник
Попробуйте установить $ (PROJECT_NAME) заголовки в пути к общедоступной папке заголовков projet. Вы должны перейти к настройке параметров библиотеки Target, а затем отредактировать путь к папке публичных заголовков как $ (PROJECT_NAME) заголовки.
источник
При использовании Xcode 7 с cocoapods v.0.38.2 . Попробуйте удалить
copy pod resources
из вашей сегодняшней цели расширения.источник
Я столкнулся с этой проблемой после добавления инструмента командной строки OS X в проект моего приложения для iOS, и для параметра «Пропустить установку» по умолчанию для цели инструмента командной строки было задано значение NO Поскольку вы, очевидно, не можете установить двоичный файл OS X на устройство iOS, архивация по умолчанию перешла на общий архив Xcode. Установка Skip Install на YES для этой цели устранила проблему.
источник