[Build - Error] Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager

Gun Log·2023년 1월 16일
1
post-thumbnail

Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Manager.

안드로이드스튜디오 1.4.3 버전 사용 중이었고 새로운 프로젝트를 생성할 때 해당 툴 버전에 의해 자동으로 TargetSDK가 31로 설정되었으며 빌드 시 위와 같은 에러가 발생하였다.

간단한 소스를 테스트하는 목적으로 사용하던 PC라 평소에는 TargetSDK를 다운그레이드시켜 작업하였으나, 원천적인 문제를 해결하고자 다른 방식으로 접근하였다.




Build Tool (31.0.0) 재설치

에러 메시지에서 가이드한 바와 같이 API Level 31에 해당하는 Build Tool Version을 제거 후 다시 설치해 보았으나 현상은 마찬가지였다.



AndroidStudio 업데이트


공식 사이트에 Android 12 사용 시 스튜디오 이전 버전과 호환되지 않는 사항이 존재한다고 명시되어있다.

이에 따라 안드로이드 스튜디오 버전을 '4.1.3' 버전에서 최신 버전인 'Dolphin'으로 업데이트해 보았지만 동일한 문제가 발생하였다.

안드로이드 스튜디오 버전명이 번호 지정 체계 업데이트 로 인해 영문으로 바뀌었다.




dx 파일 생성


에러 관련하여 검색해 볼 시 아래와 같은 절차로 수행하라고 나온다.

1) ".../Android/sdk/build-tools/" 진입 (Android SDK 폴더)
2) 31.0.0 폴더 진입 (에러가 발생하는 버전의 폴더)
3) d8.bat 파일을 복사하여 dx.bat 파일명으로 수정
4) lib 폴더에도 마찬가지로 d8.jar 파일을 복사하여 dx.jar 파일명으로 수정

위 절차대로 수행 한 이후 빌드 시 정상적으로 동작하는 것을 확인할 수 있었다.

Build-tool 31.0.0 is missing DX at /Users/gun/Developement/Android/build-tools/31.0.0/dx

실제 빌드 과정에서 위와 같은 메시지가 출력된다.

dx와 d8은 ".class" 바이트코드를 안드로이드 가상머신(ART or DVM) 용 ".dex" 바이트코드로 변환하는 프로세스 도구이며 dex 컴파일러라고 부른다.
d8은 dx보다 더 빠르고 더 작은 크기로 dex 파일을 생성하는 더 우수한 성능을 보인다.

Android 측에서 이전부터 dx를 지원 중단할 예정이라 공식적으로 발표하였고,
Android 스튜디오 3.1 버전부터 기본 dex 컴파일러로 D8이 적용되었다.
또한 Android 스튜디오 3.4 버전부터 기본 dex 컴파일러로 R8이 적용되었지만,
그리고 Android 12 (API Level 31) 버전부터 Android SDK 빌드 툴에 dx를 포함 시키지 않게 되었다.

D8 dexer로 전환하는 Android Studio



.

.

.

그런데 다른 PC 환경에서는 이러한 별도의 세팅 없이 왜 동작하는 것일까?


.

.

.



Gradle 버전 업데이트


Google Issue Tracker에 동일한 이슈가 올라와 있다.
Android 12 이상을 Target 할 경우 AGP 4.x 이하와 호환되지 않으니 AGP를 7.0 이상으로 업그레이드하라는 내용이다.

현재 Gradle 버전은 6.5, AGP 버전은 4.1.3으로 설정되어있음을 확인 후 Gradle 버전을 7.x 버전으로 업그레이드하였고 이후 빌드 시 정상적으로 동작하는 것을 확인할 수 있었다.

Android 스튜디오 Fox 버전으로 업데이트 되면 Gradle을 7.0 이상으로 설정하도록 가이드 해준다.

Gradle과 AGP(Android Gradle Plugin)

  • Gradle은 범용 빌드 자동화 도구이며 Android를 포함한 다양한 유형의 소프트웨어를 빌드하는데 사용되는 범용 빌드 자동화 도구이다.
  • AGP(Android Gradle Plugin)는 Android용으로 지원되는 빌드 시스템이다.

    자세히 보기


[안드로이드 스튜디오 / Gradle / AGP 상호 호환 버전]


profile
Android Developer

0개의 댓글