Po ostatnim zgłoszeniu otrzymałem następujący błąd:
Nieprawidłowy podpis - zagnieżdżony pakiet aplikacji (FooBar.app/Contents/Frameworks/GData.framework) nie jest podpisany, podpis jest nieprawidłowy lub nie jest podpisany certyfikatem przesłania Apple. Więcej informacji zawiera Podręcznik podpisywania kodu i piaskownicy aplikacji.
Nieprawidłowy podpis - zagnieżdżony pakiet aplikacji (FooBar.app/Contents/Frameworks/Growl.framework) nie jest podpisany, podpis jest nieprawidłowy lub nie jest podpisany certyfikatem przesłania Apple. Więcej informacji zawiera Podręcznik podpisywania kodu i piaskownicy aplikacji.
Nieprawidłowy podpis - zagnieżdżony pakiet aplikacji libcurl (FooBar.app/Contents/Frameworks/libcurl.framework) nie jest podpisany, podpis jest nieprawidłowy lub nie jest podpisany certyfikatem przesyłania firmy Apple. Więcej informacji zawiera Podręcznik podpisywania kodu i piaskownicy aplikacji.
Więc podpisałem wszystkie paczki frameworka zgodnie z 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 mówi:
Struktury podpisywania
Biorąc pod uwagę, że frameworki są pakietami, logiczne byłoby stwierdzenie, że można bezpośrednio podpisać strukturę. Jednak tak nie jest. Aby uniknąć problemów podczas podpisywania frameworków, upewnij się, że podpisujesz konkretną wersję, a nie cały framework:
# To jest zły sposób:
codeign -s my-signing-identity ../FooBarBaz.framework
# To jest właściwy sposób:
codeign -s my-signing-identity ../FooBarBaz.framework/Versions/A
A kiedy próbuję zweryfikować wyniki, wygląda to dobrze:
% 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
Dla zabawy próbowałem bezpośrednio podpisać pakiet frameworka i nadal został odrzucony. Ale to jest dokładnie to, czego dokumentacja mówi, że nie należy robić.
Jakieś przypuszczenia, dlaczego miałoby to zostać uznane za nieważne? Używam tego samego certyfikatu, którego używam do kodowania podpisywania mojej aplikacji - tego, który działał w przeszłości.
Moje jedyne przypuszczenie to coś związanego z istniejącymi plistami (czy muszę posiadać identyfikatory w Info.plists frameworka?) Lub uprawnieniami - jakieś sugestie?