티스토리 뷰

네 정말 오랜만에 글을 작성하는데 

어쩌다보니 이번에도 에러관련이네요;;;

 

문제상황

.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 두개만 골라서 만들었더니 

정상작동했습니다.

 

 

끝!

 

오늘도 파이팅입니다!

댓글