2024. 12. 12. 09:49ㆍ같이 공부합시다 - Flutter/Flutter로 To-Do 앱 만들기
Flutter 3.24.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision dec2ee5c1f (4 weeks ago) • 2024-11-13 11:13:06 -0800
Engine • revision a18df97ca5
Tools • Dart 3.5.4 • DevTools 2.37.3
flutter build apk --release
[오류 내용]
PS C:\\src\\todo_app> flutter build apk --release
Font asset "MaterialIcons-Regular.otf" was tree-shaken, reducing it from 1645184 to 1932 bytes (99.9% reduction). Tree-shaking can be disabled by providing the --no-tree-shake-icons flag when building your app.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':shared_preferences_android:compileReleaseKotlin'.
> Could not resolve all files for configuration ':shared_preferences_android:releaseCompileClasspath'.
> Could not resolve io.flutter:flutter_embedding_release:1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa.
Required by:
project :shared_preferences_android
> Could not resolve io.flutter:flutter_embedding_release:1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa.
> Could not get resource '<https://storage.googleapis.com/download.flutter.io/io/flutter/flutter_embedding_release/1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa/flutter_embedding_release-1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa.pom>'.
> Could not GET '<https://storage.googleapis.com/download.flutter.io/io/flutter/flutter_embedding_release/1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa/flutter_embedding_release-1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa.pom>'.
> Got SSL handshake exception during request. It might be caused by SSL misconfiguration
> PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.
> Get more help at <https://help.gradle.org>.
BUILD FAILED in 3m 2s
Running Gradle task 'assembleRelease'... 183.7s
[!] Gradle threw an error while downloading artifacts from the network.
Gradle task assembleRelease failed with exit code 1
<오류 캡쳐>


[체크 리스트]
1 ) 네트워크 연결 확인
2 ) JDK 버전 확인
3 ) Gradle 캐시 삭제
4 ) Gradle 업데이트
5 ) SSL 인증 문제 해결
6 ) Flutter 및 Dart SDK 업데이트
7 ) Flutter 프로젝트 종속성 재설정
8 ) 다른 Gradle 다운로드 경로 추가
확인해 봐야 할 내용이 많았습니다.
차근차근 하나씩 들여다 봤고 이번 경우의 결론은,
개발 환경의 네트워크 방화벽 문제 였던 것으로 확인되었습니다.
(겸사겸사 JDK 버전도 업그레이드 했습니다.)
이번처럼 네트워크 방화벽에 의해 Gradle 이 필요한
외부 종속성을 다운로드 하지 못하는 상황일 경우 이 방식이 도움이 될 수 있습니다.
외부 연결이 원활한 경우 SSL 인증서 문제만 체크해도 될 것 같습니다.
저와 같이 외부 연결 자체가 불가능한 경우에만 참고 바랍니다.
이번 케이스의 해결 방법은,
관련 파일을 수동으로 다운로드 받아서 로컬 경로를 설정하는 방법입니다.
1. 관련 파일을 수동으로 다운로드 받기
오류 내용에서 다운로드가 불가했던 파일의 URL 경로를 확인할 수 있습니다.
> Could not get resource '<https://storage.googleapis.com/download.flutter.io/io/flutter/flutter_embedding_release/1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa/flutter_embedding_release-1.0.0-db49896cf25ceabc44096d5f088d86414e05a7aa.pom>'.
해당 URL을 브라우저 주소창에 붙여넣으면 파일을 다운로드 받을 수 있습니다.
이 때, .jar 파일도 함께 다운로드 받아야 하며,
.pom 파일과 모든 경로는 같고 제일 마지막의 .pom 을 .jar 로 변경한 뒤,
동일한 방식으로 주소창에서 엔터치면 다운로드 받을 수 있습니다.
이번 케이스에서는 아래 항목의 파일을 다운로드 받았습니다.
(각 URL을 브라우저 주소창에 넣고 엔터)
<https://storage.googleapis.com/download.flutter.io/io/flutter/flutter_embedding_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/flutter_embedding_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom>
<https://storage.googleapis.com/download.flutter.io/io/flutter/flutter_embedding_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/flutter_embedding_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.jar>
<https://storage.googleapis.com/download.flutter.io/io/flutter/armeabi_v7a_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/armeabi_v7a_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom>
<https://storage.googleapis.com/download.flutter.io/io/flutter/armeabi_v7a_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/armeabi_v7a_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.jar>
<https://storage.googleapis.com/download.flutter.io/io/flutter/x86_64_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/x86_64_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom>
<https://storage.googleapis.com/download.flutter.io/io/flutter/x86_64_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/x86_64_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.jar>
<https://storage.googleapis.com/download.flutter.io/io/flutter/arm64_v8a_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/arm64_v8a_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom>
<https://storage.googleapis.com/download.flutter.io/io/flutter/arm64_v8a_release/1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262/arm64_v8a_release-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.jar>
2. 로컬 경로 설정하기
폴더 만들기 및 다운로드 파일 위치 설정하기
파일의 위치는 빌드할 프로젝트가 있는 폴더 내 ‘local_maven’ 폴더를 만드는 것부터 시작입니다.
이후 아래처럼 경로의 폴더를 모두 생성합니다. 그런 다음 위에서 다운로드 받은 파일을 각각의 폴더에 위치합니다.
C:\\{프로젝트경로}\\local_maven\\io\\flutter\\flutter_embedding_release\\1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262
C:\\{프로젝트경로}\\local_maven\\io\\flutter\\armeabi_v7a_release\\1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262
C:\\{프로젝트경로}\\local_maven\\io\\flutter\\x86_64_release\\1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262
C:\\{프로젝트경로}\\local_maven\\io\\flutter\\arm64_v8a_release\\1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262\\
<완성된 파일 경로>

로컬 경로 설정하기
android/build.gradle 파일에서 수정합니다.
allprojects 섹션에 로컬 저장소를 추가합니다.
allprojects {
repositories {
maven {
url uri('C:/{프로젝트경로}/local_maven')
}
google()
mavenCentral()
}
}
rootProject.buildDir = "../build"
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(":app")
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
Flutter 빌드
모든 설정을 완료했다면 다음 명령어를 실행합니다.
flutter clean
flutter pub get
flutter build apk --release
빌드에 성공했다면 축하드립니다. 짝짝짝 ~!

만약 Gradle 관련 오류가 발생된다면 다음 내용을 확인해 주세요.
(C:\Users\user\.gradle 폴더는 반드시 재부팅 후 삭제)
재부팅
C:\\Users\\user\\.gradle 폴더 삭제
flutter clean
flutter pub get
flutter build apk --release
<빌드 성공>

고생하셨습니다.
끝 !
'같이 공부합시다 - Flutter > Flutter로 To-Do 앱 만들기' 카테고리의 다른 글
Flutter로 To-Do 리스트 앱에 캘린더 기능 추가하기 (TableCalendar 활용) (1) (0) | 2024.12.16 |
---|---|
최신 JDK LTS 버전 설치 (버전 업그레이드) + Gradle 버전 업그레이드 (1) | 2024.12.12 |
To-Do List 앱 Step 10. 디자인 입히기 (colorScheme속성 , Card 위젯) (2) | 2024.12.10 |
To-Do List 앱 Step 9. 완료된 항목을 자동으로 삭제하는 옵션 추가 (0) | 2024.12.09 |
To-Do List 앱 Step 8. 할 일 목록 수정 기능 추가 (0) | 2024.12.06 |