Apple sắp xếp lại / sắp xếp lại các lĩnh vực.
Đi tiếp, nếu bạn nhìn vào tab Thông tin cho Mục tiêu ứng dụng của mình, bạn nên sử dụng "Chuỗi phiên bản gói, ngắn" làm Phiên bản của bạn (ví dụ: 3.4.0) và "Phiên bản gói" làm Bản dựng của bạn (ví dụ: 500 hoặc 1A500 ). Nếu bạn không thấy cả hai, bạn có thể thêm chúng. Những người này sẽ ánh xạ tới các hộp văn bản Phiên bản và Xây dựng thích hợp trên tab Tóm tắt; chúng là những giá trị giống nhau
Khi xem tab Thông tin, nếu bạn nhấp chuột phải và chọn Hiển thị Khóa / Giá trị Nguyên , bạn sẽ thấy tên thực là CFBundleShortVersionString
(Phiên bản) và CFBundleVersion
(Bản dựng).
Phiên bản thường được sử dụng theo cách bạn dường như đã sử dụng nó với Xcode 3. Tôi không chắc bạn đang hỏi về mức độ khác biệt về Phiên bản / Bản dựng, vì vậy tôi sẽ trả lời về mặt triết học.
Có tất cả các loại kế hoạch, nhưng một kế hoạch phổ biến là:
{MajorVersion}. {MinorVersion}. {Sửa đổi}
- Phiên bản chính - Thay đổi lớn, thiết kế lại và thay đổi chức năng
- Phiên bản nhỏ - Cải tiến nhỏ, bổ sung chức năng
- Sửa đổi - Một số bản vá cho sửa lỗi
Sau đó, Bản dựng được sử dụng riêng để chỉ ra tổng số bản dựng cho một bản phát hành hoặc cho toàn bộ thời gian sử dụng của sản phẩm.
Nhiều nhà phát triển bắt đầu xây dựng số Xây dựng ở mức 0 và mỗi khi họ xây dựng, họ tăng số lượng lên một, tăng mãi mãi. Trong các dự án của tôi, tôi có một tập lệnh tự động tăng số bản dựng mỗi lần tôi xây dựng. Xem hướng dẫn cho điều đó dưới đây.
- Bản phát hành 1.0.0 có thể là bản dựng 542. Phải mất 542 bản dựng để có bản phát hành 1.0.0.
- Phát hành 1.0.1 có thể là bản dựng 578.
- Phiên bản 1.1.0 có thể là bản dựng 694.
- Phiên bản 2.0.0 có thể là bản dựng 949.
Các nhà phát triển khác, bao gồm Apple, có số Build bao gồm một phiên bản chính + phiên bản nhỏ + số bản dựng cho bản phát hành. Đây là những số phiên bản phần mềm thực tế, trái ngược với các giá trị được sử dụng để tiếp thị.
Nếu bạn đi tới menu Xcode > Giới thiệu về Xcode , bạn sẽ thấy các số Phiên bản và bản dựng. Nếu bạn nhấn nút Thông tin thêm ... bạn sẽ thấy một loạt các phiên bản khác nhau. Kể từ khi thông tin ... More nút được loại bỏ trong Xcode 5, thông tin này cũng có sẵn từ các phần mềm> Nhà phát triển phần của Hệ thống thông tin ứng dụng, có sẵn bằng cách mở của Apple menu> Giới thiệu về Mac > Báo cáo Hệ thống ... .
Ví dụ: Xcode 4.2 (4C139). Phiên bản tiếp thị 4.2 là Xây dựng phiên bản chính 4, Xây dựng phiên bản phụ C và Số xây dựng 139. Bản phát hành tiếp theo (có lẽ là 4.3) có thể sẽ là Bản phát hành 4D và số Bản dựng sẽ bắt đầu từ 0 và tăng dần từ đó.
Các số Phiên bản / Bản dựng của Trình mô phỏng iPhone cũng giống như vậy, như iPhone, Mac, v.v.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Cập nhật : Theo yêu cầu, đây là các bước để tạo tập lệnh chạy mỗi khi bạn xây dựng ứng dụng của mình trong Xcode để đọc số Build, tăng nó và ghi lại vào {App}-Info.plist
tập tin của ứng dụng . Có các bước tùy chọn, bổ sung nếu bạn muốn viết số phiên bản / số bản dựng vào Settings.bundle/Root*.plist
(các) tệp của mình.
Điều này được mở rộng từ bài viết hướng dẫn ở đây .
Trong Xcode 4.2 - 5.0:
- Tải dự án Xcode của bạn.
- Trong khung bên trái, nhấp vào dự án của bạn ở đầu phân cấp. Điều này sẽ tải trình soạn thảo cài đặt dự án.
- Ở phía bên trái của cửa sổ trung tâm, nhấp vào ứng dụng của bạn dưới tiêu đề TARGETS . Bạn sẽ cần phải cấu hình thiết lập này cho từng mục tiêu dự án.
- Chọn tab Build Ph Phase .
- Trong Xcode 4, ở dưới cùng bên phải, nhấp vào nút Thêm giai đoạn xây dựng và chọn Thêm chạy tập lệnh .
- Trong Xcode 5, chọn menu Editor > Add Build Phase > Add Run Script Build Phase .
- Kéo và thả giai đoạn Run Script mới để di chuyển nó đến ngay trước giai đoạn Sao chép tài nguyên gói (khi tệp app-info.plist sẽ được gói cùng với ứng dụng của bạn).
- Trong giai đoạn Run Script mới , hãy đặt Shell :
/bin/bash
.
Sao chép và dán đoạn mã sau vào vùng tập lệnh cho số xây dựng số nguyên:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Như @Bdebeez đã chỉ ra, Công cụ Phiên bản Chung của Apple ( agvtool
) cũng có sẵn. Nếu bạn thích sử dụng nó thay vào đó, thì có một vài điều cần thay đổi trước tiên:
- Chọn tab Cài đặt bản dựng .
- Trong phần Phiên bản , đặt Phiên bản dự án hiện tại thành số bản dựng ban đầu bạn muốn sử dụng, ví dụ: 1 .
- Quay lại tab Xây dựng giai đoạn , kéo và thả giai đoạn Run Script của bạn sau giai đoạn Sao chép tài nguyên gói để tránh điều kiện cuộc đua khi cố gắng xây dựng và cập nhật tệp nguồn bao gồm số bản dựng của bạn.
Lưu ý rằng với agvtool
phương pháp, bạn vẫn có thể định kỳ nhận các bản dựng bị lỗi / bị hủy mà không có lỗi. Vì lý do này, tôi không khuyên bạn nên sử dụng agvtool
với tập lệnh này.
Tuy nhiên, trong giai đoạn Run Script của bạn, bạn có thể sử dụng tập lệnh sau:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
Đối next-version
số tăng số bản dựng ( bump
cũng là bí danh cho cùng một thứ) và -all
cập nhật Info.plist
với số bản dựng mới.
Và nếu bạn có gói Cài đặt nơi bạn hiển thị Phiên bản và Bản dựng, bạn có thể thêm phần sau vào cuối tập lệnh để cập nhật phiên bản và bản dựng. Lưu ý: Thay đổi các PreferenceSpecifiers
giá trị để phù hợp với cài đặt của bạn. PreferenceSpecifiers:2
có nghĩa là xem mục ở chỉ số 2 dưới PreferenceSpecifiers
mảng trong tệp plist của bạn, vì vậy đối với chỉ mục dựa trên 0, đó là cài đặt ưu tiên thứ 3 trong mảng.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Nếu bạn đang sử dụng agvtool
thay vì đọc Info.plist
trực tiếp, bạn có thể thêm phần sau vào tập lệnh của mình:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Và nếu bạn có một ứng dụng phổ biến cho iPad và iPhone, thì bạn cũng có thể đặt cài đặt cho tệp iPhone:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist