라이징캠프_iOS_9기_1주차_개발일지_1

신태원·2022년 8월 11일
0

RC_iOS_9

목록 보기
1/8
post-thumbnail

1주차 1️⃣

[복습을 위한 질문]

  • 개발자에게 필요한 역량 3가지는 무엇인가?
    1. 개발 역량
    2. 소통 능력
    3. 기타(troubel shooting에 대한 유연한 대처 혹은 열정..?)

  • 플랫폼이란 무엇인가?
    -> 어떠한 서비스를 제공하는 단체 혹은 기업 ( ex. Youtube, Netflix)

  • 플랫폼의 특성을 고려해볼 때, iOS는 어떻게 적용되나요?
    -> 이 질문

  • 공식문서(개발문서 및 HIG)를 봐야하는 이유는 무엇인가요?
    -> 어떠한 기능 및 소프트웨어에 대한 업데이트나 잘 알려지지 않은 부분을 개발해야할 때 혼자서 해결해나가기 위해
    -> 어디까지나 구글링에 100% 의존할 수는 없기 때문에

과제

  • 1. info.plist / AppProject 속성 조사 (자신만의 기준을 세워서)

  • 2. 스토리보드 컴포넌트 전부 조사 및 AutoLayout 개념 조사

  • 3. 다양한 Constraint 제약 조건을 통해 실제 프로덕트 애플리케이션 프론트 구성해보기

과제 1번 1️⃣

info.plist / AppProject 속성 조사 (자신만의 기준을 세워서)

Xcode 영역

우선 앞으로 한동안 보게 될 Xcode의 영역부터 간단히 조사해봤다.

Xcode를 실행하고 project이름을 "RC_1_week"로 설정하고 project를 만들면 다음과 같은 화면이 뜬다.

Tool bar - 현재까지 만든 프로젝트를 빌드하거나 simulator 설정 혹은 component를 추가할 수 있는 버튼이 있다.

Navigator area - Navigator 상단의 Navigator bar를 이용해 각종 navigator로 이동할 수 있다. 주로 쓰는 navigator는 프로젝트 navigator 같은데 아래와 같은 방법으로 접근을 한다.

Editor area - 코드, 인터페이스 파일, 프로퍼티 리스트, 프로젝트 세팅 등을 포함한 프로젝트를 설정 혹은 편집하는데 있어 필요한 영역이다. ediotr area 밑에 보통 Debug area가 있는데, 위 사진에는 Debug area는 안나와있다.

Utilities area - 각종 inspector를 볼 수 있는 영역인데, 파일들의 Identity and Type(class의 이름 등)을 편집할 수 있고 Text setting 과 같은 말그대로 '실용적, 유용적' 인 측면에서의 접근이 가능한 영역이다.

우선 info.plist 란?

-> Information Property List Files 로 실행 패키지에 관한 필수 설정 정보가 포함된 구조화된 텍스트 파일

-> 쉽게 말하자면 아이폰 애플리케이션의 기본적인 정보가 담긴 설정파일

-> XML파일의 형태(EXtensible Markup Language 파일: 데이터의 이동, 구조 및 저장을 설명하는 것을 제외하고는 아무것도하지 않는 일반 텍스트 파일)

info.plist 중요 속성

현재 프로젝트 info.plist 파일(TARGETS - RC_1_week) 에 쓰여져있는 속성들 + 구글링으로 인한 중요 속성

  • Accessibility Bundle Name - 텍스트 음성 변환 작업에서 어플 이름을 대체

  • Application requires iPhone environment - 앱이 iOS에서 실행되어야 하는지 여부를 나타내는 Boolean 값

  • Application Scene Manifest - 앱의 씬 기반 Lifecycle 지원에 대한 정보

  • Application supports indirect input events - 앱이 일반적으로 간접 입력 메커니즘을 지원함을 나타내는 boolean 값

  • Application uses Wi-Fi - 앱이 Wi-Fi 연결이 필요한지 여부를 나타내는 Boolean 값

  • Bundle creator OS Type code - 4글자로 이루어진 번들 식별 코드(번들: executable code와 해당 코드에서 사용하는 리소스를 보유하는 표준화된 계층 구조를 가진 디렉토리)

  • Bundle display name - 사용자가 볼 수 있는 번들 이름. Siri에서 사용하며 iOS 화면에 표시

  • Bundle identifier - 번들의 고유 식별자

  • Bundle name - 사용자가 볼 수 있는 번들의 짧은 형식의 이름(최대 15자)

  • Bundle OS Type code - 4글자로 이루어진 번들 타입 - 앱: APPL / 프레임워크: FMWK / 번들: BNDL

  • Bundle version - 번들의 신판을 식별하는 빌드 버젼

  • Bundle version string (short) - 번들의 릴리스 또는 버전 번호 - 시스템 전체에서 번들 버전을 식별하는데 사용

  • Executable file - 번들의 실행 파일 이름

  • Help Book directory name - 번들의 도움말 파일이 들어 있는 폴더의 이름

  • Help file - 번들의 HTML 도움말 파일 이름

  • Icon file - 번들 아이콘이 들어 있는 파일

  • Icon files - 번들 아이콘 이미지 파일 이름

  • Icon Name - 앱 아이콘을 나타내는 에셋의 이름

  • InfoDictionary version - info.plist 구조의 현재 버젼

  • initial interface orientation - 앱 사용자 인터페이스의 초기 방향

  • Launch screen interface file base name - 앱의 시작 이미지를 생성할 스토리보드의 파일 이름

  • Localization native development region - 언어 ID로서 번들의 디폴트 언어 및 지역

  • Localizations -앱에서 수동으로 처리한 위치화

  • Localized resources can be mixed - 번들이 프레임워크에서 지역화된 문자열 검색을 지원하는지 여부를 나타내는 boolean 값

  • Main nib file base name - 앱의 메인 사용자 인터페이스 파일 이름

  • Main storyboard file base name - 앱의 스토리보드 리소스 파일 이름

  • Required device capabilities - 앱에서 실행하는 데 필요한 장치 관련 기능

  • Status bar style - 앱이 시작될 때 상태 표시줄의 스타일

  • Supported interface orientations (iPhone) - 아이폰 앱에서 지원하는 인터페이스 방향

  • URL types - 앱에서 지원하는 URL schemes(http, ft 등)목록

Privacy 관련 info.plist

  • 사용자의 개인정보 혹은 카메라나 마이크, 위치정보같은 기능을 이용하기 위해서는 해당 목적에 따라 각 Privacy 항목들을 Info.plist에 추가해야 App에서 해당 기능을 사용할 수 있다
  • 앱 reject 사유로 자주 언급되는 항목이라고 한다

TARGET이란?

Xcode Target
A target specifies a product to build and contains the instructions for building the product from a set of files in a project or workspace. A target defines a single product; it organizes the inputs into the build system—the source files and instructions for processing those source files—required to build that product. Projects can contain one or more targets, each of which produces one product.

-> 애플의 공식문서에는 위와같이 나와있는데 해석 + 구글링으로 인한 최종적인 결과는.. "Xcode에서 Build하여 얻게되는 최종적인 결과물"

-> 이 결과물의 형태는 최종적으로 APP, Framework, Unit Test 번들 등 다양한 형태가 될수도 있음

Projects can contain one or more targets, each of which produces one product.

-> 아래사진처럼 프로젝트는 하나 혹은 더 많은 target을 포함할 수 있으며, 각 target은 하나의 제품을 생성함

-> Target은 해당 product를 빌드하는데 필요한 instructions을 또한 포함하고 있음

Target의 속성

General - ID, 서명 및 배포 옵션과 같이 가장 일반적으로 수정되는 Target 설정을 조정

Identity

  • Display Name - 프로젝트 명
  • Bundle Identifier - App Store에 앱을 등록할 때 사용될 이름
  • Version - 사용자가 보게될 내 앱의 버젼(ex. 카카오톡 ver2.0)
  • Build - 동일한 버젼 내에서 업데이트를 할 때 설정함

Deployment Info

  • iOS - 최소 iOS 버젼. 앱에서 어떤 기능을 사용할 것인지에 따라서 달라짐
  • Main Interface - 앱 실행후 처음 나오는 StoryBoard를 지정
  • Device Orientation - 기기 회전 가능 여부를 설정
  • Status Bar Style - 앱 실행시 보여지는 Status Bar의 스타일 설정

App Icons and Launch Images

  • App Icons Source - 앱 아이콘 설정. Assets.xcassets에서 사이즈별로 이미지를 등록해야함.
  • Launch Screen File - 실행후 로딩 페이지 설정

Supported Intents

  • 지원되는 intent..? intent라는게 SiriKit에서 사용되긴 한다는데 정확히 모르겠음..

Frameworks, Libraries, and Embedded Content

  • 앱에서 사용했던 Library들을 앱에 포함시켜 배포시킬지 아닐지 결정하는 곳

Development Assets

  • 개발중에만 필요한 기타파일 및 리소스들을 추가할 수 있다.

Signing & Capabilities - 앱을 코드 서명하고 푸시 알림, Game Center 및 앱 내 구매와 같은 앱 서비스를 활성화

Signing

  • 말그대로 인증과 가능성...? 관련 속성
  • Automatically manage signing 에 체크를 해두면 인증 관련 자료를 xcode가 알아서 서버에서 가져온다고 함
  • 위 사진의 + 버튼을 누르면 Capability를 추가할 수 있는데, 내 앱이 사용하는 기본적인 권한을 설정할 수 있다.

    Resource Tags - 주문형 리소스들을 식별하고 관리

  • tag를 만들거나 수정
  • tag의 한 부분인 리소스들을 추가하거나 삭제
  • 리소스들이 실행되는 시스템에 의해 다운로드되는 태그들과 연관될 때 지정

Info - 파일 유형 및 서비스 정보 추가

Custom iOS Target Properties

  • 사용자 지정 속성
  • 대부분 Xcode 인터페이스의 다른 부분에서 수정됨
  • 위 사진의 Key는 info.plist 항목에 모두 정리해놓음

    Document Types

  • 문서 유형 설정은 앱에서 만들고 편집 할 수있는 문서 유형을 지정하고 iOS 또는 Mac OS에서 해당 문서 유형에 대해 표시되는 사용자 정의 아이콘을 제공

    Exported Type Identifiers/Imported Type Identifiers

    You start by declaring an exported or imported type in your app’s Info.plist file. For each type, identify and select a unique identifier. Create a new identifier for exported types, or use an existing identifier for imported types. Then define conformance to system-declared types and list any associated file extensions or MIME types.

  • 앱의 Info.plist 파일에서 Export하거나 Import한 Type을 선언하는 것으로 시작
  • 각 Type에 대해 고유 identifier를 식별하고 선택
  • exported한 Type에 대해 새 identifier를 생성하거나 가져온 Type에 대해 기존 identifier를 사용
  • 커스텀 Type을 지원해주는 설정. 새로 만들거나 혹은 외부에서 가져올수 있도록

URL Types

  • 사용자 지정 URL 체계는 앱 내부의 리소스를 참조하는 방법을 제공. 예를 들어 이메일에서 사용자 정의 URL을 탭하는 사용자는 지정된 컨텍스트에서 앱을 실행.

Build Setting

  • 프로젝트를 빌드하는 동안 빌드 시스템 동작에 영향을 주는 옵션을 사용자 정의

Build Phrases

  • 스크립트 실행, 파일 복사 또는 프레임워크 연결과 같은 프로젝트를 빌드하는 동안 빌드 시스템에서 수행하는 작업을 편집하고 재정렬

Build Rules

  • 빌드 프로세스 중에 특정 유형의 파일을 처리할 때 빌드 시스템이 사용하는 규칙을 사용자 정의

PROJECT이란?

Xcode Project
An Xcode project is a repository for all the files, resources, and information required to build one or more software products. A project contains all the elements used to build your products and maintains the relationships between those elements. It contains one or more targets, which specify how to build products. A project defines default build settings for all the targets in the project (each target can also specify its own build settings, which override the project build settings).

  • 공식 문서의 말처럼 Project란 하나 이상의 소프트웨어 제품을 구축하는 데 필요한 모든 파일, 리소스 및 정보의 저장소
  • Project는 하나 이상의 Target을 포함하고 있으며 모든 Target에 대한 기본 빌드 설정을 정의

Project의 속성

Info

Depolyment Target

  • Target 수준, 즉 최종 결과물(=APP 등) 이 지원할 최소 버전 설정

Configuration

  • 개발 버전, 릴리즈버전, 무료버전, 유료버전, 베타 등 다양한 환경에서 테스트하고 싶을 때 Configuration을 추가해서 사용

Localization

  • 각 나라별로 언어를 설정해준다고 생각하면 편함(모든 나라의 언어를 지원할수는 없으니..)

Build Settings

  • 잘못된 Build Setting으로 인해 문제가 발생했다고 생각되면 좌측 상단에 "Customized" 버튼을 눌러 현재 "기본값이 아닌" 값을 쓰고 있는 Build Setting 값들을 확인

  • Target Build Setting 보다는 Project Build Setting을 이용하기

  • 좌측상단 "Levels"라는 버튼을 눌러 들어가면, 현재 적용되어 있는 Build Settin이 어느 차원에서 정의되었지 확인할 수 있음

    결론: Build Setting 값은 너무나도 많고, 각각의 값들의 의미를 파악하기도 어려우니 불필요한 Build Setting은 최소화하자

Package Dependencies

  • 자신이 만든 혹은 만들어져있는 외부의 Swift Package를 추가하는 곳
profile
일단 배우는거만 정리해보자 차근차근,,

0개의 댓글