Lined Notebook

Library not loaded: @rpath/CustomPopupView.framework/CustomPopupView

by 사슴비행기

기존에 만들 어 둔 앱을

다른 앱의 한 탭 안에 다 넣어야 하는 상황에서

코드를 다 옮기고

시뮬레이터에서 잘 동작하는 것까지 확인하고

실제 폰에서 실행 해 봐야겠다고

생각하며, 실행을 했는데,

 

Library not loaded: @rpath/CustomPopupView.framework/CustomPopupView

이런 에러가 뜨는 상황이었다.

프레임워크가 로드가 안된다는 것인데

왜 시뮬레이터에서는 되 놓고선..?

 

검색을 해보니,

Target >  General > Embedded Binaries

여기에 추가한 프레임워크를

끌어다 추가해야 한다고 하는데,

나는 Xcode 13.2...? 였나?

아무튼 현 시점에서 최고 높은 버전(베타 버전 말고)을

쓰고 있었는데, 이 버전에서는

Embedded Binaries 라는 영역이 없는 것이다..

 

 

짜증이 나던 상황에서,,

일단 이 에러가 나는 이유가

프레임워크의 코드들이

해당 프로젝트에 포함이 되어야 한다는 건데

나는 프레임워크 파일만 추가한 상황.

 

그러면, 프레임워크 파일만 추가하는 게 아니라

프레임워크 폴더 자체를 추가해서

코드까지 포함되게 해보자.

라는 생각에 아래처럼 하고,

 

(설명력이 부족해서,

빨간글씨, 파란글씨로 표시한 것은

아래 사진과 매칭해서 보시길 바랍니다.)

 

 

Target >  General > Frameworks, Libraries, and Embedded Content

여기에 프레임워크 파일을 추가했더니

정상 빌드되었다.

 

 

하지만 뭔가 찝-찝- 한 느낌ㅇ..

 

그러니까,

이런 경우에는 프레임워크의 코드들이

프로젝트 내부에 포함되도록 만들어야 함.

???

왠지 이 방법 외에도

더 깔끔한 방법이 있을 것 같은

느낌적인 느낌이 든다.

 

일단, 프레임워크의 모든 코드는

Finder에서 봤을 때

모두 프로젝트 내부 파일에 있다.

그러므로 연결만 잘 시켜주면,

코드를 모두 읽어올 수 있을텐데?

 

 

프로젝트를 만들면 자연스럽게

생기는 폴더가 있는데

바로 Frameworks 폴더.

 

혹시나 해서 BuildSetting에서 찾아보니

이렇게 Frameworks 폴더에서 찾도록

설정되어 있는 것을 확인했다.

 

그래서 framework 파일을

Frameworks에 추가하고

(이 때, 아래 사진처럼 Create groups로 체크)

Target >  General > Frameworks, Libraries, and Embedded Content

이 경로와

Target > Build Phases > Link Binary With Libraries

이 경로에 해당 프레임워크 파일을

추가하고 빌드 하니깐

정상적으로 되더라.

 

이렇게 해본 뒤,

내가 이해하기로는,

Frameworks 폴더가 아닌

그냥 프로젝트 내부 폴더에

프레임워크를 추가하면,

Linking이 잘 안되기 때문에

해당 프레임워크의 코드를 가져올 수 있는

추가적인 작업이 필요함.

 

Frameworks 폴더에 추가하면

Linking을 잘 해야함.

 

혹시 틀리다면, 누가 지적좀 해주세요!

 

너무 이것저것 다 변경하고 그러다 보니

뭔가 꼬였을 수도 있는데

이 에러는 생각보다 자주 보는 것 같으니

만약 프레임워크를 추가했을 때

문제가 발생하면 좀 더 실험을 해봐야하지 않을까 싶다.

 

아무튼 오늘은 끝끝

 

 

 

 

참고한 글


https://stackoverflow.com/questions/28244468/dyld-library-not-loaded-rpath-with-ios8#comment119991329_28244468

https://zeddios.tistory.com/384

 

 

블로그의 정보

Beautiful Coding

사슴비행기

활동하기