이번 포스팅은 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 버전을 알아보았습니다.
그럼 해결방법으로 Android Gradle 플러그인 버전(AGP)과 Gradle 버전을 알맞게 업데이트를 진행하겠습니다.
1) Gradle 버전 업데이트
Android Studio의 File > Project Structure > Project 메뉴에서 Gradle 버전을 지정하시면 됩니다.
2) build.gradle 에서 변경된 Gradle 버전을 확인한 후 File > Sync Project with Gradle Files을 실행하여 Gradle을 다운로드 및 Sync를 맞춰주면 문제가 깔끔하게 해결이 됩니다.
#4. 마무리
이번 문제를 통해 AAPT2의 개념도 다시 정리를 할 수 있었으며 저와 같이 빌드 오류를 경험하신 분이라면 해결 방법을 찾는데 고생하시지 말고 이 글을 보시고 빠르게 문제를 해결하시길 바랍니다.
긴 글 읽어주셔서 감사합니다.
끝.
'Development > Android' 카테고리의 다른 글
[Android] Android Studio 자주 쓰는 단축키 모음 (1) | 2022.10.07 |
---|---|
[Android] Manifest merger failed with multiple errors, see logs (0) | 2022.10.04 |
[Android] Using dp instead of sp for text sizes (0) | 2022.09.30 |
[Android] Play Asset Delivery / Play Feature Delivery (0) | 2022.09.29 |
[Android] 키보드가 레이아웃에 영향 주지 않게 하는 방법 (0) | 2020.04.08 |