Я только что решил эту проблему - просто добавьте аргумент -archivePath
в командную строку сборки xcode, учитывая первоначальный вопрос, который будет означать:
xcodebuild -scheme myscheme archive
становится ...
xcodebuild -scheme myscheme archive -archivePath Build/Archive
(Примечание: пути относительны, я вывожу свою сборку в $PWD/Build
)
После этого ваша папка .app будет помещена в:
Build/Archive.xarchive/Products/Application
Если ваша цель сборки ужев нем есть ваш сертификат подписи и профиль обеспечения, вы можете затем создать свой IPA-файл без повторной подписи, используя следующую команду:
xcrun -v -sdk iphoneos PackageApplication -v `pwd`'/Build/Archive.xarchive/Products/Application/my.app' -o `pwd`'/myapp.ipa'
(Примечание: xcrun не любит относительные пути, следовательно, pwd
)
-v args выводит много полезной информации - эта команда может не подписаться должным образом и все равно завершиться с кодом 0, вздох!
Если вы обнаружите, что не можете запустить встроенный.ipa, вероятно, это проблема подписи, которую вы можете выполнить двойной проверкой, используя:
codesign --verify -vvvv myapp.app
Если она подписана правильно и не изменена с выходными данными, это будет иметь место в:
myapp.app: valid on disk
myapp.app: satisfies its Designated Requirement
Если нет, то вы увидите нечто похожее на это:
Codesign check fails : /blahpath/myapp.app: a sealed resource is missing or invalid
file modified: /blahpath/ls-ios-develop.app/Assets.car
... что обычно означает, что вы пытаетесь использовать промежуточный выходной каталог, а не нужный архив.