2014-02-28 16 views
0

나는 정말 이상한 코드 네팅 문제가 있습니다. 이전 버전의 거의 동일한 버전이 유효성 검사를 통과하고 App Store에 제출되었으므로 코드 네임이 손상되지 않습니다.플러그인 및 iTunesLibrary로 OS X 응용 프로그램 코딩하기

최근에 나는 iTunesLibrary 프레임 워크를 사용하려고했습니다. 이 프레임 워크는 응용 프로그램이 코드화 된 경우에만 작동합니다. 코드 서명 실패를 나타내는 프레임 워크를 초기화 할 때 일반적인 오류가 발생합니다.

오류 도메인 = NSPOSIXErrorDomain Code = 100001 "로드 할 수 없습니다." 사용자 정보 = 0x100329d80 {NSLocalizedDescription는 =로드 할 수 없습니다., NSUnderlyingError = 0x10031a430 "작업을 완료 할 수 없습니다. (OSStatus 오류 100005.를)"} 내 애플은 여러 프레임 워크 모두 동적으로 링크 및 플러그인으로 구성되어

. 내 응용 프로그램에 재귀 적으로 서명하기 위해 --deep 플래그를 사용했지만 분명히 this는 wrong입니다. 이제 run script 빌드 단계를 사용하여 각 프레임 워크 및 플러그인에 서명합니다. 이것은 codesign이 앱에 서명했음을 알리는 것으로 작동합니다.

나는 앱을 디버그 모드로 빌드하고 아카이브했으며 개발자 ID로 서명 된 프로그램으로 내 보낸 다음 서명을 확인했다. 두 빌드 모드가 모두 성공한다. 실행하면 iTunesLibrary에서 위의 오류가 발생합니다. 나는 응용 프로그램을 내보내고 iTunesLibrary 제대로 작동 한 후, 다음과 같이 그에게 자신을 다시 서명하면 정말 이상한 부분입니다 :

codesign --force --sign "MyIdentity" --deep MyApp.app 

을 이것에 대해 좀 더 자세히 얘기하려고 spctl --assess를 사용하는 경우,이 응용 프로그램을 배울 에도 불구하고 제대로 심하게 서명 사용 :

/Users/me/Desktop/MyApp.app: accepted 
source=Developer ID 
origin=Developer ID Application: Me 
,536,913,632 :

/Users/me/Desktop/MyApp.app: rejected 
iTunesLibrary 그 앱이 다른 한편으로는 좋아하지 않는다

spctl 검사를 통과 10

답변

0

해결책은 iTunesLibrary 프레임 워크를 기본 실행 파일뿐만 아니라 실제로 사용하는 프레임 워크에 링크하는 것입니다. 나는 이유를 알고 싶어요

...

0

당신이 프레임 워크를 내장하는 경우, 당신은이 "파일 복사"는 프레임 워크 대상으로 your.framework 이동 단계를 구축 만들어야합니다. 제대로 일을 할 수없는 짧은 --deep 플래그에서

LOCATION="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}" 
IDENTITY="Developer ID Application: Certificate Common Name" 
codesign --verbose --force --sign "$IDENTITY" "$LOCATION/your.framework/Versions/A" 

: 당신이 머무르는 빌드 단계 후, 같은 뭔가 실행 스크립트를 추가합니다. 예, 중첩 된 번들에 재귀 적으로 서명하지만, 최상위 번들의 매개 변수를 모든 중첩 된 번들에 적용합니다. 결과적으로 앱의 권한으로 인해 결과 번들이 유효하지 않게됩니다.

사람이 통합 설계 --deep 또한 상태 :

; 간접적으로 중첩 된 내용은 codesign 명령을 재귀 적으로 적용해야합니다.

+0

예, 모두 완료되었습니다. 문제는 iTunesLibrary의 코드 서명 검사가 프레임 워크가 동적 실행 파일이나 동적 lib 또는 플러그인이 아닌 링크에 연결되어야한다는 것입니다. – Tim