본문 바로가기
iOS - 실무관련/iOS

App Project

by print_soo 2022. 3. 28.

[PROJECT]

: 생성하는 모든 프로젝트는 해당 특정 프로젝트의 모든 대상에 대한 기본 빌드 설정을 정의한다.

: 하나 이상의 소프트웨어를 만드는데 필요한 모든 파일, 리소스, 정보를 위한 저장소

Info

Deployment Target

: 해당 iOS 타겟을 설정해줄 때는 iOS 점유율을 참고하여 설정

Configuration

: 기본적으로 Debug, Release를 지원하며 개발 버전, 릴리즈버전, 무료버전, 유료버전, 베타 등 다양한 환경에서 테스트를 할 때 사용함

Localization

: 로컬라이징(나라별로 언어를 설정하는 것) 해주고 싶은 언어를 설정해주는 곳

Build Settings

: 빌드 설정은 어떻게 특정 측면의 제품 빌드과정이 수행될 지에 관한 정보를 포함하는 변수

수정된 Build Setting 값들만 모아보기

  • Customzed: Build Setting으로 인해 문제가 발생했다고 생각된다면, 먼저 "기본값이 아닌" 값을 쓰고 있는 Build Setting들을 살펴봐야함.
  • 기본값이 아닌 Build Setting은 Customzed 필터 옵션에서 모아볼 수 있음.
  • Target Build Setting 보다는 Project Build Setting을 이용하기
  • 여러가지 이유로, 같은 프로젝트 안에서도 개발용 Target과 배포용 Target을 별도로 관리하는 경우가 많음.
  • 두 Targte의 빌드설정은 달라야하는 경우보다 같아야하는 경우가 더 많기 때문에 Target의 빌드설정을 수정하는 것은 지양해야함.
  • 따라서, Build Setting을 바꿀 때에는, 언제나 "이것이 프로젝트 전체에 걸쳐 적용되어야 하는 변경인지" / " 이 Target에 대해서만 적용되어야 하는 변경인지"를 꼭 생각해야한다.
  • Level 단위로 Build Setting보기
  • Level이라는 옵션으로 Build Setting보면 현재 적용되어 있는 Build Setting이 어느 차원에서 정의 되어있는지를 볼 수 있음.
  • 어느 차원에서 정의 : 기본 값을 쓰고 있는지, 프로젝트에 적용된 값을 쓰고 있는지, 타겟별로 override를 한것인지, xcconfig에서 정의된 값을 쓰는지
  • 나는 분명이 Build Setting를 수정했는데 반영되지 않는다면 , Level 옵션으로 관찰해보자.
  • Level 옵션이 켜진상태에서, 관심있는 값을 선택한 후 Tab을 누르면, 한 Level 더 높은 곳의 Field를 수정할 수 있음.
  • 각 Build Setting의 의미를 파악하기
  • Build Setting의 값은 너무 많아 파악하기 어렵다. 그럴 때는 그런 값을 선택하고 우측 패널을 열어서 Quick Help를 열어보면 각 값들에 대한 상세한 설명과, 각 값이 바뀌었을 때 어떤 변화가 있을지에 대한 정보를 얻을 수 있음.

Swift Packages

: 개발자가 프로젝트에서 사용할 수 있는 Swift, Objective-C, Objective-C++, C 또는 C++ 코드의 재사용 가능한 구성 요소

: 자신이 만든 Swift Package를 추가하는 곳.

: Swift Package Manager는 Swift3.0과 함께 공식적으로 출시된 MacOS 및 Linux에서 Swift 라이브러리 및 에플리케이션을 만드는 새로운 방법.

: 상호 의존하는 라이브러리를 사용할 때 발생할 수 있는 의존성 문제를 해결.

[TARGET]

:빌드하는 앱이며, Xcode가 프로젝트나 작업공간에서 파일들 안에서 제품을 구축하는데 필요한 정보를 포함

General

:ID, 서명 및 배포 옵션과 같이 가장 일반적으로 수정된 대상 설정을 조절

)

Identity

  • Display
    : Siri에서 사용하고 iOS 홈 화면에 표시되는 번들의 사용자에게 표시되는 이름.
  • Bundle Idntifier
    : Xcode에서 번들 ID는 정보 속성 목록 리소스 파일의 기본 CFBundleIdentifier 키와 제품 번들 식별자 빌드 설정의 값.
  • Version
    : 시스템 전체에서 빌드를 식별하는 데 사용되므로 앱을 업로드하거나 내보내기 전에 처음에 version와 build을 설정하고 나중에 업데이트하는 것이 중요함.
  • Deployment
  • Deployment target
    : 앱이 지원할 수 있는 가장 낮은 운영체제 버전.
  • Target Device
    : 장치 목록에서 지원할 장치를 하나 이상 선택 .
  • Device Orientation
    : 장치 방향 섹션에서 앱에서 지원하는 장치 방향을 선택.
    1.  portrait(bottom home button)  
    : 전면 카메라가 상단에 있는 세로모드의 디스플레이 지원.
    2.  Upside Doun(top home button)  
    : 디스플레이를 지원하지만 거꾸로 되어있으며 전면 카메라가 하단에 위치.
    3.  Landscaoe Left(left home button)  
    : 전면 카메라가 왼쪽에 있는 가로모드의 디스플레이를 지원.
    4.  Landscaoe Right(right home button)  
    : 전면 카메라가 오른쪽에 있는 가로모드의 디스플레이를 지원.
  • Status Bar Style: 상태 표시줄 스타일 섹션의 팝업 메뉴에서 밝은 스타일 또는 어두운 스타일을 선택.
    1.  Default: 밝은 배경의 어두운 스타일
    2.  Light Content: 어두운 배경에 사용할 수 있는 밝은 스타일

App Icons and Launch Images

  • App Icons Source
    : 앱 아이콘을 표시할 이미지 선택
  • Launch Images File
    : iOS앱을 실행하는 동안 실행 화면이 스플래시 화면으로 표시.
    : 템플릿에서 iOS앱을 생성하는 경우 Xcode는 런치스크린을 기본 시작화면 파일을 프로젝트에 추가.

Signing & Capabilities

: 앱에 승인, 앱 서비스를 활성화
: 앱에 서명하려면 Xcode프로젝트의 각 대상을 동일한 팀에 할당해야 한다.
: 기술 기능 추가.

  • Team
  • (personal team: Apple Developer Program 또는 Apple Developer Enterprise Program에 가입하지 않은 Apple ID를 가진 사용자를 위해 개인 팀이 자동으로 생성 / 개인으로 등록할 경우 개인 팀이 됨.)
  • Provisioning Profile
    : 장치에서 하나 이상의 앱을 시작하고 특정 서비스를 사용하는데 사용되는 시스템 프로필 유형

  • Signing Certificate
    : 애플이 발행한 개인 Key가 있는 인증서가 포함되어 있으며 자신의 키체인에 저장되어 있음. 왜냐하면 개인 키는 로컬에 저장되므로, 계정 암호처럼 보호함.
    : 애플과 같은 인증 기관에서 인증서를 발급하도록 하기 위해 중간 인증서를 키체인에 넣어야 한다.

Resource Tags

: 필요한 자원들을 식별하고 관리.
: Demand resource tag 추가.

: 주문형 리소스 는 필요할 때만 다운로드하는 앱 콘텐츠

: 사용자가 다운로드 한 앱 번들과 별도로 App Store에서 호스팅 됨. 주문형 리소스를 사용하여 더 작은 앱, 더 빠른 다운로드 및 더 풍부한 앱 콘텐츠를 사용

: 태그를 사용하여 대상에서 온 디맨드 리소스를 식별하고 관리

Info

: Info.plist값, 지원되는 문서타입, Localization 등을 포함하여 프로젝트나 타겟의 속성을 편집.
: 파일 유형 및 서비스 정보 추가

  • Custom iOS Target Properties
    : 프로젝트 또는 대상의 정보 창에서 이러한 설정을 편집하거나 Info.plist파일을 직접 편집할 수 있음.
  • Document types
    : 다양한 문서 유형을 지원하도록 앱을 구성할 수 있음.
    : 대상의 정보창에서 문서 유형 설정을 편집하거나 정보 속성 목록을 직접 편집할 수 있다.

Buid Settings

: 프로젝트를 구축하는 동안 빌드 시스템의 동작에 영향을 미치는 옵션을 사용자 정의, 컴파일러나 링커에게 전달할 옵션들을 저장해놓은 목록.

: Buid Setting은 유닉스 환경변수, Xcode의 내장변수, 프로젝트, 타겟 순으로 계층 구조를 이루어서 상위 계층의 값을 하위 계층에서 덮어쓰는 방식이다.

: 타겟 제품을 만드는데 필요한 정보를 제공, 빌드 프로세스 중에 수생되는 각 작업(Swift 코드 컴파일 같은 것)에 대해 빌드 설정은 해당 작업이 수행되는 방식을 제어.

Deployment

  • Targeted Device Families
    : 선택한 장치를 사용하여 대상의Info.plist 파일에 추가하는UIDeviceFamily 키에 올바른 값을 설정.

Linking

  • Runpath Search Paths
    : 생성중인 이미지의 'runpath'검색 경로 목록에 추가 할 경로 목록.

Packaging

  • Info.plist File
    : 번들에서 사용하는Info.plist 정보가 포함 된 속성 목록 파일의 프로젝트 상대 경로. 정보 속성 목록 파일에 대한 자세한 내용은 [정보 속성 목록 파일]을 참조.
  • Signing
  • Coding Signing Style
    : 이 설정은 signing assets을 획득하고 찾는 데 사용되는 방법을 지정. '자동'을 선택하면 Xcode가 프로필, 앱 ID 및 인증서를 자동으로 만들고 업데이트 할 수 있다. 개발자 웹 사이트에서 직접 만들고 업데이트하려면 '수동'을 선택.

Asset Catalog Compiler

  • Asset Catalog App Icon Set Name
    : 콘텐츠가Info.plist에 병합 될 자산 카탈로그 앱 아이콘 세트의 이름.
  • Global Accent Color Name
    : 대상의 강조 색상으로 사용할 색상 리소스의 이름으로, iOS 및 watchOS에서는 기본 색조로 사용되며 macOS에서는 강조 색상으로 사용.

Buid Phases

: 프로젝트로 빌드하는 동안 빌드 시스템에서 수행한 작업을 편집하고 재정렬

: 타겟의 제품을 빌드하기 위해 필요한 파일을 단계별로 어떻게 처리할지 구성한 목록

:의존성이 있는 다른 타겟들, 컴파일 단계에서 사용할 소스들, 링크단계에서 사용할 라이브러리나 프레임워크, 앱번들에 복사할 리소스 파일을 단계별로 지정하게 된다.

Dependencies

: 동일한 프로젝트(동일한 작업영역이 아님) 또는 연결된 프로젝트에서 target 자체를 빌드하려면 먼저 빌드해야 하는 다른 대상을 명시적으로 지정한다.

Compile Sources

: Swift, Objective-C, Lex 및 Yacc와 같은 호환 가능한 소스 파일을 대상에 연결하고 이를 컴파일함. 필요한 경우 각 소스 파일에 대해 컴파일러 플래그를 지정할 수 있다.

Link Binary with libraries

: 애플 프레임워크와 같은 라이브러리를 대상과 연관시킨다. 이들은 플랫폼 라이브러리, 다른 대상에서 생산한 라이브러리 또는 외부 사전 제작된 XCFrameworks 및 라이브러리일 수 있다.

Copy bundle resources

: 리소스를 대상과 연결하고 적절한 경우 처리한 다음 제품 내의 리소스 하위 폴더에 복사함. 이 단계는 대상당 한 번 사용할 수 있으며 대상의 제품이 내장 리소스를 지원하는 경우에만 사용할 수 있다.

Buid Rules

: 빌드 프로세스 중에 특정한 유형의 파일을 처리할 때 빌드 시스템이 사용하는 규칙을 사용자 지정
: 컴파일 단계와 리소스 복사 단계에서 파일 종류별로 어떤, 어떻게 처리할지 규칙을 결정.
: 확장자 매칭 조건과 처리할 액션에 대해서 지정을 할 수 있는데 기본적인 파일들에 대한 처리 규칙은 이미 자동적으로 생성됨

참고


https://chobikim.tistory.com/22
https://cau-meng2.tistory.com/109

'iOS - 실무관련 > iOS' 카테고리의 다른 글

UI component  (0) 2022.03.28
Info.plist  (0) 2022.03.28
App Life Cycle / Scene Life Cycle / View Life Cycle  (0) 2022.03.28
Info.plist - Privacy  (0) 2022.03.28
동기 / 비동기와 직렬 / 동시  (0) 2022.03.28