2013-04-18 53 views
7

Câu hỏi - phiên bản ngắn:Tại sao các kịch bản lệnh xây dựng của tôi không được thực thi khi tạo IPA từ dòng lệnh?

Tại sao sẽ không xây dựng của tôi phase scripts được thực hiện khi tạo một IPA từ dòng lệnh? Khi tôi đang chạy xcodebuild để tạo IPA, các tập lệnh pha dựng được xác định trước không được thực hiện. Tại sao vậy?


Câu hỏi - dài phiên bản:

Tôi có một không gian làm việc với một chương trình tôi muốn tạo một IPA ra từ dòng lệnh.

Điều này làm việc tốt ngoại trừ một điều; Tôi có hai kịch bản trong giai đoạn xây dựng của mục tiêu được sử dụng để đưa phiên bản ứng dụng chính xác (CFBundleShortVersionString) và số sửa đổi svn chính xác (CFBundleVersion). Những script này hoạt động tốt khi lưu trữ từ xcode nhưng vì một số lý do chúng không chạy khi lưu trữ từ dòng lệnh. Trước hết là tại sao?

Sau đây là các kịch bản đang làm việc (nếu hình thức lưu trữ Xcode) enter image description here enter image description here

Khi lưu trữ và tạo ra IPA từ dòng lệnh tôi làm (các yếu tố cần thiết)

# Building 
xcodebuild ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release clean build 

# Creating IPA 
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${PROJECT_BUILD_DIR}/${APPLICATION_NAME}.app" -o "${IPA_OUTPUT_PATH}/${APPLICATION_NAME}.ipa" 

Nó hoạt động và tạo một IPA nhưng không có kịch bản lệnh xây dựng nào được thực hiện để lại cả số phiên bản và số phiên bản bị ảnh hưởng.

Tất cả các đề xuất đều được đánh giá cao!

CẬP NHẬT DO ĐÁP BDASH của

Thay vì thực hiện một xây dựng sạch tôi thực hiện một cài đặt như

xcodebuild install ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release 

Các kịch bản được xác định trước trong thực tế sẽ được thực hiện (có thể được nhìn thấy trong số phiên bản dự án) không có lỗi trong khi cài đặt. Tuy nhiên, IPA đã tạo sẽ có kích thước ~ 300 byte (thay vì ~ 10MB) và không thể được cài đặt trên thiết bị.

Xây dựng ứng dụng trước khi cài đặt nó, ví dụ:

# Building 
xcodebuild clean build ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release 
# Installing 
xcodebuild install ARCHS="armv7 armv7s" ONLY_ACTIVE_ARCH=NO -workspace MyWorkspace.xcworkspace/ -scheme MyScheme CONFIGURATION_BUILD_DIR=${PROJECT_BUILD_DIR} -configuration Release 

và sau đó tạo ra IPA sẽ dẫn đến một IPA với phiên bản thực thi kịch bản và đúng kích thước NHƯNG nó là không thể cài đặt nó trên một thiết bị. Cố gắng để đặt nó trên một thiết bị sẽ đưa ra một thông báo lỗi nói rằng
"Chương trình" MyApp "đã không được cài đặt trên thiết bị iPhone của bạn" Thiết bị của tôi "vì đã xảy ra lỗi không xác định."

+0

Tôi giả định rằng nếu bạn đang xây dựng từ dòng lệnh, 'xcodebuild' giả định rằng bạn đang thực thi tập lệnh. Có vẻ như một lỗi đối với tôi. –

+0

Bạn có thực sự nhận được giải pháp không? – fatuhoku

Trả lời

2

Bạn có "Chạy tập lệnh chỉ khi cài đặt" được chọn cho ít nhất một trong các giai đoạn tập lệnh. Giai đoạn đó sẽ không chạy khi sử dụng hành động build đến xcodebuild, chỉ khi sử dụng hành động install.

+0

Đã cập nhật câu hỏi của tôi từ kết quả câu trả lời của bạn. – Groot

+0

Khi bạn sử dụng hành động 'install', sản phẩm được xây dựng được cài đặt vào thư mục được chỉ định bởi cài đặt cấu hình' DSTROOT'. Mặc định là '/ tmp/ProjectName.dst' trừ khi bạn ghi đè lên dòng lệnh' xcodebuild'. Điều này không có nhiều để làm với câu hỏi của bạn như ban đầu được hỏi mặc dù. – bdash

+0

Cảm ơn bạn đã giúp bdash! Tôi đang ghi đè thư mục từ dòng lệnh có cả 'build' và 'install' được đặt vào cùng một thư mục. Bạn chính xác rằng điều này lệch một chút từ câu hỏi ban đầu nhưng thực tế vẫn là om đầu tiên kịch bản của tôi không được thực hiện. – Groot

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