안녕하세요. 이번 포스팅은 iOS 앱을 개발하기 위한 프로그램인 xCode에서 신규 Project를 Create 시 생성되는 파일과 기능에 대하여 알아보도록 하겠습니다.
목차
1. 신규 생성 파일들
2. 마무리
#1. 신규 생성 파일들
신규 Project Create 시 생성되는 파일 목록은 아래와 기능은 아래와 같습니다.
1. AppDelegates.swift : 앱의 실행 주기(Life Cycle)를 관리하는 내용의 Swift 소스 코드가 들어 있는 클래스 파일입니다. 앱을 실행하거나 종료 또는 백그라운드를 실행할 때 하는 일들을 관리합니다. 저는 주로 앱 PUSH 관련 기능들을 이 클래스에 구현합니다.
2. SceneDelegate.swift : 사용자 인터페이스(User Interface:UI)의 실행주기(Life Cycle)를 관리하는 내용의 Swift 소스 코드가 들어있는 클래스 파일입니다.
3. ViewController.swift : 화면에 보이는 뷰에서 처리하는 내용의 Swift 소스 코드를 담고 있는 클래스 파일입니다. 일반적으로 개발자는 Controller에서 코딩을 하게 되며, View 하나당 Controller 하나가 대응됩니다. 그러므로 Storyboard에서 여러 개의 View를 추가하면 View의 개수만큼 Controller 클래스 파일이 필요합니다. 저는 Main.storyboard에 대응하는 Controller로 MainController 클래스를 사용합니다.
4. Main.storyboard : 앱의 내용을 시각적으로 쉽게 이해하고 프로그래밍할 수 있도록 그림으로 표현한 파일입니다. 이 Storyboard를 통해 화면에 보이는 내용 및 View와 View간의 연결 관계 등을 표현할 수 있습니다.
5. Assets.xcassets : 앱의 아이콘 및 이미지를 보관하는 저장소입니다. 이 곳에서 앱 아이콘 및 이미지를 설정해야 원하는 앱 아이콘과 이미지를 표시할 수 있습니다. 앱의 아이콘과 이미지를 x2@, x3@ 에 맞게 드래그 앤 드롭을 하여 아이콘과 이미지를 설정할 수 있습니다. 또한 이 저장소에 많은 아이콘과 이미지가 있다면 앱의 로딩 속도가 느려 Asset.xcassets에서 사용하지 않는 앱 아이콘과 이미지를 삭제하니 앱 로딩 시 아이콘들을 읽지 않아서 로딩 속도가 빨라진 경험이 있습니다.
6. LaunchScreen.storyboard : 앱이 실행할 때 잠시 나타나는 스플래시 화면을 만드는 Storyboard 입니다.
7. info.plist : 앱이 실행되는 데 필요한 정보를 저장하고 있는 파일입니다. 이 plist에 앱을 사용하는 필요한 권한 및 설명을 작성해야 하며 여기에 항목을 제대로 작성하지 않으면 AppStore에 개발한 앱을 배포할 때 Apple 심사에 Reject를 받을 수 있으니 유의해야 합니다.
#2. 마무리
신규 Project Create 시 생성되는 신규 파일과 그 파일의 기능을 알아보았습니다. xCode에서 가장 기본적인 항목이라 잘 알고 있는 내용이지만 글로 정리를 한번 해 보았으니 필요하신 분에게 도움이 되었으면 좋겠습니다. 긴 글 읽어주셔서 감사합니다. 끝.
Reference : 직접 구매한 송호정, 이범근 저자의 [Do It 스위프트로 아이폰 앱 만들기]
이번 포스팅은 Android Studio에서 빌드하면서 발생한 오류와 오류 원인 및 해결방법에 대하여 알아보도록 하겠습니다.
이번에 발생한 오류는 'aapt2 process unexpectedly exit.'입니다.
목차
1. AAPT2의 정의
2. 'aapt2 process unexpectedly exit.' 원인
3. 'aapt2 process unexpectedly exit.' 해결방법
4. 마무리
#1. AAPT2의 정의
AAPT2는 Android Asset Packaging Tool의 약자로 Android Studio 및 Android Gradle 플러그인이 앱의 Resources를 컴파일하고 패키징 하는 데 사용하는 빌드 도구입니다. 다시 말해 Android Stuio에서 APK나 AAB 파일을 만들 때 앱의 흩어져 있는 Resources를 모으고 압축해서 사용하는 빌드 도구인 셈입니다. AAPT2는 Resources를 Android 플랫폼에 최적화된 바이너리 형식으로 파싱하고 색인을 생성하며 컴파일을 진행합니다.
Android Gradle 플러그인 3.0.0 이상에서는 기본적으로 AAPT2가 사용이 됩니다. 따라서 대부분의 Android 개발자들이 AAPT2를 통해 Android 앱을 빌드할 것 같습니다.
그럼 AAPT2가 어떤 과정으로 빌드를 진행하는지 알아보도록 하겠습니다.
1) Compile: AAPT는 Resources 및 대부분의 파일을 확장자가. flat인 중간 바이너리 파일을 생성합니다.
2) Link : Compile 된 바이너리 파일과 패키지를 단일 APK 패키지로 병합합니다. 그러나 생성된 APK는 DEX 바이트 코드를 포함하지 않으며 서명되어 있지 않아 기기에 배포할 수 없는 상태입니다.
Andrioid Gradle 플러그인을 사용하여 명령줄에서 앱을 빌드하지 않는 경우 d8과 같은 다른 명령줄 도구를 사용하여 자바 바이트 코드를 DEX 바이트 코드로 컴파일하고 apksigner를 사용하여 APK에 서명할 수 있습니다.
#2.'aapt2 process unexpectedly exit.' 원인
Android Studio에서 빌드하면서 아래와 같은 오류가 발생하면서 빌드를 실패하였습니다.
'aapt2 process unexpectedly exit.'
즉, 직역하면 'AAPT2 프로세스가 예기치 않게 종료되었습니다'라는 의미인데 원인이 무엇일까요?
문제의 원인은 Gradle을 기반으로 하는 Android Gradle 플러그인 버전(AGP)과 Gradle 버전의 불안정성입니다. Android Studio를 새로 설치를 하면 Android Gradle 플러그인과 Gradle이 업데이트가 되어 문제가 발생하지 않을 수 있지만 새로 설치를 하지 않고 build.gradle 파일을 통해 수동으로 업데이트할 수가 있습니다. 이때 이번 에러가 발생할 수 있으며 유의해야 할 점은 각 버전의 Android Gradle 플러그인에 필요한 Gralde 버전을 가지고 있다는 것입니다. 아래의 표를 참고하여 최상의 성능을 위해서 Gradle과 플러그인을 가능한 최신 버전으로 사용을 하는 것이 좋다고 합니다.
플러그인 버전
필요한 최소 Gradle 버전
8.5
8.7
8.4
8.6
8.3
8.4
8.2
8.2
8.1
8.0
8.0
8.0
7.4
7.5
#3.'aapt2 process unexpectedly exit.' 해결 방법
#2. 에서 문제의 원인을 Gradle을 기반으로 하는 Android Gradle 플러그인 버전(AGP)과 Gradle 버전의 불안정성이라고 하였고 최상의 성능을 위해서 각 버전의 Android Gradle 플러그인에 필요한 Gralde 버전을 알아보았습니다.