OS X Framework 라이브러리가로드되지 않았습니다 : '이미지를 찾을 수 없습니다'


279

기본 OS X 프레임 워크를 만들려고합니다. 지금은 테스트 프레임 워크를 만들었습니다. TestMacFramework.framework새로운 OS X 응용 프로그램 프로젝트로 가져 오려고합니다.

.framework 파일을 빌드하여 새 프로젝트로 가져 왔습니다. 프레임 워크가 제대로 연결되어있는 것으로 보입니다. 프레임 워크 빌드 단계 섹션에 추가 한 공개 헤더 파일을 참조 할 수 있습니다.

그러나 컨테이너 응용 프로그램을 실행하려고하면 다음 오류가 발생합니다.

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

약간의 인터넷 검색 후 Copy Files컨테이너 응용 프로그램 빌드 단계에 섹션 을 추가해야한다는 것을 알았 으므로이 작업을 수행하고 설정했습니다.

여기에 이미지 설명을 입력하십시오

그러나 여전히 런타임 오류가 발생합니다. 분명히 여기에서 잘못된 일을하고 있지만이에 대한 Apple 개발자 라이브러리 리소스는 Xcode 2를 참조하므로별로 도움이되지 않습니다!

내가 무엇을 놓쳤습니까?

최신 정보:

빌드 로그에서 내 TestMacFramework.framework.app contents / frameworks 디렉토리로 복사되고 있지만 HD의 Library / Frameworks 디렉토리에 설치되지 않음을 알 수 있습니다.

여기에 이미지 설명을 입력하십시오

업데이트 2 :

내가 수동으로 복사하는 경우 빌드가 제대로 연결 TestMacFramework.frameworkLibrary/Frameworks디렉토리


1
otool -L앱이 프레임 워크를 찾는 위치에 대해 무엇을 알려줍니까?
trojanfoe

좋아, 나는 그것을 실행하는 방법을 알아 냈습니다 ... 이것은 내 라이브러리에 대한 결과입니다 (재단 등과 같은 다른 종속성을 제외했습니다)/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Sammio2

내 수정은 필요한 라이브러리 (Alamofire)를 이진 파일로 포함시키는 것이 었습니다. 이것이 허용됩니까?
Cmag

2
이 질문에 OS X 용으로 명확하게 태그되어 있으며 허용 된 답변을 포함한 모든 답변이 iOS 용이라는 것이 매우 혼란 스럽습니다. 나는 같은 오류가 있으며 어떤 대답도 사용할 수 없습니다.
RenniePet

@RenniePet Xcode 7.3부터 프로세스는 iOS 및 macOS 프레임 워크에서 동일하므로 허용되는 답변이 올바른 방법입니다. 여전히 문제가 발생하면 관련이없는 문제 일 수 있습니다.
Sammio2

답변:


553

[Xcode 11+]

할 일은 앱 대상 탭의 General->Frameworks, Libraries And Embedded Content섹션에 프레임 워크를 추가하는 것 General입니다.

'내장 및 서명'옵션을 선택했는지 확인하십시오.

여기에 이미지 설명을 입력하십시오

[Xcode v6-> Xcode v10]

할 일은 앱 대상 탭의 Embedded binaries섹션에 프레임 워크를 추가하는 것 General입니다.

Xcode의 스크린 샷


32
이것은 iOS에 필요한 유일한 단계입니다.
nikolovski

7
감사! iOS에서 나를 위해 해결했습니다.
user1244109

6
감사합니다! 그것은 iOS 용 나를 도와
알렉산더 Khitev에게

4
Storyboard에서 가져온 프레임 워크의 클래스를 사용하고 있으며이 오류가 발생했습니다. 스토리 보드에서 커스텀 클래스를 설정하는 것 외에도 모듈 필드를 설정해야합니다.
Ruben Martinez Jr.

8
@ZevsVU Embedded binariesmacOS 프로젝트에 섹션 이 없습니다 . 뭐가 문제 야?
fnc12

56

그래서 나는 그것을 작동 시켰습니다. 올바른 지시가있을 때 매우 간단합니다. 내가 찾고있는 것은 시스템 라이브러리 폴더에 쓰여지지 않고 앱 번들에있는 '개인'프레임 워크였습니다.

프레임 워크 구축

  1. 대상을 추가하여 Cocoa Framework 생성
  2. 이 대상 내 '빌드 설정'에서 '설치 디렉토리'를 '@ executable_path /../ Frameworks'로 구성하십시오.
  3. 라이브러리를 빌드하고 아카이브 또는 제품 디렉토리에서 .framework에 액세스하십시오.

프레임 워크 포함

  1. 생성 된 .framework 파일을 Xcode 프로젝트로 드래그하여 '파일을 디렉토리에 복사'를 선택하십시오.
  2. 포함하는 애플리케이션 대상에서 새로운 '복사 파일 빌드 단계'를 추가하십시오.
  3. '목적지'를 '프레임 워크'로 설정하십시오.
  4. 생성 된 .framework에서 드래그

1
이것은 iOS 프레임 워크에서도 작동합니다. 사용자 정의 프레임 워크를 작업 공간에 추가하여 함께 빌드 할 때. 장치에서 디버깅 할 때이 오류를 해결하려면이 솔루션의 프레임 워크 포함 부분을 추가해야합니다!
cynistersix

1
고마워, iOS에서 일했다. 프레임 워크는 이미 내 파생 데이터 폴더에 지어졌다 나는 귀하의 첫 번째 단계를 수행 didnt는
Gmeister4

대박! 내 괴물 날을 구했어! 2017-Xcode 8.3.2 감사합니다!
Glenn

이상한 이유로, 기본 "바이너리와 바이너리 링크"섹션에서 "내장 프레임 워크"섹션으로 프레임 워크를 드래그 할 수 없지만 왼쪽의 프로젝트 목록에서 프레임 워크를 드래그 할 수 있습니다. "-"버튼을 사용하여 "바이너리와 바이너리 링크"섹션에서 프레임 워크를 수동으로 삭제해야합니다.
윌리엄 Cerniuk

18

그것은 나를 위해 매우 간단했습니다. 방금 앱 프레임 워크 아래의 임베디드 바이너리에 프레임 워크를 추가했습니다.


15

내가 선택할 수없는 위의 옵션. Runpath Search Path를 지정하여 해결했습니다.

' 빌드 설정 '탭에 있습니다. ' 연결 '섹션에서 ' Runpath 검색 경로 '를로 변경하십시오.$(inherited) @executable_path/Frameworks


이 단계와 이전에 프레임 워크를 사용하여 새 '복사 파일 빌드 단계'를 추가하는 두 단계가 필요했습니다.
user23

점진적으로 업데이트 된 오래된 Xcode 프로젝트가 있었고이 설정이 누락되었습니다. 예상대로 추가되고 작동합니다.
Mattio

이 한 일이 솔루션 모두에서,이 문제에 대한 접근 방식은 APPLEEEEE "괜찮 근본 원인이 명확하지이기 때문에 나를,이 모든 유래 게시물의 목록을 아래로 가자"와 같은 얼마나 성가신입니다
라이언

9

나는 같은 문제에 부딪 쳤지 만 수용 된 해결책이 효과가 없었다. 대신 솔루션은 프레임 워크의 설치 이름을 수정하는 것이 었습니다.

원래 게시물의 오류는 다음과 같습니다.

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

라이브러리가로드되지 않은 후 첫 번째 경로에 유의하십시오 . 프레임 워크가 절대 경로에서로드되고 있습니다. 이 경로는 프레임 워크의 설치 이름 (때로는 rpath라고 함)에서 가져 오며 다음을 사용하여 확인할 수 있습니다.

otool -D MyFramework.framework/MyFramework

프레임 워크가 앱에 포함 된 경우이 경로는 상대 경로 여야하며 @ rpath / MyFramework.framework / MyFramework 형식이어야 합니다. 프레임 워크의 설치 이름이 절대 경로 인 경우 런타임에로드되지 않을 수 있으며 위와 유사한 오류가 발생합니다.

해결책은 설치 이름을 수정하는 것입니다.

install_name_tool -id "@rpath/MyFramework.framework/MyFramework" MyFramework.framework/MyFramework 

이 변경으로 더 이상 오류가 발생하지 않습니다.



7

이 문제 중 어느 것도 나를 위해 이것을 해결하지 못했습니다. 결국 문제는 매우 쉬웠다. 애플 버그 (29820370)에서 문제를 기록하고 수정 한 꽤 큰 Xcode 버그 인 것 같습니다. https://bugreport.apple.com/ 버그 리포터 에서 버그를 제기하고 가시성을 얻기 위해 제기 한 버그를 참조하십시오. Xcode를 이전의 즐거움으로 다시 만들고 싶습니다 .Xcode가 스스로 고쳐야한다고 확신합니다.

수정 사항은 다음과 같습니다. 1. Open Keychain-Apple Worldwide Developer Cert로 이동합니다. 2. 더블 클릭 3. 시스템 기본값을 사용하도록 권한 수준을 "항상 신뢰"에서 변경합니다. 4. 저장하고 닫습니다. 5. Xcode를 다시 시작하고 프로젝트를 정리하고 빌드하면 사라집니다.

올바른 설정의 스크린 샷 : 키 체인 접근 수정 도움이 되었기를 바랍니다.


2
"시스템 기본값 사용"이 표준 설정 인 것 같습니다.
Raphael

항상 그런 것은 아닙니다-무언가가 그 변화를 초래하는 것으로 보입니다
UKDataGeek

감사합니다.이 문제도 해결되었습니다! 불행히도 버그 추적기에서 티켓을 볼 수 없어 티켓을 더 잘 볼 수 없습니다. 왜 그런지 모르겠지만 거기에 버그가 표시되지 않습니다.
Jim

7

Xcode 11 :

Xcode 11에서 프레임 워크를 추가하십시오. General->Frameworks, Libraries And Embedded Content

추가 후 Embed & Sign옵션 을 선택했는지 확인하십시오

여기에 이미지 설명을 입력하십시오


2
이렇게하면 앱 스토어에 앱을 업로드 할 수 없습니다
Mahendra

@Mahendra,이 경우에 사용하는 대안은 무엇입니까? 나는 비슷한 문제가 있었다.
Derryl Thomas

@DerrylThomas, 응용 프로그램은 여전히 ​​개발 모드에 있으므로이 경우를 테스트하지 않았습니다
Mahendra

1
@Mahendra, 이것에 대한 대안을 찾을 수 있도록 여기를 공유하십시오. 나는 매우 감사합니다.
Derryl Thomas

@DerrylThomas 아카이브를 생성하는 동안, 포함하지 않음 옵션으로 복원하고 실행 파일을 만들어 앱 스토어에 업로드하십시오.
BlackPearl12

6

Xcode 10.1 에서 프로젝트로 커스텀 프레임 워크를 드래그하면 , 프레임 워크가 시스템 프레임 워크 인 것으로 가정 하고 프레임 워크를 대상 아래 "빌드 단계"의 "바이너리와 바이너리 링크"섹션에 넣습니다.

시스템 프레임 워크가 이미 장치에 있으므로 장치로 복사되지 않으므로 런타임에 KABOOM을 실행할 수 없습니다 (__abort_with_payload에서 충돌하고 오류 : "이유 : 이미지를 찾을 수 없음"). 이것은 프레임 워크 코드가 장치에 복사되지 않기 때문입니다 ...

실제로 Xcode가 사용자 정의 프레임 워크를 연결하고 코드와 함께 iOS 장치 (실제 또는 시뮬레이터)로 복사되도록하려면 사용자 정의 프레임 워크를 "Copy Bundle Resources"로 이동해야합니다. 이것은 궁극적으로 장치에서 함께 사용할 수 있도록 코드 실행 파일과 함께 프레임 워크를 패키지합니다.

프로젝트에 커스텀 프레임 워크를 추가하고 Apple 충돌을 피하려면 :

  1. 사용자 정의 프레임 워크를 iOS 프로젝트 파일 목록으로 드래그
  2. 네비게이터에서 ProjectName-> TargetName-> "빌드 단계"-> 바이너리와 라이브러리 링크 공개 삼각형을 클릭하십시오.
  3. "복사 번들 리소스"아래 부분에 밖으로 아래로 드래그하여 사용자 정의 프레임 워크 (엑스 코드는 이제 이동 엑스 코드 (10)에 고정 된 프레임 워크 참조)
  4. 시뮬레이터 또는 장치에서 실행

따라서 사용자 지정 프레임 워크는 코드와 함께 대상 장치에 복사되며 런타임에 사용할 수 있습니다.

여기에 이미지 설명을 입력하십시오

[편집 : Xcode가 장치에 복사 할 필요가없는 시스템 프레임 워크와 프로젝트 루트 디렉토리 계층에있는 사용자 지정 프레임 워크 중 하나의 차이점을 알아낼 정도로 똑똑 하다고 생각할 것입니다. ... 🙄]


5

'/ usr / local / bin / carthage copy-frameworks'와 함께 'Build Phases'에 'Run Script'가 있어야합니다.

해당 '스크립트 실행'의 '입력 파일'에서 라이브러리 경로를 추가해야합니다. 이처럼 :

빌드 단계 실행 스크립트


4

실수로 키 체인을 재설정하면 키 체인에 Apple 인증서가 없어서 발생할 수 있습니다. 나는 다음 내 문제를 해결하기 위해.

나는 같은 문제가 있었고 WWDR (Apple Worldwide Developer Relations Certification Authority)을 다시 다운로드하여 해결할 수있었습니다. 여기에서 다운로드하십시오 : http://developer.apple.com/certificationauthority/AppleWWDRCA.cer


이것은 내 문제도 해결했습니다. 다시 컴파일하기 전에 빌드 폴더를 정리해야합니다.
Justin Milo

4

Xcode 11을 사용하는 경우 대상 설정-일반의 프레임 워크, 라이브러리 및 컨텐츠 포함에 프레임 워크가 추가되어 있는지 확인하십시오. 퍼가기 상태를 '포함하지 않음' 에서 '내장 및 서명'으로 변경


그러나 이는 App Store에 배포 할 때 ITMS-90206 Invalid Swift Support 오류를 발생시킵니다. 개발에서만 작동합니다.
랩터

2

나를 위해 그것을 해결 한 것은 내 Podfile의 주요 대상 으로 변경 abstract_target되었습니다 target. 이전에 설정 abstract_target했으며 설명 된 오류가 발생했습니다. 이제는 매력처럼 작동합니다.


1

Xcode 8의 경우 일부 오래된 제품은 파생 데이터 폴더에서 제거되며이 솔루션을 참조하십시오 .

Apple : macOS 10.12 이상에서 Xcode는 오래된 파생 데이터, 사전 컴파일 된 헤더 및 모듈 캐시를 정리합니다. (23282174)

Xcode 빌드 시스템은 이전 빌드에서 생성되었지만 프로젝트에서 제거 된 일부 유형의 빌드 아티팩트에 대한 오래된 파일 제거를 지원합니다.

필자의 생각에 따라 필자의 사례 에서이 빌드 로그를 찾았습니다.

Remove stale build products

/bin/rm -rf /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks/AliyunVodPlayerSDK.framework
/bin/rmdir /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks

새 사본 파일 단계를 작성하고 대상 부실 프레임 워크를 프레임 워크 대상으로 복사 한 후, 재 작성 후 위의 제거 로그가 사라집니다.

내 상황과 이유를 명확히하고 누군가에게 도움이되기를 바랍니다.


1

나를 위해 이것은 많은 시간을 검색 한 후에 해결책이었습니다!!

어떤 이유로 Swift 2.3 커스텀 프레임 워크가 개발되면서 Xcode 8은 파일 에서 DYLIB_INSTALL_NAME_BASE설정을 제거했습니다 project.pbxproj. 에 약간의 거리 Build Settings / Dynamic Library Install Name Base로 설정 다시 @rpath그것을 해결했습니다.

( https://forums.developer.apple.com/thread/4687에서 )


0

이 문제는 코드 자체가 아닌 코드 서명 및 인증서에만 관련이 있음을 발견했습니다. 이를 확인하려면 기본 단일보기 앱을 만들고 장치를 변경하지 않고 실행 해보십시오. 동일한 오류 유형이 표시되면 코드가 정상임을 나타냅니다. 나처럼 당신은 당신의 인증서가 유효하지 않다는 것을 알게 될 것입니다. 다시 다운로드하고 만료 된 것을 수정하십시오. 그런 다음 기본 앱에서 오류를보고하지 않으면 Xcode를 종료하고 Mac을 다시 시작한 후 앱을 다시 시도하여 적절한 조치를 취하십시오. 결국이 악몽은 끝이났다. 코드를 실행하려고 할 때 Build Successful 메시지가 표시되는 경우 특히 코드와 관련이 없습니다. 참고로


0

Xcode 9 베타를 시도하고 Xcode 8로 돌아갈 때 문제가 발생했습니다. 대상의 간단한 정리로 문제가 해결되었습니다.


0

다른 이유로 같은 문제가 발생했습니다. PROJECT-> 정보 탭-> 구성 아래에서 디버그 및 릴리스에 대한 새 구성을 작성했습니다. 그리고 pod frameworks 쉘 스크립트 (Pods- "appName"-frameworks.sh, Targets Support Files 아래)를 변경해야 작동했습니다.

[Xcode 9]


0

나를 위해 일한 유일한 것 :

대상> 빌드 단계> [CP] 포드 프레임 워크 포함 "빌드 로그에 환경 변수 표시"및 "설치시에만 스크립트 실행"을 선택 취소하십시오.


0

나는 많은 수정을 시도했지만 나에게 도움이되는 것은 빌드 체계의 빌드 탭에 나열된 누락 된 대상을 삭제하는 것이 었습니다. 현재 구성표의 편집 창을 열어서 얻을 수 있습니다.

편집 : 내 UI 테스트 대상도 작동하지 않았으며 찾은 해결책은 삭제하고 다시 생성하는 것입니다.


0

xcode 열기-> 일반-> 임베디드 바이너리-> QBImagepicker.framework 및 RSKImageCropper 추가-> 프로젝트 정리

임베디드 바이너리에서 QBImagePicker.framework와 RSKImageCropper.framework를 추가하면 나를 위해 일했습니다.


0

이 문제는 다른 이유로 발생할 수 있으므로이 문제를 해결할 수있는 고정 된 방법이 없다고 생각합니다. 나는 또한 지난주 에이 문제를 겪었습니다 .Xcode로 시뮬레이터에서 실행하거나 휴대 전화에 설치하려고 할 때만이 문제의 원인과시기를 정확히 모릅니다. 그러나 그런 종류의 오류를보고하지만 터미널이있는 반응 네이티브 run-ios로 실행하면 문제가 없습니다.

인증서 갱신, Xcode의 설정 변경 (위의 모든 방법)과 같이 인터넷에 게시 된 모든 방법을 확인했습니다. 실제로 Xcode의 모든 설정은 이미 요청 한대로 설정되어 있지만 어떤 방법도 나를 위해 작동하지 않습니다. 오늘 아침에 포드를 삭제하고 다시 설치할 때까지 일주일 후에 오류가 발생했습니다. cocoapod를 사용하고 있는데 특별한 이유없이 오류가 표시되면 내 방식을 시도해 볼 수 있습니다.

  1. 내 cocoapods 버전을 확인하십시오.
  2. 사용 가능한 새 버전이 있으면 업데이트하십시오.
  3. 프로젝트 폴더로 이동하여 Podfile.lock, Pods 파일, 프로젝트 xcworkspace를 삭제하십시오.
  4. 포드 설치 실행

0

실제 장치 (iPhone SE)에서 실행할 때만이 문제가 발생했습니다. 시뮬레이터 프로젝트가 예상대로 작동했습니다.

이 스레드와 here 에서 모든 수정을 시도 했습니다 . 그 중 어느 것도 나를 위해 일하지 않았습니다.

나에게 문제는 iPhone을 다시 시작한 후에 해결되었습니다 (sic!).

나는했다 :

  • 깨끗한 빌드 폴더
  • 깨끗한 파생 데이터
  • 기기에서 앱을 삭제하고
  • 장치 재부팅

그리고 마침내 작동합니다. :)

다른 모든 솔루션이 실패하면 시도해 보는 것을 잊지 마십시오.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.