Sau khi gửi gần đây, tôi đã gặp lỗi sau:
Chữ ký không hợp lệ - gói ứng dụng lồng nhau (FooBar.app/Contents/Frameworks/GData.framework) không được ký, chữ ký không hợp lệ hoặc không được ký bằng chứng chỉ gửi của Apple. Tham khảo Hướng dẫn ký mã và hộp cát ứng dụng để biết thêm thông tin.
Chữ ký không hợp lệ - gói ứng dụng lồng nhau (FooBar.app/Contents/Frameworks/Growl.framework) không được ký, chữ ký không hợp lệ hoặc không được ký bằng chứng chỉ gửi của Apple. Tham khảo Hướng dẫn ký mã và hộp cát ứng dụng để biết thêm thông tin.
Chữ ký không hợp lệ - gói ứng dụng lồng nhau libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) không được ký, chữ ký không hợp lệ hoặc không được ký bằng chứng chỉ gửi của Apple. Tham khảo Hướng dẫn ký mã và hộp cát ứng dụng để biết thêm thông tin.
Vì vậy, tôi đã ký tất cả các gói khuôn khổ cho mỗi Technote 2206 :
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libcurl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./libcurl.framework/Versions/A/libssh2.1.dylib
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./Growl.framework/Versions/A/Growl
codesign -f -v -s "3rd Party Mac Developer Application: Name" ./GData.framework/Versions/A/GData
Technote 2206 nói:
Khung ký tên
Xem như các khuôn khổ là các gói, có vẻ hợp lý khi kết luận rằng bạn có thể ký một khuôn khổ trực tiếp. Tuy nhiên, đây không phải là trường hợp. Để tránh các vấn đề khi ký khung, hãy đảm bảo rằng bạn ký một phiên bản cụ thể thay vì toàn bộ khung:
# Đây là cách sai:
ký hiệu -s my-ký-nhận dạng ../FooBarBaz.framework
# Đây là cách đúng:
ký mã -s my-ký-nhận dạng ../FooBarBaz.framework/Versions/A
Và khi tôi cố gắng xác minh kết quả, nó có vẻ tốt với tôi:
% codesign -vvv FooBar.app/Contents/Frameworks/libcurl.framework
FooBar.app/Contents/Frameworks/libcurl.framework: valid on disk
FooBar.app/Contents/Frameworks/libcurl.framework: satisfies its Designated Requirement
% codesign -vvv FooBar.app/Contents/Frameworks/Growl.framework
FooBar.app/Contents/Frameworks/Growl.framework: valid on disk
FooBar.app/Contents/Frameworks/Growl.framework: satisfies its Designated Requirement
Để giải trí, tôi đã thử ký trực tiếp vào gói khuôn khổ và nó vẫn bị từ chối. Nhưng đó chính xác là những gì tài liệu nói rằng không nên làm.
Bất kỳ phỏng đoán tại sao điều đó sẽ được coi là không hợp lệ? Tôi đang sử dụng cùng một chứng chỉ mà tôi sử dụng để ký mã ứng dụng của mình - một chứng chỉ đã hoạt động trong quá khứ.
Dự đoán duy nhất của tôi sẽ là điều gì đó liên quan đến các danh sách hiện có (tôi có cần sở hữu số nhận dạng trong Info.plists của khuôn khổ không?) Hoặc các quyền - bất kỳ đề xuất nào?