티스토리 뷰
iOS개발/기타
XCFramework error: binaries with multiple platforms are not supported
Larooly 2024. 1. 11. 09:47네 정말 오랜만에 글을 작성하는데
어쩌다보니 이번에도 에러관련이네요;;;
문제상황
.a 파일 형식으로 되어있는 라이브러리 파일을
.xcframework 으로 만들고 싶어서 시도중에 나온 에러입니다.
error: binaries with multiple platforms are not supported '파일경로/파일이름.a'
문제 원인은 생각보다 간단합니다.
저희가 선택한 .a 파일이 여러 파일이 합쳐진 형태의 파일이라 그랬던 겁니다.
(저도 이 라이브러리 만드신 분이 알려줘서 알았습니다.)
확인 방법
1. 아래 명령어를 실행시켜보세요
$ lipo -d (파일 경로)/*
// (파일 경로)에.a 파일이 들어있는 폴더 경로를 넣어주세요.
2. 여기에서 내가 원했던 파일이 아래처럼 여러 파일로 나뉘어있다면 주의가 필요합니다.
(아직 이유는 모르겠으나 모든 fat 파일이 다 이 에러를 발생시키는 건 아닙니다.)
Fat header in: (경로)/(파일 이름).a
fat_magic ******
nfat_arch 5
// 5개로 쪼개져있다는 말입니다.
3. 이 경우 이 조각들을 다시 쪼개서 하나하나 만들어주시면 됩니다.
$ lipo (파일경로)/(원본 파일이름).a -thin (뽑을헤더) -output (새파일경로)/(새파일 이름).a
참고로 여기서 뽑을 헤더란
아래 architecture i386 보이시나요?
여기서 architecture를 뺀 i386를 넣어주시면 되요
4. 이제 이 쪼개진 파일들로 새로운 .xcframework를 작성해주시면됩니다.
xcodebuild -create-xcframework \
-library (파일경로)/(방금만든파일).a \
-output (생성폴더)/(생성파일이름).xcframework
* 추가
저렇게 했더니 합칠때 몇개는 내용이 중복된다고 안되고 어떤 거는 기기 지원이 안되는 패키지하는둥
몇몇 에러가 추가로 발생을 했었는데 이럴때는 필요한 애만 골라서 묶는걸 추천 드립니다.
저의 경우에는 x86_64, arm64 두개만 골라서 만들었더니
정상작동했습니다.
끝!
오늘도 파이팅입니다!
'iOS개발 > 기타' 카테고리의 다른 글
Xcode using an empty LLDB target 오류 (0) | 2024.02.19 |
---|---|
Xcode SandBox : rsync.samba deny 에러 (0) | 2024.01.11 |
Safari에서 UIWebView가 인식이 안되는 경우 (0) | 2023.12.03 |
Xcode 에러 dyld[10149]: Library not loaded (0) | 2023.07.12 |
Xcode Flutter 연결할때 참고하면 좋은 사이트 (0) | 2023.07.11 |
댓글