[iOS]macOS 가상 기기 환경에서 특정storyboard,xib 파일을 컴파일하는 데 걸리는 시간 문제

5644 단어 MacBitriseiOS

개요


iOS 애플리케이션의 아카이브 자동화를 위해 이동용 CI 서비스Bitrise를 사용했습니다.
응용 프로그램, 작업 흐름의 제작을 마치고 구축을 진행한 결과 특정한storyboard,xib 파일을 컴파일하는 데 17분 정도의 시간이 걸리는 것을 발견하였다.
로컬 기계의 Mac에는 그런 문제가 발생하지 않았고, 이 파일은 1초도 안 되어 컴파일이 완성되었다.
특정한storyboard,xib파일의 공통점을 찾아 수정하였는데 상술한 문제가 해결되었기 때문에 그 원인과 대응을 총괄하고자 합니다.

환경

  • 로컬 시스템용 Mac
  • macOS High Sierra 10.13.6
  • Xcode 9.4.1

  • Bitrise VM 환경 Mac
  • macOS High Sierra 10.13.5
  • Xcode 9.4.1
  • 조사


    특정storyboard,xib 파일을 조사한 결과 Text 속성은 Attributed, 글꼴로 설정된 Hiragino Sans CNS의 UILAbel이 공동으로 존재하는 것으로 나타났다.
    이 내용을 토대로 비슷한 현상이 나타났다.
  • fastlane+bitrise+deploygate로 CI 환경 만들기
  • How to use custom fonts in attributed text in labels in Storyboard?
  • Bitrise 구축 시 존재하지 않는 사용자 정의 글꼴을 사용하면 응고되는 것 같습니다.
    이 문제를 해결하기 위해서는 압축 파일을 보관하기 전에 실행 기계에 해당하는 사용자 정의 글꼴 파일을 설치하면 된다.
    여기서 갑자기 あれ、そもそもローカルマシンで【Hiragino Sans CNS】なんていうフォントインストールした記憶ないけど… 의문이 생겼다.
    글꼴 파일이 어디에 저장되어 있는지 조사해 보세요. 여기에 기재된 바와 같이 다음과 같습니다.
  • /System/Library/Fonts
  • 삭제 또는 사용 중지 불가
  • /Library/Fonts
  • 삭제 또는 사용 중지 가능
  • /System/Library/Assets/com_apple_MobileAsset_Font4
  • 필요에 따라 다운로드, 삭제, 사용 중지
  • 이 경로는 macOS High Sierra
  • macOS Mojave라면/System/Library/Assets/com_apple_MobileAsset_Font5
  • macOS High Sierra의 기본 설치 글꼴 목록이 애플 지원 페이지 에 표시됩니다.
    이 페이지를 보니 Hiragino Sans CNS 다운로드 후 사용할 수 있는 글꼴 일람에 포함되어 있다.
    /System/Library/Assets/com_apple_MobileAsset_Font4 산하에 있다.
    로컬 시스템에서 아래의 명령을 누르면 해당하는 글꼴 파일이 존재하는 것을 발견할 수 있습니다.
    $ cd /System/Library/Assets/com_apple_MobileAsset_Font4
    $ find . -name "Hiragino*"
    ./f49eecf252fb0fa3485147173cadc8dfe5f10d74.asset/AssetData/Hiragino_Sans_CNS.ttc
    
    마찬가지로 /System/Library/Assets/com_apple_MobileAsset_Font4 아래에 다양한 사용자 정의 글꼴 파일이 존재하는 것을 발견했다.
    사용자 정의 글꼴을 이렇게 많이 설치한 기억이 없습니다. 여기 페이지에 다음과 같은 기록이 있습니다.
    실제 컴퓨터와 가상 환경 두 대에서 가상 환경이 OS 설치 후 단계에서 Assets에 글꼴을 설치하지 않은 것을 확인했다
    이 내용을 추측해 보면 아마도 로컬 기기의 Mac에서 물건을 발송할 때 이미 다운로드할 수 있는 글꼴이 설치되어 있을 것이다.
    ※ 실제 출하 후 또는 초기화된 기기에서 확인된 것은 아니므로 부정확한 정보일 수 있습니다.
    다른 한편, 가상 환경에 설치되지 않은 기록이 있기 때문에 Bitrise의 작업 흐름에 Script 절차를 추가하여 다음 명령을 두드려 보았습니다.
    $ ls -l /System/Library/Assets/com_apple_MobileAsset_Font4
    total 272
    
    -rw-r--r--  1 root  wheel  136411 Oct 31 03:43 com_apple_MobileAsset_Font4.xml
    $ ls -l /System/Library/Fonts
    total 884056
    -rw-r--r--  1 root  wheel     266008 Jul 31  2017 Apple Braille Outline 6 Dot.ttf
    ︙
    $ ls -l /System/Library/Fonts | wc -l
    115
    
    $ ls -l /Library/Fonts
    total 251376
    -rw-r--r--  1 root  wheel    131264 Aug  8  2017 Al Nile.ttc
    ︙
    $ ls -l /Library/Fonts | wc -l
    181
    
    결과적으로 /System/Library/Assets/com_apple_MobileAsset_Font4 아래에 Hiragino Sans CNS 글꼴이 없습니다.
    다른 시스템의 글꼴이 로컬 컴퓨터의 결과와 같다는 것도 확인됐다.

    추가 검증

    Hiragino Sans CNS는 삭제할 수 있는 글꼴이기 때문에 로컬 기기에서 삭제하고 똑같이 구축하면 어떻게 되는지 검증해 봤다.
    ※ 이 글꼴은 어플리케이션[Font Book]에서 삭제할 수 있습니다.
    그리고 상응하는storyboard,xib 파일을 컴파일할 때 다음 팝업 메뉴가 표시됩니다.

    이 팝업 창을 무시하고 방치하면 Bitrise의 압축 파일 처리와 마찬가지로 17분 정도 지나면 파일의 컴파일이 끝납니다.
    또한 삭제Hiragino Sans CNS 상태에서 인터페이스 생성기에 해당하는 storyboard,xib 파일을 표시할 때 다음 모드를 표시합니다.

    Font “HiraginoSansCNS-W3” does not exist on this system, substituting the system font instead. Saving the document will lose the original font reference.
    여기 글을 보면 상응하는 글꼴이 존재하지 않으면 시스템 글꼴로 대체할 수 있다.

    이번 대응·총결


    이번에는 본래 글씨체Hiragino Sans CNS를 이용한 구상이 아니기 때문에 이곳의 글씨체를 원래의 글씨체로 바꾸어 대응한다.
    이 파일을 만들 때 이상한 글씨체를 설정한 것을 반성해야 하는데...
    위의 글꼴을 사용하면 VM 환경에 글꼴을 설치하는 절차가 Bitrise 측에 추가되었더라도 iOS의 글꼴 리스트에 포함되지 않아 시스템 글꼴로 전환됩니다.
    이 글꼴을 정말 사용하고 싶다면 iOS 응용 프로그램의 자원으로 추가할 필요가 있다고 생각합니다.

    좋은 웹페이지 즐겨찾기