컴퓨터/Flutter

Flutter_downloader 예제 오류 해결 [nullpointerexception, File.getPath, provider, http...등 ]

우유식빵 2022. 1. 12. 00:22

Flutter에서 파일 다운로드를 구현하려고 flutter_downloader 패키지를 이용하려고 했다. 

예제 코드를 돌려보는데 아래처럼 죄다 fail이 떴다. (맨위에는 나중에 해결한 것)

java.io.File com.parse.ParsePlugins.getParseDir() 부터해서 

Cleartext HTTP traffic to ~~ not permitted,

java.lang.String java.io.File.getPath(),

java.lang.illegalargumentexception: couldn't find meta-data for provider with authority com.example.filedownloader.flutter_downloader.provider 와 같이 각종 오류들이 터져나온다.

 

그래서 관련 오류들을 검색해보니까 죄다 안드로이드 네이티브 해결책만 검색되어서 꽤 헤맸다.

 

해결 방법은

플러터 프로젝트 > android > app > src > main > res > AndroidManifest.xml 에서 

<application></application> 사이에

<provider
           android:name="vn.hunghd.flutterdownloader.DownloadedFileProvider"
           android:authorities="${applicationId}.flutter_downloader.provider"
           android:exported="false"
           android:grantUriPermissions="true">
           <meta-data
               android:name="android.support.FILE_PROVIDER_PATHS"
               android:resource="@xml/provider_paths"/>
</provider>

위와 코드를 추가해주면 된다. 그래서 추가된 모습은 이렇다. 

 

해결한 방법은 그냥 패키지 이슈목록에서 찾는거였다. 

https://github.com/fluttercommunity/flutter_downloader/issues/167#issuecomment-552059741

 

Ouestion about some code . · Issue #167 · fluttercommunity/flutter_downloader

in my app when I start to download an audio I get this: D/skia (17160): --- SkAndroidCodec::NewFromStream returned null W/System.err(17160): java.lang.IllegalArgumentException: Couldn't find me...

github.com

위를 통해서 해결방법을 찾을 수 있었다. 

 

 

혹시나 http로 시작하기 때문에 다운로드가 안된다는 오류가 나타난다면, AndroidManifest.xml파일에 <application 안에 다음과 같이

android:usesCleartextTraffic="true"

를 추가해주도록하자.