
Flutter path_provider 패키지 정리
path_provider 패키지에 대해 알아봅시다.
2025년 1월 17일
Jisoo.
기술블로그
image_gallery_saver 패키지 빌드 에러 시 발생하는 에러를 해결해 봅시다.
image_gallery_saver는 flutter에서 미디어 파일을 갤러리에 저장하는 기능을 제공하는 패키지입니다.
그러나 현재(2025. 01. 16) 해당 패키지를 추가하여 빌드할 경우 다음 에러가 발생하며 빌드가 되지 않습니다.
1Incorrect package="com.example.imagegallerysaver" found in source AndroidManifest.xml: /Users/amuz/Desktop/image_gallery_saver-2.0.3/android/src/main/AndroidManifest.xml. 2 3Setting the namespace via the package attribute in the source AndroidManifest.xml is no longer supported. 4 5Recommendation: remove package="com.example.imagegallerysaver" from the source AndroidManifest.xml: /Users/amuz/Desktop/image_gallery_saver-2.0.3/android/src/main/AndroidManifest.xml. 6 7FAILURE: Build failed with an exception. 8 9* What went wrong: 10 11Execution failed for task ':image_gallery_saver:processDebugManifest'. 12 13> A failure occurred while executing com.android.build.gradle.tasks.ProcessLibraryManifest$ProcessLibWorkAction 14 15 > Incorrect package="com.example.imagegallerysaver" found in source AndroidManifest.xml: /Users/amuz/Desktop/image_gallery_saver-2.0.3/android/src/main/AndroidManifest.xml. 16 17 Setting the namespace via the package attribute in the source AndroidManifest.xml is no longer supported. 18 19 Recommendation: remove package="com.example.imagegallerysaver" from the source AndroidManifest.xml: /Users/amuz/Desktop/image_gallery_saver-2.0.3/android/src/main/AndroidManifest.xml. 20 21BUILD FAILED in 866ms 22 23Error: Gradle task assembleDebug failed with exit code 1
최신 Android Gradle 플러그인의 문법이 변경되면서 더 이상 package
옵션을 제공하지 않기 때문에 발생하는 에러입니다.
따라서 해당 패키지의 AndroidManifest.xml
에서 해당 옵션을namespace
로 변경해야합니다.
image_gallery_saver의 디렉토리는 아래 경로에 존재합니다.
1/.../.pub-cache/hosted/pub.dev/image_gallery_saver-2.0.3
해당 경로의 android/src/main/AndroidManifest.xml
에서 package
를 android:namespace
로 변경합니다.
1# 변경 전 2<manifest 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 package="com.example.imagegallerysaver"> 5</manifest> 6 7# 변경 후 8<manifest 9 xmlns:android="http://schemas.android.com/apk/res/android" 10 android:namespace="com.example.imagegallerysaver"> 11</manifest>
XML 변경 후에도 다음 에러가 발생할 수 있습니다.
해당 에러는 Java와 Kotlin의 JVM 타깃 버전 불일치로 인해 발생하는 문제입니다.
1FAILURE: Build failed with an exception. 2 3* What went wrong: 4 5Execution failed for task ':image_gallery_saver:compileDebugKotlin'. 6 7> 'compileDebugJavaWithJavac' task (current target is 1.8) and 'compileDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version. 8 9 Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain
따라서 Kotlin 컴파일 버전을 현재 사용 중인 자바 버전에 맞게 버전을 지정해줘야 합니다.
android/build.gradle
파일을 수정하여 자바 버전을 명시할 수 있습니다.
저는 JAVA 17으로 설정하였습니다만 개발 환경에 맞게 변경해야합니다.
1group 'com.example.imagegallerysaver' 2version '1.0-SNAPSHOT' 3 4buildscript { 5 ext.kotlin_version = '1.7.10' 6 repositories { 7 google() 8 mavenCentral() 9 } 10 11 dependencies { 12 classpath 'com.android.tools.build:gradle:7.3.0' 13 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 14 } 15} 16 17rootProject.allprojects { 18 repositories { 19 google() 20 mavenCentral() 21 } 22} 23 24apply plugin: 'com.android.library' 25apply plugin: 'kotlin-android' 26 27android { 28 namespace = "com.example.image_gallery_saver" 29 30 // SDK 버전 지정 31 compileSdkVersion 30 32 33 // 자바 버전 지정 34 compileOptions { 35 sourceCompatibility = JavaVersion.VERSION_17 36 targetCompatibility = JavaVersion.VERSION_17 37 } 38 39 // 코틀린 자바 버전 지정 40 kotlinOptions { 41 jvmTarget = JavaVersion.VERSION_17 42 } 43 44 sourceSets { 45 main.java.srcDirs += 'src/main/kotlin' 46 } 47 defaultConfig { 48 minSdkVersion 16 49 testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 50 } 51 lintOptions { 52 disable 'InvalidPackage' 53 } 54} 55 56dependencies { 57 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 58}
https://github.com/JisooOvO/image_gallery_saver_fixed_gradle
1