개발중이던 프로젝트 빌드시에 ios 시뮬레이터에서는 이상없이 잘 빌드되는데,
갑자기 안드로이듀 에뮬레이터에서 빌드시 오류가 발생했다.
아무것도 작업한게 없는데 갑자기??
BUG! exception in phase 'semantic analysis' in source unit 'buildscript' unsupported class file major version 61
라는 메시지와 함께 빌드 오류가 발생하였다.
구글링을 통해서 자바 버전을 바꿔보라거나 클린빌드르해보라거나 등등 여러가지 방법을 동원하여도 안되었으며
(오히려 이상한 에러가 추가되었다..)
소스를 깃에서 다시 받아서 새로 빌드를 해봤지만 마찬가지..
신기하게도 윈도우에서는 문제없이 빌드가된다.
자바버전도 플러터 버전도 모든것이 동일한 상태인데도 말이다.
다시 한번 플러터 클린 빌드를하고
flutter clean build
그리고 안드로이드 폴더로 이동하여 gradlew를 클린빌드하면
cd ./android
./gradlew clean build
Could not resolve all artifacts for configuration ':image_picker_android:debugUnitTestRuntimeClasspath'.
':image_picker_android:debugUnitTestRuntimeClasspath' 구성에 대한 모든 아티팩트를 해결할 수 없습니다.
라는 오류 메시지를 발견할 수 있다.
image_picker 패키지에 문제가 있는가 싶었지만
윈도우에서는 아무 문제 없이 빌드가 되었다.
그래서 조금더 구글링 해본 결과
나와 같은 오류가 발생하여 해결한 사람의 해결책을 참고하였다.
프로젝트 앱 레벨 build.gradle(/android/app/build.gradle)의 android 디렉토리에 다음을 추가한다.
lintOptions {
disable 'InvalidPackage'
disable "Instantiatable"
checkReleaseBuilds false
abortOnError false
}
image_picker_android가 gradle 7.1.2로 업데이트가 되었기에 gradle버전을 업데이트를 해야한다.
① /android/gradle/wrapper/gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
② /android/build.gradle에서 gradle 버전을 7.1.2 이상으로 변경한다.
classpath 'com.android.tools.build:gradle:7.1.2
해결책 1에 대해서는 이미 내 프로젝트에 설정된 것과 동일하고,
해결책 2를 참고하여 gradle버전을 변경하고 빌드하니 정상적으로 빌드가 되고 에뮬레이터에 apk가 설치되고 실행이 되었다.
에뮬레이터와 시뮬레이터에서 빌드/실행 에러시에는 먼저 프로젝트를 클린빌드를하고,
안드로이드와 ios에서 캐시를 정리하고 클린빌드를 하면 자세한 오류를 볼 수 있다.
아직 의문인 점은 윈도우에서는 gradle 버전 변경없이 왜 정상적으로 실행되는지..는 잘 모르겠지만
오랜 시간 동안 헤맸던 오류를 처리하였기에 홀가분하게 퇴근을...
잘 봤습니다. 좋은 글 감사합니다.