Xcode와 관련된 개념을 정리합니다.
Xcode와 관련된 개념을 정리합니다.
27 items under this folder.
앞으로 그림에서 나오는 Swift version은 가상이다. 이해를 위해서 가상으로 적었다.
접근성 개발에 있어 쉽게 도와주는 녀석이 있다! Accessibility Inspector!! Introduction 접근성 관련해서 반영해주려니까 테스트 기기가 없더라.
앱 배포에 있어 꼭 알아야 하는 App Thining중 App Slicing에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. App Distribution Today 이전의 App 배포 방법은 다음과 같은 방식으로 수행되었다.
iOS 내부 디바이스에 다양한 CPU 제품이 들어감에 따라 이를 대응할 수 있도록 Project setting을 해야한다. 내부 디바이스들이 어떤 특징을 가지고 있는지 알아보자. 이번 글은 CPU Architecture 글을 읽고 오면 좀 더 편하다.
실제 컴파일, 링킹이 끝난 뒤의 결과물에 대해서는 잘 모르는 것 같다. 실행 파일은 어떻게 구성되어 있는 걸까? 우리가 사용하는 프로그램들은, 바이너리화되어 있는 파일의 형태로 존재한다. 그런데, 이 실행파일의 형태는 OS에 따라 다른 형태로 존재한다.
앱 배포를 하다보면 bitcode enabled라는 flag가 있다. 이녀석을 체크하냐 마냐에 따라서 빌드 속도가 상당히 차이나는 것을 보았는데 도대체 왜 그런 건지 이해해보려 한다. bitcode 다음은 Distrubution Options에서 찾은 설명이다.
이전 글에서 Scheme에 대해서 알아보았다. 하지만 실제로 어떻게 사용하는 건지 잘 모른다. 이번 글에서 알아보도록 하자. Scheme 알아보기 프로젝트를 하나 만들어주고, Product -> Scheme -> Edit Scheme 들어가자.
공식 문서를 읽어보면서, Bundle 구조에 대해서 알아보자.
Bundle 실행 가능한 코드(executble code) + 리소스 (Resources)를 가진 계층 어떻게 보면 이 개념은 개발자를 위한 개념이다. 결국 Package내부는 Bundle과 같이 구성되어 있다.
앱스토어에 실제 앱을 배포해본 사람은 알겠지만, 인증서, provisioning과 같은 개념은 생소하다. 정확하게 알아보자. 원칙 Apple 만이 자신들의 하드웨어(iOS, iPadOS, MacOS etc)에 특정 소프트웨어가 동작하도록 할 수 있다.
의존성 관리도구 주요 기능 Module 의존성을 알려주는 메타데이터로 라이브러리들이 관리됨 Manifest 명세서 역할 Lock 설치된 라이브러리의 버전과 의존 구조를 보여줌 라이브러리가 설치된 다음 적힘 Repository 모듈이 저장된 공간, 보통 github Dependency Constraint 모듈의 허용되는 버전, 보통 Manifest 파일에 적혀짐 Resolution Rule 모듈의 적합한 버전을 설치해 줌 도구세팅빌드속도-------------------------------CocoaPods간편함느림Carthage복잡...
DerivedData를 맨날 지우라는데 이녀석이 뭔지 간단하게 알아보자. DerivedData 빌드가 안되어 오류를 Google에 쳐보면 StackOverflow에서 “Clean DerivedData” 하라는 말이 많다. 이녀석은 도대체 무엇일까.
Library에 대해서는 알아보았다.
Xcode에 파일을 추가하다보면, Create groups, Create folder reference와 같은 선택지를 마주하게 된다. 이녀석의 의미는 무엇일까?? 바로 이녀석이다. Create groups Finder에 폴더가 생긴다. 회색 아이콘이다.
앞으로 진행할 긇에서는, Library와 Framework에 대해서 알아볼 것이다. 첫번째 순서로는 Library이다. Library & Framework 일단 간단하게 Library와 Framework에 대한 차이를 알아보고 가자.
맥에서 아이폰 콘솔 로그 확인하기. 맨날 까먹어서 기억용으로 적어둔다. 방법 맥 앱 중에서 console.app을 실행한다. 아래 이미지에서 콘솔 로그를 보고 싶은 기기를 선택한다. 로그 메시지 필터를 걸어 확인한다.
나뉘어진 프로젝트, 따로 관리되는 프레임워크. 이런 상황에서 새로운 프레임 워크를 만들어 넣는 방법을 알아본다. 프로젝트 상황 일단 내가 처한 상황부터 간략하게 소개하겠다. 거대해지는 앱의 경우에는, 하나의 단일 프로젝트로만 관리하는 것이 어렵다.
Module Stability는 무엇일까? 공식문서를 통해 알아보자. Module Swift에서 Module은 무엇을 말할까? Swift는 접근 제어의 기준으로 Module을 사용한다. 코드 배포의 단위로써 import 키워드를 통해 사용하는 것들이 모두 모듈이다.
앱 배포에 있어 꼭 알아야 하는 App Thining중 On-Demand Resource에 대해 알아본다. 해당글은 WWDC 2015를 기준으로 한다. Do Better 이전 글에서 App Slicing을 하면서 앱 크기를 많이 줄일 수 있다는 것을 확인했다.
Package Finder가 단일 파일인 것처럼 사용자에게 제공하는 디렉토리 가장 쉽게 알아볼 수 있는 것은 우리가 사용하는 Application에 있는 최종 Product! .app 이다.
간단하게 프로젝트 내부를 탐험해보았다면, 각각의 제대로된 정의를 알아야 한다. 앞의 글에서 이어지니, 이해가 안되면 보고 오는 것이 좋다.
Target Xcode의 빌드를 통해 생성된 최종 Product Framework Application 등등 일반적으로 하나의 모듈 또는 앱을 의미한다. 보통 프로젝트 생성시 하나만 생성되나, 목적에 따라 하나의 프로젝트에 여러개의 Target을 생성할 수 있다.
Framework와 library에 대해서는 모두 알았다. 그럼 XCFramework는 무엇일까? XCFramework framework의 다양한 변형들을 Bundle하는 새로운 방법, Framework를 한번더 Bundling 한다.
Test라는 과정은 사실 공학 어디에서든 등장하는 개념이다. 작업에 의존도가 있고, 복잡한 과정으로 넘어갈 수록 이전 단계의 오류는 치명적이기 때문이다. 이를 관리하는 방법이 Test라 할 수 있다. 소프트웨어에서 역시 이러한 개념이 적용된다.
Xcode에서 디버깅하는 방법을 알아보자.
내가 기존에 만들었던 강아지 밥주는 앱(DogFood …)를 기준으로 설명해보겠다. PROJECT_FILE_NAME.xcodeproj 이녀석의 정체는 파일이 아니다. 디렉토리다! 우클릭후 “패키지 내용보기”로 내부를 확인할 수 있다.
앱스토어에서 크래시가 나서 Reject을 당하면 Crash Report를 함께 준다. 해당 파일을 열어보면 이상한 숫자들만 가득하다. dSYM debug symbol file App을 Release한 뒤에 Crash를 진단할 수 있게 도와주는 파일이다.