물에 살고싶은 개발자

Android Studio에서 발생한 빌드 문제 해결하기 본문

Android

Android Studio에서 발생한 빌드 문제 해결하기

돼지사랑 2023. 7. 17. 17:23

안녕하세요 오늘은 프로젝트를 빌드하는 동안 겪었던 문제와 그 해결 방법에 대해 이야기하려고 합니다.

문제는 느닷없이 발생했습니다. 잘만 빌드되던 프로젝트가 갑자기 아래와 같은 오류메시지와 함께 빌드가 멈춘것이죠.

> Task :app:processDebugResources FAILED
Execution failed for task ':app:processDebugResources'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform ImagePicker-1.5.3.aar (com.github.nguyenhoanglam:ImagePicker:1.5.3) to match attributes {artifactType=android-symbol-with-package-name, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for LibrarySymbolTableTransform: C:\\Users\\user\\.gradle\\caches\\transforms-3\\e975bbb14947fb3f8bc95fd2ed0e0a71\\transformed\\jetified-ImagePicker-1.5.3.
         > java.nio.charset.MalformedInputException: Input length = 1
   > Failed to transform kpermissions-3.3.0.aar (com.github.fondesa:kpermissions:3.3.0) to match attributes {artifactType=android-symbol-with-package-name, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for LibrarySymbolTableTransform: C:\\Users\\user\\.gradle\\caches\\transforms-3\\16e6961567b884cab2b5a185b37e9cbc\\transformed\\jetified-kpermissions-3.3.0.
         > java.nio.charset.MalformedInputException: Input length = 1
   > Failed to transform viewpager2-1.0.0.aar (androidx.viewpager2:viewpager2:1.0.0) to match attributes {artifactType=android-symbol-with-package-name, org.gradle.category=library, org.gradle.libraryelements=jar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for LibrarySymbolTableTransform: C:\\Users\\user\\.gradle\\caches\\transforms-3\\8e6ad6c69f14768019ca42e4d58908c0\\transformed\\jetified-viewpager2-1.0.0.
         > java.nio.charset.MalformedInputException: Input length = 1

선결론: 플러그인 업데이트와 JDK 버전 변경

문제의 해결책은 Gradle 플러그인을 업데이트하고 JDK 버전을 변경하는 것이었습니다. Gradle 플러그인을 7.4.1 버전으로 업데이트했고, JDK는 Oracle OpenJDK 11 버전으로 변경했습니다. 이 변경 후, 프로젝트는 다시 정상적으로 빌드되기 시작했습니다.

(플러그인 업데이트는 프로젝트 레벨의 build.gradle파일 수정과 안드로이드 스튜디오에서 뜨는 알림창의 추천대로 업데이트했고, JDK 변경은 Android Studio의 'File > Settings > Build, Execution, Deployment > Gradle' 메뉴에서 진행할 수 있습니다)

해결 과정

첫 번째로 시도한 것은 캐시와 Gradle을 정리하는 것이었습니다. 이 방법은 일반적으로 빌드 문제를 해결하는 데 효과적인 방법입니다. (클린,리빌드,안드로이드 스튜디오 캐시 삭제 후 재시작 .gradle폴더에 캐시폴더 삭제 등)그러나 이 경우에는 문제를 해결하지 못했습니다.

그래서 다음 단계로 넘어갔습니다. Gradle 플러그인을 업데이트하고, JDK 버전을 확인했습니다. 이 두 가지 모두 프로젝트 빌드에 중요한 요소이기 때문입니다. 

그러나 이 문제를 해결하는 데에는 더 많은 정보가 필요했습니다. 그래서 저는 Android Gradle 플러그인과 JDK 버전 간의 호환성을 확인하기 위해 검색해봤습니다. 검색 결과에 따르면, Android Gradle 플러그인은 JDK 8부터 JDK 11까지를 주로 지원하고 있었습니다. 그러나 Android Studio Flamingo Canary 3부터는 Android Studio IDE가 JDK 17과 함께 제공되며, Android Studio가 내장 JDK를 사용하도록 설정된 경우 새 프로젝트는 Android Gradle 플러그인의 최신 안정 버전과 JDK 17을 사용하게 됩니다.

이 정보를 바탕으로, 저는 Gradle 플러그인을 최신 버전으로 업데이트하고 JDK 버전을 Oracle OpenJDK 11로 변경하기로 결정했습니다. 이 변경 후, 프로젝트는 다시 정상적으로 빌드되기 시작했습니다.

마치며

이 포스트를 통해 Android Studio에서 발생할 수 있는 빌드 문제와 그 해결 방법에 대해 알아보았습니다. 이 문제는 예상치 못하게 발생했지만, 필요한 단계를 거쳐 해결했습니다. 이 경험을 통해 빌드 과정의 중요성과 문제 해결 능력의 중요성을 다시 한번 깨달았습니다.

다음에는 또 다른 개발 이야기로 찾아뵙겠습니다. 감사합니다.

 

Comments