2014-10-22 13 views
7

UPDATE: Câu trả lời đúng có lẽ là một điều này: Xcode 6.1 error while building IPAPackageApplication ngừng làm việc với OS X 10.10 (Yosemite) hôm nay

Sử dụng Jenkins để xây dựng các dự án iOS từ kho từ một vài năm. Đột nhiên ngày hôm nay một lỗi mới xảy ra, ngừng xây dựng.

Tôi nghĩ tôi dựa nhất của thiết lập này trên con đường hướng dẫn này lại:

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

Bước này gây ra lỗi:

# 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}" 

Đó là một chút khó khăn để nhìn vào các bản ghi nơi lỗi xảy ra, nhưng tại đây là:

### 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 

Tôi sẽ cố gắng sửa lỗi này và sau đó thêm giải pháp vào đây, nhưng trong trường hợp bất kỳ ai nhanh hơn tôi thì hãy tiếp tục.

  • Tôi chưa chỉ định --resource-rules trong bất kỳ cài đặt nào. Tôi đoán xcrun sử dụng cài đặt này một mình, mặc dù nó không được dùng nữa.

Trả lời

8

Tìm câu trả lời.

Sự cố đã xảy ra ngay bây giờ là dòng thứ "xcrun PackageApplication". Tôi đã phải loại bỏ tham số "-sign some profile", sau đó mọi thứ bắt đầu hoạt động trở lại.

Điều đó nói rằng tôi không biết tại sao ký là cần thiết trước đây và tại sao nó không phải là bây giờ vì vậy không thể nói nếu điều này sẽ gây ra một số vấn đề sau này.

+0

Điều này cũng làm việc hoàn hảo cho tôi. –

+3

Chỉ cần xóa đăng nhập không phải là ý tưởng hay nếu bạn phân phối ứng dụng của mình. Gói ứng dụng xcrun của bạn không thành công do tham số không được chấp nhận --quy tắc -quy tắc được xcrun sử dụng. Apple đã làm lỗi thời một thời gian trước nhưng không cập nhật xcrun chỉ đơn giản là bỏ qua điều đó. Đó là lý do tại sao từ đây trên codesigning chỉ đơn giản là thất bại nếu ResourceRules.plist không có ở đó – Evils

+0

Vì vậy, những gì bạn đề nghị, bạn có một câu trả lời tốt hơn? – Jonny

11

Thay vì sử dụng xcrun, bạn có thể sử dụng xcodebuild để tạo lưu trữ và sau đó chạy lại xcodebuild để tạo tệp 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}" 

Lưu ý rằng ${PROVISIONING_PROFILE_NAME} nên chứa tên của hồ sơ tạm thời, và không phải là đường dẫn đến tập tin đó.

Các vấn đề liên quan