PackageApplication перестал работать с OS X 10.10 (Yosemite) сегодня

ОБНОВЛЕНИЕ: правильный ответ, вероятно, такой: Ошибка Xcode 6.1 при сборке IPA

Использование Jenkins для создания проектов iOS из репозиториев уже несколько лет. Внезапно сегодня возникает новая ошибка, останавливающая сборку.

Я думаю, что большую часть этой настройки я основывал на этом уроке:

http://www.raywenderlich.com/22816/beginning-automated-testing-with-xcode-part-22

Этот шаг вызывает ошибку:

# 4
echo "*** Post build step 4"
/usr/bin/xcrun -sdk iphoneos PackageApplication \
-o "${IPA_DIR}/${PROJECT}.ipa" \
-verbose "${APP}" \
-sign "${SIGNING_IDENTITY}" \
--embed "${PROVISIONING_PROFILE}"

Немного сложно смотреть логи, где возникает ошибка, но вот она:

### Codesigning '/Users/Shared/Jenkins/Home/jobs/myapp/workspace/myapp_adhoc_7.mobileprovision' with 'iPhone Distribution: mycompany Inc.'
+ /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign iPhone Distribution: mycompany Inc. --resource-rules=/var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/Payload/myapp.app/ResourceRules.plist --entitlements /var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/entitlements_plistYdluSmqT /var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/Payload/myapp.app
Program /usr/bin/codesign returned 1 : [Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)!
Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!
/var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/Payload/myapp.app/ResourceRules.plist: cannot read resources
]
error: /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign iPhone Distribution: mycompany Inc. --resource-rules=/var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/Payload/myapp.app/ResourceRules.plist --entitlements /var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/entitlements_plistYdluSmqT /var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/Payload/myapp.app failed with error 1. Output: Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)!
Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!
/var/folders/y1/4hrpc2851b7dxn9bhlkhbrnr00007q/T/ipIxOjxE2z/Payload/myapp.app/ResourceRules.plist: cannot read resources

Я попытаюсь исправить это сам, а позже добавлю решение здесь, но если кто-то быстрее меня, пожалуйста, продолжайте.

  • Я не указал --resource-rules ни в каких настройках. Я предполагаю, что xcrun использует этот параметр сам по себе, хотя он устарел.

person Jonny    schedule 22.10.2014    source источник


Ответы (2)


Вместо использования xcrun вы можете использовать xcodebuild для создания архива, а затем снова запустить xcodebuild для создания файла IPA.

# Create an archive
xcodebuild -alltargets -configuration "${CONFIGURATION}" -scheme "${SCHEME}" -archivePath "${APP_PATH}/${PROJECT}.xcarchive" archive

# Create the IPA file from the archive
xcodebuild -exportProvisioningProfile "${PROVISIONING_PROFILE_NAME}" -exportArchive -exportFormat IPA -archivePath "${APP_PATH}/${PROJECT}.xcarchive" -exportPath "${IPA_DIR}/${PROJECT}.ipa" CODE_SIGN_IDENTITY="${SIGNING_IDENTITY}"

Обратите внимание, что ${PROVISIONING_PROFILE_NAME} должно содержать имя предварительного профиля, а не путь к самому файлу.

person Gil Osher    schedule 11.06.2015

Нашел ответ.

Проблема, которая возникла сейчас, заключалась в том, что "xcrun PackageApplication" что-то в строке. Мне пришлось удалить параметр «-sign some profile», после чего все снова заработало.

Тем не менее, я не знаю, почему подписание было необходимо раньше и почему сейчас нет, поэтому не могу сказать, вызовет ли это какую-то проблему позже.

person Jonny    schedule 22.10.2014
comment
Простое удаление подписи не является хорошей идеей, если вы распространяете свое приложение. Ваше xcrun PackageApplication не работает из-за устаревшего параметра --resource-rules, используемого xcrun. Apple сделала это устаревшим некоторое время назад, но не обновила xcrun, чтобы просто исключить это. Вот почему с этого момента кодирование просто терпит неудачу, если ResourceRules.plist отсутствует. - person Evils; 12.11.2014
comment
Так что вы предлагаете, у вас есть лучший ответ? - person Jonny; 14.11.2014
comment
Это: stackoverflow.com/a/26499526/129202 имеет много голосов, это может быть правильно. - person Jonny; 14.11.2014
comment
Действительно stackoverflow.com/questions/26497863/ - правильный ответ, по крайней мере, это сработало для меня и множества других людей... - person Jonny; 14.11.2014
comment
stackoverflow.com/questions/26497863/ ... у меня тоже сработало. Спасибо! - person JavaSplice; 08.01.2015