[Swift] - Lottie 애니메이션 실습 삽질정리(feat. sandbox)

2024. 3. 15. 13:48·개발일기/IOS

UIKit

UI Kit?

→ 코코아 터치 계층에 포함된 UIKit은 IOS 애플리케이션 개발 시 사용자에게 보여질 화면을 구성하고 사용자 액션 대응에 관련된 다양한 요소들을 포함한다.

→ IOS 애플리케이션의 사용자 인터페이스를 구현하고 이벤트를 관리하는 프레임워크이다.

→ UIKit프레임워크는 제스처 처리, 애니메이션, 그림 그리기, 이미지 처리, 텍스트 처리 등 사용자 이벤트 처리를 위한 클래스를 포함한다.

그리고 테이블 뷰, 슬라이더, 버튼, 텍스트 필드, 얼럿 창 등 애플리케이션 화면을 구성하는 요소들을 포함한다.

UIKit클래스 중 UI responder에서 파생된 클래스나 사용자 인터페이스에 관련된 클래스는 애플리케이션의 메인 스레드에서만 사용한다.

UIKit은 IOS와 tvOS플랫폼에서 사용한다.

 

마주친 문제

→ 빌드하고 애뮬레이터로 실행하는 도중 에러발생, Sandbox : rsync.samba에러

→ 해결방법 : Project → Build Settings → Build Options → User Script Sandboxing을 No로 설정

원인 : 애플이 xcode 15 부터 User Script Sandboxing을 기본값 yes로 설정함, 그전까지는 No였음

그럼 User Script Sandboxing이 뭐냐?

  • Script실행 빌드 단계가 샌드박스에서 실행될 지 여부
  • 샌드박싱은 해당 파일을 입력 또는 출력으로 나열하지 않는 한 프로젝트의 소스 루트와 파생 데이터 디렉토리 내부의 파일에 대한 액세스를 차단한다. 활성화되면, 스크립트 단계가 선언되지 않은 종속성을 읽거나 쓰려고 시도하면 빌드가 샌드박스 위반으로 실패하여 잘못된 빌드를 방지한다.
  • 프로젝트에서 이것을 실행한다면, 스크립트 단계에서 작업해야 한다고 생각하는 파일에만 액세스 할 수 있도록 특정 입력 및 출력파일을 지정하는 것이 더 나은 해결책인것 같음

그럼 SandBox는 뭐임?

샌드박스는 외부에서 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는 것을 막는 보안형태이다. 커널 수준에서 강제적용된다.

프로그램에 대한 공격을 방지하지는 않지만 민감한 리소스에 대한 액세스를 제한함으로써 공격으로 인한 피해를 최소화한다.

앱 스토어에서 유통되는 app들은 모두 app sandbox를 적용시켜야만 한다.

샌드박스가 적용되어 있지 않은 앱은 해당 앱을 실행하는 사용자의 모든 권한을 가지며, 사용자가 액세스 할 수 있는 모든 리소스에 액세스가 가능하다.

 

OS는 각 app마다 전부 샌드박스화 되어 있다.

앱 샌드박스는 파일, 환경설정, 네트워크 리소스, 하드웨어 등에 대한 앱의 접근을 제한하는 세분화된 제어 집합이다. 위의 그림처럼 앱 마다 구분되어있기에 이 앱을 사용하는 사용자는 이 앱의 데이터에만 접근가능하다.

외부에 있는 데이터에 접근하려면 샌드박스정책에 따라 접근권한을 부여받아야만한다.

앱의 설치시점에 각각의 샌드박스 디렉토리에 위치시키며, 이 디렉토리는 각 앱의 홈 디렉토리 역할을 한다.

홈 디렉토리는 각각 특별한 역할을 가진 컨테이너 디렉토리들을 하위 디렉토리로 가진다.

 

→ 위 그림에서 컨테이너는 3개, 각 컨테이너는 역할이 있음

  1. Bundle Container
  2. App의 Bundle을 보유한다
  3. Data Container
  4. App 및 사용자 데이터를 보유한다. 앱이 데이터를 정렬화 하고 그룹화 하는데 사용할 수 있는 여러 하위 디렉토리로 나뉜다.
  5. iCloud Container
  6. 런 타임에 접근을 요청할 수 있는 추가 컨테이너 디렉토리이다.

샌드박스화 된 app은 다음 리소스 중 하나를 사용하려면 그 의도를 명시적으로 명시해야한다.

728x90
저작자표시 변경금지 (새창열림)

'개발일기 > IOS' 카테고리의 다른 글

[Swift] - xcode phase script Execution failed with a nonzero exit code 에러  (0) 2024.03.15
[Swift] - WebView(웹뷰) 사용할 때 인터넷 허용  (0) 2024.03.15
[IOS] - 기초 공부  (0) 2024.03.15
[Swift] - Notification 정리  (0) 2024.03.15
[Swift] - UIGestureRecognizer  (0) 2024.03.15
'개발일기/IOS' 카테고리의 다른 글
  • [Swift] - xcode phase script Execution failed with a nonzero exit code 에러
  • [Swift] - WebView(웹뷰) 사용할 때 인터넷 허용
  • [IOS] - 기초 공부
  • [Swift] - Notification 정리
코딩하는빵친자
코딩하는빵친자
안녕하세요 코딩하는 빵친자입니다. 말그대롭니다.
  • 코딩하는빵친자
    코딩하는 빵친자의 블로그
    코딩하는빵친자
  • 전체
    오늘
    어제
    • 분류 전체보기 (55)
      • 개발일기 (41)
        • Python (9)
        • Swift (2)
        • DataBase (0)
        • 알고리즘 (0)
        • IOS (30)
      • 데보션 영 (4)
      • 코테 (10)
        • Swift (10)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    uikit
    settransition
    추적권한
    IOS
    아웃링크
    universalapp
    uipangesture
    ios개발
    delegate패턴
    xcode
    제스처인식
    podlock
    SWIFT
    뷰관련메서드
    Rosetta
    ios스와이프
    pod
    arm7
    buildsetting
    podinstall오류
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩하는빵친자
[Swift] - Lottie 애니메이션 실습 삽질정리(feat. sandbox)
상단으로

티스토리툴바