Как исправить проблему "Ошибка команды /bin/sh с кодом выхода 1" в iphone
Я использовал статическую библиотеку какао в своем приложении. Когда я компилировал свою библиотеку, я получил следующую ошибку:
Shell Script invocation error:can't open input file:
/Users/sijuthomas/Library/Developer/Xcode/DerivedData/SCXML2-
bbttehupryhijphhjdiemcytkvgy/Build/Products/Debug-iphonesimulator/
libSCXMLParser.a (No such file or directory)
Command /bin/sh failed with exit code 1
Как я могу это исправить?
18 ответов
Build-Phases -> примеры обновления">
Установите флажок "Запустить", если не выбран.
У меня была эта проблема, потому что я отказал в доступе к цепочке для ключей, и для ее решения вам нужно открыть цепочку для ключей. Затем нажмите на замок в правом верхнем углу экрана, чтобы снова заблокировать его, после чего вы можете заархивировать, и он будет работать
Удаление "Производных данных" сработало у меня.
В XCode перейдите в Файл> Настройки Рабочего пространства> Щелкните стрелку рядом с путем к файлу Производных данных> переместите папку "Производных данных" в корзину.
Кажется, вы запускаете сценарий оболочки, и он не может найти ваш конкретный файл. смотреть на Target -> Build-Phases -> RunScript
если вы запускаете скрипт.
Вы можете проверить, работает ли скрипт в выводе вашей сборки (на панели навигатора). Если ваш скрипт что-то делает не так, фаза сборки остановится.
У меня была та же проблема, это исправили. Используйте следующие шаги для решения проблемы в Xcode 6.4.
- Нажмите на Показать навигатор проекта в окне навигатора.
- Теперь выберите проект сразу под окном навигатора
- Выберите цели
- Выберите вкладку Build Phases
- Открыть раскрывающийся список "Выполнить скрипт"
- Установите флажок Запускать сценарий только при установке
Теперь очистите ваш проект (cmd+shift+k) и постройте свой проект.
Очистка папки сборки (Cmd + Shift + Alt + K) у меня сработала
1) Удалите папку pod и файл.xcworkspace 2) Откройте папку в терминале 3) Введите "pod install"
Вы добавили библиотеку.a в проект xcode? (проект -> этапы сборки -> связать бинарный файл с библиотеками -> нажмите "+" -> нажмите "добавить другое" -> выберите свою библиотеку)
А может быть библиотека не совместима с симулятором, вы пытались скомпилировать для iDevice (не симулятор)?
(Я уже боролся со второй проблемой, у меня есть библиотека, которая не работает с симулятором, но на реальном устройстве она компилируется...)
В моем случае было место в пути, в котором произошел сбой сценария. Если вы используете переменные, такие как $PROJECT_DIR
или же $TARGET_BUILD_DIR
затем заменить их "$PROJECT_DIR"
или же "$TARGET_BUILD_DIR"
соответственно. После добавления цитат мой скрипт успешно запустился.
Для меня срок действия моего сертификата истек. Я создал новый сертификат.
Я сделал все выше и потратил час на выпуск.
Перепробовал все выше, а также перезапустил Xcode.
Наконец-то перезагрузил компьютер и все снова заработало нормально!
Для тех, кто не хочет снимать эту опцию (например, с помощью cocoapods), проблема может заключаться в сертификате / ключе.
Xcode (или любой другой инструмент, который вы используете, например инструмент командной строки) должен иметь возможность использовать сертификат / ключ из цепочки для ключей. Для этого откройте брелок, найдите сертификат, который вы хотите использовать (обычно на login
Брелок, My Certificates
), щелкните правой кнопкой мыши на кнопке и выберите Get Info
, нажмите на Access Control
и добавьте приложение в список.
Если это не работает, попробуйте разблокировать брелок.
Другим вариантом может быть выбор Разрешить всем приложениям доступ к этому элементу вместо определенных приложений и / или перемещение сертификата / ключа в System
брелок, который используется всеми учетными записями на этом Mac.
Также убедитесь, что срок действия сертификата не истек.
В моем случае один из скриптов (относящихся к SwiftGen
) не удалось выполнить компиляцию.
Я решил проблему, удалив Pods
а затем снова их обновить.
- Удалите проблемную капсулу под
Pods
каталог или используйтеpod deintegrate
- Установите / обновите модули, используя
pod install
илиpod update
PS Возможно, ваша зависимость глобальная, а не в подах. В этом случае вы также можете попробовать переустановить эту зависимость.
Я перечислю то, что я сделал, что не работает для меня, и, наконец, что сделал
Во-первых, принятый ответ Run script только при установке не сработал.
Удаление производных данных не сработало.
Что сработало:
Я добавил новую фазу сборки в Фазы сборки
Новый этап копирования файлов
Перетащите выбранные рамки в целевой объект
Установите "Назначение" для Frameworks
Кредит из-за среднего поста Кевина Ле
Для меня эта ошибка произошла, потому что я изменил номер версии с 1 на 1.0 и номер сборки с 6 на 1.1, когда я извлек код из дерева исходного кода. Я просто изменил его обратно и изменил номер сборки с 6 на 7, и он работал нормально.
Я попытался перезапустить Xcode (7) и ничего (вы пытались выключить и снова включить iOS-разработку для меня:-)). Затем я попытался перезагрузить мой ящик, и это сработало.
В моем случае скрипт не работал при копировании файла из одного места в другое. Я думаю, что это могло быть связано с тем, что Finder не работает с правами на запись в определенные папки.
ПРОЧИТАЙТЕ ЭТО, ЕСЛИ ВЫ ИСПОЛЬЗУЕТЕ Crashlytics И ЕСТЬ ЭТА ПРОБЛЕМА...
У меня была та же проблема, что и выше Command /bin/sh failed with exit code 1
более конкретно [31merror: Could not fetch upload-symbols settings: An unknown error occurred fetching settings.[0m
Первое решение (включение сценария запуска только при установке) позволило мне построить мою цель в симуляторе, но я не смог заархивировать свою сборку.
Я решил эту проблему с архивом, включив Crashlytics на firebase. Я до сих пор привык к Fabric, где Crashlytics включается автоматически. Как только я включил Crashlytics в консоли firebase для соответствующего GoogleService-Info.plist, я смог заархивировать без этой ошибки.
Просто поместите ваш скрипт в файл и запустите этот файл с 2>/dev/null в конце командной строки!
Таким образом, если есть какие-либо проблемы с командой, она не остановит сборку xcode
в моем случае я выполнял только команду, чтобы удалить мою предыдущую копию приложения с подключенного iphone, чтобы он мог выдать ошибку, если iphone нет. Чтобы решить это:
$mobiledevice uninstall_app com.my.app 2>/dev/null
Единственное, что сработало для меня:
1) Удалите производные данные с помощью CleanMyMac: системный мусор -> мусор XCode -> производные данные XCode
Удаление полученных данных с помощью CleanMyMac
2) Тогда в Xcode: Product -> Clean
Удалите все модули и установите снова.
шаги:
- закомментируйте все стручки и бегите
pod install
- раскомментируйте все капсулы и бегите
pod install