2011-01-31 27 views
9

Tôi đang tìm cách tự động thêm thông tin về ứng dụng trong quá trình xây dựng ứng dụng iOS.Tạo thông tin trong Ứng dụng iOS (ứng dụng ngày/giờ đã được tạo)

Trong khi thử nghiệm, thật tuyệt khi biết khi nào ứng dụng tôi đã cài đặt trên thiết bị của mình được xây dựng và có thể ai cũng xây dựng nó cũng sẽ là một điều tốt để biết.

Tôi đang hình dung một phần trong settings.app sẽ cung cấp thông tin cơ bản về xây dựng cho mục đích gỡ lỗi. Tôi không muốn phải cập nhật tệp xây dựng thông tin theo cách thủ công trước mỗi bản dựng - dữ liệu sẽ được tạo động.

+1

Những câu hỏi tương tự này có thể cung cấp một số ý tưởng về cách đóng dấu giá trị vào tệp tại thời gian xây dựng: [Chèn số phiên bản Subversion trong Xcode] (http://stackoverflow.com/questions/372218/insert-subversion-revision-number- in-xcode) và [Làm cách nào tôi có thể hiển thị bản sửa đổi phiên bản ứng dụng trong gói cài đặt của ứng dụng?] (http://stackoverflow.com/questions/877128/how-can-i-display-the-application-version-revision- in-my-applications-settings-b) –

+0

Cảm ơn Brad, đó là những tài nguyên tuyệt vời. –

Trả lời

7

Bạn có thể viết giai đoạn xây dựng tập lệnh shell trong Xcode chạy ở cuối quá trình xây dựng của bạn. Trong giai đoạn này, bạn có thể sử dụng lệnh defaults để ghi dữ liệu vào một tệp tùy ý. Tôi đã sử dụng kỹ thuật này để ghi vào tệp Info.plist, nhưng bạn có thể ghi vào bất kỳ tệp nào bạn muốn [1].

Dưới đây là một kịch bản mẫu để viết phiên bản git hiện tại để info.plist:

infoplist="$BUILT_PRODUCTS_DIR/$INFOPLIST_PATH" 
gitversion="$(cd "$SRCROOT" && git describe --always --dirty 2>/dev/null)" 
if [[ -n "$gitversion" ]]; then 
    defaults write "${infoplist%.plist}" GitVersion "$gitversion" 
fi 

Bạn sẽ có thể thích ứng này để trỏ đến tập tin bạn muốn (ví dụ Cài đặt bó của bạn) và viết các thông tin bạn muốn.

[1] Hãy cẩn thận nếu bạn viết thư cho Info.plist, Xcode có lỗi có thể ngăn không cho nó nhận ra Info.plist đã thay đổi trong quá trình tạo, có thể phá vỡ cấp phép khi thực hiện xây dựng thiết bị.

+0

Ý tưởng tuyệt vời, tuy nhiên ... Tôi làm điều này để lưu một BuildDateTime chính. Tôi có thể đọc [[NSBundle mainBundle] objectForInfoDictionaryKey: @ "BuildDateTime"] tốt trong trình mô phỏng, nhưng khi tôi xây dựng cho phân phối AdHoc và tải ứng dụng trên thiết bị, [[NSBundle mainBundle] objectForInfoDictionaryKey: @ "BuildDateTime"] trả về null . Bất kỳ ý tưởng? – mputnamtennessee

+0

@mputnamtennessee: Bạn đã thử mở bản dựng đặc biệt của mình và kiểm tra Info.plist bằng tay chưa? –

13

Bạn cũng có thể sử dụng macro chuẩn __DATE__, kết quả là chuỗi như "Jun 25 1980" tất nhiên với ngày xây dựng hiện tại phù hợp.

+0

Đây là cách để đến đây. – Emilio

+3

Để chuyển đổi macro __DATE__ đó thành một kiểm tra NSString câu hỏi này: http://stackoverflow.com/questions/2862469/iphone-sdk-objective-c-date-compile-date-cant-be-converted-to-an -nsdate – Emilio

+2

Bạn cũng có thể sử dụng macro '__TIME__' để thêm thời gian vào ngày. – rmaddy

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