2025년 9월 23일 카카오 사태가 벌어졌다. 나는 다행히 앱스토어 설정에 들어가서 자동업데이트를 비활성해서 이번 사태를 잠깐 피해갈 수 있었다. 하지만 유튜브를 보다보니까 이번에 업데이트를 이미 한 사람들에게 나의 프로필이 까발려 진다는 것을 알게되었다. 내 친구한테 알려지는 건 좋은데 카카오톡은 내가 전혀 모르는 사람이나 싫은 사람, 업무적인 사람들 연락처에 있는 모든 사람이나 전화 번호가 변경되서 모르는 사람들도 친구 목록에 표시가 된다. 그런 모든 사람들에게 내 사생활을 강제로 공개되도록 해버렸다는 거에 공포를 느꼈다. 프로필 탭으로 이동해서 내 프로필에서 오른쪽 상단에 설정 버튼이 있고 그걸 클릭하면 프로필 설정들이 있고 거기서 옵션들을 비활성 해주자 “프로필 인증배지 표시”, “내 프로필 검색”, “내 홈 표시” 모두 비활성 해줬다. 솔직히 앞으로 이번 사태 이전으로 롤백을 시키지 않는한 앞으로 프로필에 사진을 올릴거 같지 않다. 이미 앱은 배포가 되었고 이 사태가 벌어진 버전의 앱을 업데이트 하지 않고 사용하는 사람들이 많을것이다. (보통은 앱을 배포 하고 강제로 업데이트 유도하지 않는 이상 앱을 업데이트 하지 않는 사람들이 많다.) 만약에 더 프로필 공개에 공포를 느낀다면 프로필에 올린 이미지들을 당장 지우자. *추가* 숏폼과 오픈채팅을 합쳐놓은 것도 참 거지같은 짓을 한거라고 생각한다. 오픈채팅에 개발이나 다이어트나 여러가지 같은 관심을 가진 사람들이 단체 톡방에 들어가서 커뮤니티를 하고 계실거다. 나도 개발 단체톡방에 들어가서 대화를 하는데 왜 그걸 합쳐놔서 오픈채팅을 들어가기 위해서 무조건 숏폼을 강제로 봐야 한다는 건 참 별로다. *추가 2* 벌서 온갖 야시시 하고 폭력적인 숏폼에 노출되고 있...
- 홈페이지
- 아래 링크에서 최신 라이브러리 파일을 다운로드 , 또는 검색
- .tar.bz2 파일
- 구글 드라이브 문서와 동일 경로에 2.6.2 (2016.2 월 업데이트) 버전 업로드 해놨음
- 압축을 해제하고 , 터미널을 열어서 그 폴더로 이동
- i368 라이브러리 파일 (.a) 생성 과정
- 아래의 입력과정에서 $ 뒷 부분 텍스트 붙여 터미널에 복사/붙여넣기 해서 사용을 하면 된다. $ 을 넣으면 에러 발생함
순서대로 입력 하면 내부에 objs 폴더 내부에 .o 파일들이 생성이 된다. (objs 폴더는 내부에 있다.)
$ ./configure CFLAGS="-arch i386";make clean;make
$ cp objs/.libs/libfreetype.a libfreetype-i386.a
라고 입력 하면 내부폴더에 해당 파일이 생성됨
- x86_64
- x86_64 은 armv7 와 동일한 아키텍처다.
- 그래서 x86_64 방식으로 하거나
- 아래의 armv7 방식으로 진행 가능
$ ./configure CFLAGS="-arch x86_64";make clean;make
$ cp objs/.libs/libfreetype.a libfreetype-x86_64.a
- armv7
- armv7 버전 빌드 부터는 iPhoneOS 를 사용하는데 그 경로를 넣어준다
- 빌드시 에러가 발생하는데
- /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/ 경로로 들어가서 실제 있는 버전으로 변경을 해줘야 한다
- 문서 작성 시의 최신 버전은 9.3 버전이라서 iPhoneOS9.3.sdk 로 변경을 해줬다.
$ ./configure --prefix=/build-armv7 --host=arm-apple-darwin --enable-static=yes --enable-shared=no CPPFLAGS="-arch armv7 -fpascal-strings -Os -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=8.0 -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/usr/include/libxml2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk" CC=`xcrun -sdk iphoneos -find clang` CFLAGS="-arch armv7 -fpascal-strings -Os -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=8.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk" LD=`xcrun -sdk iphoneos -find ld` LDFLAGS="-arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk -miphoneos-version-min=8.0" AR=`xcrun -sdk iphoneos -find ar`;make clean;make
$ cp objs/.libs/libfreetype.a libfreetype-armv7.a
- armv7s
- armv7s 와 arm64 의 아키텍처는 동일
- armv7s 방식으로 하거나 아래의 arm64 방식 중 하나를 택해서 진행
$ ./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CPPFLAGS="-arch armv7s -fpascal-strings -Os -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=8.0 -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/usr/include/libxml2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk" CC=`xcrun -sdk iphoneos -find clang` CFLAGS="-arch armv7s -fpascal-strings -Os -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=8.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk" LD=`xcrun -sdk iphoneos -find ld` LDFLAGS="-arch armv7s -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk -miphoneos-version-min=8.0" AR=`xcrun -sdk iphoneos -find ar`;make clean;make
$ cp objs/.libs/libfreetype.a libfreetype-arm7s.a
- arm64
$ ./configure --host=arm-apple-darwin --enable-static=yes --enable-shared=no CPPFLAGS="-arch arm64 -fpascal-strings -Os -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=8.0 -I/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk/usr/include/libxml2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk" CC=`xcrun -sdk iphoneos -find clang` CFLAGS="-arch arm64 -fpascal-strings -Os -fmessage-length=0 -fvisibility=hidden -miphoneos-version-min=8.0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk" LD=`xcrun -sdk iphoneos -find ld` LDFLAGS="-arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.3.sdk -miphoneos-version-min=8.0" AR=`xcrun -sdk iphoneos -find ar`;make clean;make
$ cp objs/.libs/libfreetype.a libfreetype-arm64.a
- arm6
- arm6 는 아이폰 3gs 이전 기기의 지원을 위해서 필요
- iOS 8 이상 지원이면 별도로 빌드할 필요는 없음
- 모든 파일의 마지막 결과에 아래와 같이 나오면 .a 파일이 정상적으로 생성된 것
- 그리고 cp 명령에서 에러가 나지 않으면
libtool: link:
- 유니버셜 라이브러리 파일로 통합
$ lipo -create libfreetype-i386.a libfreetype-armv7.a libfreetype-arm64.a -output libfreetype.a
- 아키텍처 확인
lipo -info libfreetype.a
- iOS 프로젝트에 추가 시 주의 사항 몇가지
- 방금 생성한 .a 파일을 프로젝트 내부에 위치 시키고
- 기존 framework 추가 방법과 동일하게 프로젝트에 import
- 먼저 include 폴더 채로 그 안에 들어 있는 header 파일들을 프로젝트에 추가
- libz 라이브러리를 import 해주자