플러터

플러터 빌드 에러 gradle 버전 문제 해결 방법

슬기로운IT생활 2021. 8. 2. 21:54
728x90

과거에 누군가 GitHub에 올린 플러터 소스를 받아서

빌드하는데 에러가 발생하는 경우가 발생하여 해결 방법에 대해 공유 한다

 

안드로이드 스튜디오 업데이트 후 이런 현상이 발생하며

gradle 버전에서 지원하는 코틀린 버전이 맞지 않아서 생긴다.

 

그림

디버그 콘솔에 찍히는 실제 에러 메시지는 다음과 같다

 

Launching lib\main.dart on Android SDK built for x86 in debug mode...
lib\main.dart:1
Exception in thread "main" javax.net.ssl.SSLException: Connection has been shutdown: javax.net.ssl.SSLException: Tag mismatch!
	at sun.security.ssl.SSLSocketImpl.checkEOF(SSLSocketImpl.java:1533)
	at sun.security.ssl.AppInputStream.available(AppInputStream.java:60)
	at java.io.BufferedInputStream.available(BufferedInputStream.java:410)
	at sun.net.www.MeteredStream.available(MeteredStream.java:170)
	at sun.net.www.http.KeepAliveStream.close(KeepAliveStream.java:85)
	at java.io.FilterInputStream.close(FilterInputStream.java:181)
	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.close(HttpURLConnection.java:3527)
	at org.gradle.wrapper.Download.downloadInternal(Download.java:77)
	at org.gradle.wrapper.Download.download(Download.java:44)
	at org.gradle.wrapper.Install$1.call(Install.java:61)
	at org.gradle.wrapper.Install$1.call(Install.java:48)
	at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:65)
	at org.gradle.wrapper.Install.createDist(Install.java:48)
	at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:128)
	at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: javax.net.ssl.SSLException: Tag mismatch!
	at sun.security.ssl.Alerts.getSSLException(Alerts.java:208)
	at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1022)
	at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:933)
	at sun.security.ssl.AppInputStream.read(AppInputStream.java:105)
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:284)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
	at sun.net.www.MeteredStream.read(MeteredStream.java:134)
	at java.io.FilterInputStream.read(FilterInputStream.java:133)
	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3454)
	at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(HttpURLConnection.java:3447)
	at org.gradle.wrapper.Download.downloadInternal(Download.java:62)
	... 7 more
Caused by: javax.crypto.AEADBadTagException: Tag mismatch!
	at com.sun.crypto.provider.GaloisCounterMode.decryptFinal(GaloisCounterMode.java:592)
	at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1116)
	at com.sun.crypto.provider.CipherCore.fillOutputBuffer(CipherCore.java:1053)
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:941)
	at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:491)
	at javax.crypto.Cipher.doFinal(Cipher.java:2376)
	at sun.security.ssl.CipherBox.decrypt(CipherBox.java:461)
	at sun.security.ssl.InputRecord.decrypt(InputRecord.java:172)
	at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1017)
	... 16 more
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

 

그래서 소스 내 아래 경로에 있던 gradle 버전을 아래와 같이 버전을 올려줬다.

경로 : 소스\android\gradle\wrapper\gradle-wrapper.properties

- 이전 (4.10.2)

그림

- 변경 (6.7)

그림

gradle-wrapper.properties 소스 코드는 다음과 같다.

 

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip

 

이후 또 아래 경로에 있는 build.gradle 파일의

코틀린 버전을 다음과 같이 올려준다.

경로 : 소스\android\build.gradle

- 이전 (1.2.71 / 3.2.1)

그림

- 변경 (1.3.50 / 4.1.0)

그림

build.gradle의 소스 코드는 다음과 같다.

 

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

위와 같이 수정 후 문제없이 빌드를 성공했다!

728x90