Programing

Xcode 4.6.3에서 Dropbox API 공동 디자인 실패 : "코드 개체가 전혀 서명되지 않았습니다"

lottogame 2020. 10. 18. 08:19
반응형

Xcode 4.6.3에서 Dropbox API 공동 디자인 실패 : "코드 개체가 전혀 서명되지 않았습니다"


Mac App Store를 통해 배포되고 최근에 Xcode 4.6.3으로 업데이트 된 OS X 앱이 있습니다.

지금 일반 빌드를 실행하면 다음을받습니다.

Command /usr/bin/codesign failed with exit code 1:

/Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app: code object is not signed at all
In subcomponent: /Users/Craig/Library/Developer/Xcode/DerivedData/Mac-dxcgahgplwpbjedqnembegifbowj/Build/Products/Debug/MyApp.app/Contents/Frameworks/DropboxOSX.framework
Command /usr/bin/codesign failed with exit code 1

내 프로젝트의 다른 변경 사항을 식별 할 수없는 것 같아서 4.6.3 업데이트와 관련된 문제인지 아니면 다른 문제인지 알 수 없습니다.

Xcode를 다시 시작하고, 클린 빌드를 실행하고, 빌드 폴더를 정리해 보았습니다.


나는 이것을 알아 낸 것 같습니다. 저는 OS X Mavericks에서 Xcode 4.6.3을 실행하고 있으며, 빌드 별 도구가 Xcode 애플리케이션에 번들로 제공된다는 인상을 받았습니다.

그러나, 그것은 것 codesign입니다 /usr/bin. Xcode 설치 프로그램 중 하나에 의해 설치되었는지 또는 바닐라 시스템 설치와 함께 제공되는지 여부는 확실하지 않습니다. 그러나에 대한 man페이지를 읽어 보면 다음 codesign과 같은 멋진 옵션을 찾았습니다.

--deep  When signing a bundle, specifies that nested code content such as helpers, frameworks, and plug-ins, should be recursively signed
             in turn. Beware that all signing options you specify will apply, in turn, to such nested content.
             When verifying a bundle, specifies that any nested code content will be recursively verified as to its full content. By default,
             verification of nested content is limited to a shallow investigation that may not detect changes to the nested code.
             When displaying a signature, specifies that a list of directly nested code should be written to the display output. This lists only
             code directly nested within the subject; anything nested indirectly will require recursive application of the codesign command.

그리고 나서 2 주 전 (~ 2013 년 6 월) 에서이 게시물 ( https://alpha.app.net/isaiah/post/6774960 )을 찾았습니다 .

@isaiah 나는 실험실의 한 남자에게 그것에 대해 물었습니다. 그는 이제 codesign은 앱 번들 전체에 코드 서명하기 전에 별도로 서명해야하는 임베디드 프레임 워크를 요구한다고 말했습니다.

codesignXcode가 정상적으로 실행하는 명령을 수동으로 다시 실행하고 --deep끝에 플래그를 추가 하면 응용 프로그램에 올바르게 서명됩니다.

이 수동 서명이 어떤 결과를 가져 오는지 또는 --deep플래그를 자동으로 추가하기 위해 Xcode 빌드를 조정할 수 있는지 여부는 아직 확실하지 않지만 이것이 근본적인 문제인 것 같습니다. ( codesign더 이상 앱 번들에 자동으로 깊이 서명하지 않습니다.)


다른 답변에서 강조 표시했듯이 코드 서명 작동 방식이 변경되었습니다. Xcode 5 DP를 설치 한 경우 Xcode 4.6.X를 사용하는 경우에도 새 도구가 사용됩니다.

이 단계 (Xcode 4.6.X에서)에서해야 할 일은 위에서 제안한 --deep 플래그를 가져 와서 코드 서명 플래그 (Target, Build Settings)에 추가하는 것입니다 (아래 이미지 참조).

임베디드 프레임 워크의 딥 서명 지정


나에게이 문제는 내 프로젝트에서 "resources"라는 폴더를 드래그 한 후 발생했습니다. 이름을 다른 것으로 변경 한 후 (예 : "resourcessss") 오류가 사라졌습니다.


같은 문제가 있었지만 대답은 간단했습니다. 내 앱의 코드 서명 ID가 "-"로 설정 되었기 때문에 "Do n't Code Sign"으로 설정하면 문제가 해결되었습니다.

"-"는 일련의 작업을 수행 할 때 기본 설정 인 것처럼 보이지만 그게 뭔지는 말할 수 없습니다.


이것은 누군가에게 도움이 될 수 있습니다.

마침내 시행 착오를 거쳐 해결책을 찾았습니다. 제 경우에는 빌드 설정에서 "제품 이름"변수와 일치하는 폴더 이름이있었습니다. 이것은 또한 전체 프로젝트 이름과 일치했습니다! 그래서 한 필드 만 변경했습니다. “Build Settings”->“Product Name”을 변경했습니다. MySpecialApp의 값이 My-SpecialApp으로 변경되었습니다. 그게 다야! 그런 다음 Apple 개발자 포털에 다시 로그인하여 개발 및 배포를위한 새 앱 ID와 모바일 프로비저닝 프로필을 만들었으며 나머지는 기록입니다. 내 릴리스는 이제 Ad Hoc 배포를 통해 배포 될 때 작동합니다. 이것에 대한 마지막 메모. 이것은 Apple이 사용자에게 무언가 잘못되었음을 알리고 일종의 자동화 된 수정 조치를 활성화해야하는 버그입니다. -더보기 :http://www.chrisdanielson.com/2012/08/29/codesign-ipa-and-the-code-object-is-not-signed-at-all-problem/#sthash.F0nF3BbC.dpuf


나에게 그것은 손상된 Framework PaddleMAs였습니다. 1. Cocoapods 파일에서 제거했습니다. 2. Ran pod install3. Xcode를 다시 시작했습니다.

그리고 그것은 문제를 해결했습니다. 어떤 이유로 손상된 프레임 워크는 서명되는 것을 막을 것입니다. 안타깝게도 XCode는이 오류를 명확하게 표시하지 않으며 좋은 수정 제안을 제공합니다. 수정하기 위해 Apple에 버그를 제기했습니다.

참고 URL : https://stackoverflow.com/questions/17263967/codesign-of-dropbox-api-fails-in-xcode-4-6-3-code-object-is-not-signed-at-all

반응형