Số phiên bản Settings.bundle đang cập nhật là $ (MARKETING_VERSION)


8

Tôi có một ứng dụng tự động cài đặt các phiên bản khi tôi tăng từ

XCode> Chung> Phiên bản .

Nhưng gần đây tôi đã cập nhật XCode lên 11.0 và dường như tập lệnh không hoạt động như mong đợi:

version=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $SRCROOT/MyApp/Info.plist`
version+=" ("
version+=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $SRCROOT/MyApp/Info.plist`
version+=")"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

Tập lệnh trên giả sử tự động cập nhật phiên bản và sẽ hiển thị trong Cài đặt> Ứng dụng.

nhập mô tả hình ảnh ở đây

Nhưng câu hỏi là có bất kỳ thay đổi nào cần phải được thực hiện cho tập lệnh này để tự động cập nhật số phiên bản từ XCode không?

Hiện tại, nó đang được thay thế bởi các tập lệnh là $ (MARKETING_VERSION) khi phiên bản được tăng từ XCode> Chung> Phiên bản không chính xác.


1
Không phải là này những gì bạn đang tìm kiếm? how-to-read-current-app-version-in-xcode-11-with-script
Mojtaba Hosseini

Nó hoạt động bằng cách thực hiện một số thay đổi như được đề cập trong câu trả lời của tôi. Nhưng tôi không chắc có nên trích xuất từ ​​bảng phân cảnh như bạn đang làm hay không.
Nagarjun

Đó không phải là trích xuất từ bảng phân cảnh. Điều đó thay thế nó.
Mojtaba Hosseini

Bạn hoàn toàn không sử dụng sourceFilePath phải không?
Nagarjun

Không (nhầm lẫn), nhưng đó không phải là một phần của vấn đề;)
Mojtaba Hosseini

Câu trả lời:


5

Chuỗi phiên bản $MARKETING_VERSIONcũng như số bản dựng $CURRENT_PROJECT_VERSIONhiện được hiển thị dưới dạng biến môi trường trong quá trình xây dựng vì hiện tại chúng vẫn tồn tại trong .pbxprojcấu hình.

Bạn sẽ có thể đạt được những gì bạn muốn như thế này:

version="$MARKETING_VERSION ($CURRENT_PROJECT_VERSION)"
/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

$ CURRENT_PROJECT_VERSION không hiển thị bất cứ điều gì. Tuy nhiên phiên bản được hiển thị trong $ MARKETING_VERSION.
Nagarjun

2

Nó hoạt động bằng cách hiển thị MARKETING_VERSION: Cảm ơn @dgimb và @Mojtaba Hosseini cho câu trả lời của bạn.

version="$MARKETING_VERSION"
version+=" ("
version+=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $SRCROOT/MyApp/Info.plist`
version+=")"

/usr/libexec/PlistBuddy "$SRCROOT/MyApp/Settings.bundle/Root.plist" -c "set PreferenceSpecifiers:1:DefaultValue $version"

Tôi có một thông báo lỗi Đặt: Entry, "PreferenceSpecifier: 1: DefaultValue", Không tồn tại Lệnh PhaseScriptExecut không thành công với mã thoát không khác
ΩlostA

Bạn có thể chia sẻ kịch bản.
Nagarjun
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.