์ ์ฒด ๋ฒ์ ์ FriendlyChat ์ ์ฌ์ฉํ์ฌ Android์์ ์ฌ์ง์ ๋ณด๋ด์ธ์. ์ฌ์ง์ ์ ํํ๊ณ ์ฑํ ํ๋ฉด์ผ๋ก ๋์๊ฐ ํ ์ฑ์ด ์๋ ๋ก๊ทธ์ ์ถฉ๋ํฉ๋๋ค.
Android ์ด๋ฏธ์ง ์ ํ์ image_picker ์ํ ์ฑ์์ ์ ๋๋ก ์๋ํฉ๋๋ค. iOS์์๋ ์ ์๋ํฉ๋๋ค.
์ด๊ฒ์ ์ด์ ์ ์๋ํ์ผ๋ฏ๋ก ์๋ง๋ ํ๊ท ๋๋ ๊ฒฝ์ ์กฐ๊ฑด์ผ ๊ฒ์ ๋๋ค.
05-08 13:33:52.313 811 833 I ActivityManager: Displayed io.flutter.example.friendlychat/com.esafirm.imagepicker.features.ImagePickerActivity: +221ms
05-08 13:33:53.237 811 28032 D NetlinkSocketObserver: NeighborEvent{elapsedMs=280432386, fe80::200:5eff:fe01:265, [00005E000265], RTM_NEWNEIGH, NUD_REACHABLE}
05-08 13:33:53.561 201 849 D audio_hw_primary: out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2
05-08 13:33:53.571 201 849 D audio_hw_primary: select_devices: out_snd_device(2: speaker) in_snd_device(0: none)
05-08 13:33:53.571 201 849 D msm8974_platform: platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15)
05-08 13:33:53.571 201 849 D audio_hw_primary: enable_snd_device: snd_device(2: speaker)
05-08 13:33:53.576 201 849 D audio_hw_primary: enable_audio_route: apply and update mixer path: low-latency-playback
05-08 13:33:53.672 8901 8901 F flutter : [FATAL:../../flutter/shell/platform/android/platform_view_android_jni.cc(29)] Check failed: env->ExceptionCheck() == JNI_FALSE.
05-08 13:33:53.672 8901 8901 F libc : Fatal signal 6 (SIGABRT), code -6 in tid 8901 (le.friendlychat)
05-08 13:33:53.776 198 198 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-08 13:33:53.776 198 198 F DEBUG : Build fingerprint: 'google/hammerhead/hammerhead:6.0.1/M4B30Z/3437181:userdebug/dev-keys'
05-08 13:33:53.776 198 198 F DEBUG : Revision: '11'
05-08 13:33:53.776 198 198 F DEBUG : ABI: 'arm'
05-08 13:33:53.777 198 198 F DEBUG : pid: 8901, tid: 8901, name: le.friendlychat >>> io.flutter.example.friendlychat <<<
05-08 13:33:53.777 198 198 F DEBUG : signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
05-08 13:33:53.771 198 198 W debuggerd: type=1400 audit(0.0:1619): avc: denied { search } for name="com.google.android.gms" dev="mmcblk0p28" ino=1474612 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-08 13:33:53.781 198 198 W debuggerd: type=1400 audit(0.0:1620): avc: denied { search } for name="com.google.android.gms" dev="mmcblk0p28" ino=1474612 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-08 13:33:53.824 198 198 F DEBUG : Abort message: '[FATAL:../../flutter/shell/platform/android/platform_view_android_jni.cc(29)] Check failed: env->ExceptionCheck() == JNI_FALSE.
05-08 13:33:53.824 198 198 F DEBUG : '
05-08 13:33:53.824 198 198 F DEBUG : r0 00000000 r1 000022c5 r2 00000006 r3 b6f8eb7c
05-08 13:33:53.825 198 198 F DEBUG : r4 b6f8eb84 r5 b6f8eb34 r6 0000000b r7 0000010c
05-08 13:33:53.825 198 198 F DEBUG : r8 beb09fbc r9 aee72d08 sl beb0a028 fp ae3b88e8
05-08 13:33:53.825 198 198 F DEBUG : ip 00000006 sp beb09e60 lr b6cfdb61 pc b6cfff50 cpsr 400f0010
05-08 13:33:53.838 198 198 F DEBUG :
05-08 13:33:53.838 198 198 F DEBUG : backtrace:
05-08 13:33:53.839 198 198 F DEBUG : #00 pc 00041f50 /system/lib/libc.so (tgkill+12)
05-08 13:33:53.839 198 198 F DEBUG : #01 pc 0003fb5d /system/lib/libc.so (pthread_kill+32)
05-08 13:33:53.839 198 198 F DEBUG : #02 pc 0001c30f /system/lib/libc.so (raise+10)
05-08 13:33:53.839 198 198 F DEBUG : #03 pc 000194c1 /system/lib/libc.so (__libc_android_abort+34)
05-08 13:33:53.839 198 198 F DEBUG : #04 pc 000174ac /system/lib/libc.so (abort+4)
05-08 13:33:53.839 198 198 F DEBUG : #05 pc 001db349 /data/app/io.flutter.example.friendlychat-2/lib/arm/libflutter.so
05-08 13:33:53.839 198 198 F DEBUG : #06 pc 003e2cbf /data/app/io.flutter.example.friendlychat-2/lib/arm/libflutter.so
05-08 13:33:53.839 198 198 F DEBUG : #07 pc 000a0055 /data/app/io.flutter.example.friendlychat-2/lib/arm/libflutter.so
05-08 13:33:53.840 198 198 F DEBUG : #08 pc 0009e113 /data/app/io.flutter.example.friendlychat-2/lib/arm/libflutter.so
05-08 13:33:53.840 198 198 F DEBUG : #09 pc 000bb30b /data/app/io.flutter.example.friendlychat-2/lib/arm/libflutter.so
05-08 13:33:53.840 198 198 F DEBUG : #10 pc 000a560b /data/app/io.flutter.example.friendlychat-2/lib/arm/libflutter.so
05-08 13:33:53.840 198 198 F DEBUG : #11 pc 000a8167 /data/app/io.flutter.example.friendlychat-2/lib/arm/libflutter.so
05-08 13:33:53.840 198 198 F DEBUG : #12 pc 00012e93 /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+530)
05-08 13:33:53.840 198 198 F DEBUG : #13 pc 00012f63 /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+130)
05-08 13:33:53.840 198 198 F DEBUG : #14 pc 00081d05 /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvP8_jobjecti+22)
05-08 13:33:53.840 198 198 F DEBUG : #15 pc 7197d56d /data/dalvik-cache/arm/system@[email protected] (offset 0x1ed5000)
05-08 13:33:54.311 198 198 W debuggerd: type=1400 audit(0.0:1621): avc: denied { search } for name="com.google.android.gms" dev="mmcblk0p28" ino=1474612 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
05-08 13:33:54.556 811 9064 W ActivityManager: Force finishing activity io.flutter.example.friendlychat/.MainActivity
05-08 13:33:54.557 198 198 F DEBUG :
05-08 13:33:54.557 198 198 F DEBUG : Tombstone written to: /data/tombstones/tombstone_00
05-08 13:33:54.557 198 198 E DEBUG : AM write failed: Broken pipe
05-08 13:33:54.557 811 831 I BootReceiver: Copying /data/tombstones/tombstone_00 to DropBox (SYSTEM_TOMBSTONE)
05-08 13:33:54.604 811 1856 D GraphicsStats: Buffer count: 6
05-08 13:33:54.614 811 923 W InputDispatcher: channel 'fd8147b io.flutter.example.friendlychat/io.flutter.example.friendlychat.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
05-08 13:33:54.614 811 923 E InputDispatcher: channel 'fd8147b io.flutter.example.friendlychat/io.flutter.example.friendlychat.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
05-08 13:33:54.621 811 923 W InputDispatcher: channel 'c728fc3 io.flutter.example.friendlychat/com.esafirm.imagepicker.features.ImagePickerActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
05-08 13:33:54.621 811 923 E InputDispatcher: channel 'c728fc3 io.flutter.example.friendlychat/com.esafirm.imagepicker.features.ImagePickerActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
05-08 13:33:54.628 212 212 I Zygote : Process 8901 exited due to signal (6)
05-08 13:33:54.630 811 1879 I WindowState: WIN DEATH: Window{9066758 u0 SurfaceView}
05-08 13:33:54.631 811 3780 I WindowState: WIN DEATH: Window{c728fc3 u0 io.flutter.example.friendlychat/com.esafirm.imagepicker.features.ImagePickerActivity}
05-08 13:33:54.631 811 3780 W InputDispatcher: Attempted to unregister already unregistered input channel 'c728fc3 io.flutter.example.friendlychat/com.esafirm.imagepicker.features.ImagePickerActivity (server)'
05-08 13:33:54.632 811 2210 I WindowState: WIN DEATH: Window{fd8147b u0 io.flutter.example.friendlychat/io.flutter.example.friendlychat.MainActivity}
05-08 13:33:54.632 811 2210 W InputDispatcher: Attempted to unregister already unregistered input channel 'fd8147b io.flutter.example.friendlychat/io.flutter.example.friendlychat.MainActivity (server)'
05-08 13:33:54.881 811 9064 I WindowManager: Screenshot max retries 4 of Token{a7b8302 ActivityRecord{8e72c4d u0 io.flutter.example.friendlychat/.MainActivity t257 f}} appWin=Window{9066758 u0 SurfaceView EXITING} drawState=3
05-08 13:33:54.888 811 9064 W ActivityManager: Exception thrown during pause
05-08 13:33:54.888 811 9064 W ActivityManager: android.os.DeadObjectException
05-08 13:33:54.888 811 9064 W ActivityManager: at android.os.BinderProxy.transactNative(Native Method)
05-08 13:33:54.888 811 9064 W ActivityManager: at android.os.BinderProxy.transact(Binder.java:503)
05-08 13:33:54.888 811 9064 W ActivityManager: at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:727)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:867)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2907)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2763)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2760)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:12052)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11948)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:12637)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:12144)
05-08 13:33:54.888 811 9064 W ActivityManager: at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)
05-08 13:33:54.900 188 188 E lowmemorykiller: Error opening /proc/8901/oom_score_adj; errno=2
05-08 13:33:54.918 811 811 W art : Long monitor contention event with owner method=void com.android.server.am.ActivityManagerService.crashApplication(com.android.server.am.ProcessRecord, android.app.ApplicationErrorReport$CrashInfo) from ActivityManagerService.java:12583 waiters=0 for 333ms
05-08 13:33:54.918 811 825 W art : Long monitor contention event with owner method=void com.android.server.am.ActivityManagerService.crashApplication(com.android.server.am.ProcessRecord, android.app.ApplicationErrorReport$CrashInfo) from ActivityManagerService.java:12583 waiters=1 for 330ms
05-08 13:33:54.919 811 827 W art : Long monitor contention event with owner method=void com.android.server.am.ActivityManagerService.crashApplication(com.android.server.am.ProcessRecord, android.app.ApplicationErrorReport$CrashInfo) from ActivityManagerService.java:12583 waiters=3 for 297ms
05-08 13:33:54.927 811 822 I ActivityManager: Process io.flutter.example.friendlychat (pid 8901) has died
05-08 13:33:54.927 811 822 D ActivityManager: cleanUpApplicationRecord -- 8901
05-08 13:33:55.004 811 3866 I OpenGLRenderer: Initialized EGL, version 1.4
05-08 13:33:55.068 8160 8160 E WorkerRegistryImpl: getWorker() is called after WorkerRegistry disposal.
05-08 13:33:55.068 8160 8160 E WorkerRegistryImpl: getWorker() is called after WorkerRegistry disposal.
05-08 13:33:55.460 811 833 W WindowAnimator: Failed to dispatch window animation state change.
05-08 13:33:55.460 811 833 W WindowAnimator: android.os.DeadObjectException
05-08 13:33:55.460 811 833 W WindowAnimator: at android.os.BinderProxy.transactNative(Native Method)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.os.BinderProxy.transact(Binder.java:503)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.view.IWindow$Stub$Proxy.onAnimationStopped(IWindow.java:534)
05-08 13:33:55.460 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.updateWindowsLocked(WindowAnimator.java:286)
05-08 13:33:55.460 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.animateLocked(WindowAnimator.java:678)
05-08 13:33:55.460 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.-wrap0(WindowAnimator.java)
05-08 13:33:55.460 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator$1.doFrame(WindowAnimator.java:123)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.view.Choreographer.doCallbacks(Choreographer.java:670)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.view.Choreographer.doFrame(Choreographer.java:603)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.os.Handler.handleCallback(Handler.java:739)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.os.Handler.dispatchMessage(Handler.java:95)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.os.Looper.loop(Looper.java:148)
05-08 13:33:55.460 811 833 W WindowAnimator: at android.os.HandlerThread.run(HandlerThread.java:61)
05-08 13:33:55.460 811 833 W WindowAnimator: at com.android.server.ServiceThread.run(ServiceThread.java:46)
05-08 13:33:55.461 811 833 W WindowAnimator: Failed to dispatch window animation state change.
05-08 13:33:55.461 811 833 W WindowAnimator: android.os.DeadObjectException
05-08 13:33:55.461 811 833 W WindowAnimator: at android.os.BinderProxy.transactNative(Native Method)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.os.BinderProxy.transact(Binder.java:503)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.view.IWindow$Stub$Proxy.onAnimationStopped(IWindow.java:534)
05-08 13:33:55.461 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.updateWindowsLocked(WindowAnimator.java:286)
05-08 13:33:55.461 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.animateLocked(WindowAnimator.java:678)
05-08 13:33:55.461 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.-wrap0(WindowAnimator.java)
05-08 13:33:55.461 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator$1.doFrame(WindowAnimator.java:123)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.view.Choreographer.doCallbacks(Choreographer.java:670)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.view.Choreographer.doFrame(Choreographer.java:603)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.os.Handler.handleCallback(Handler.java:739)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.os.Handler.dispatchMessage(Handler.java:95)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.os.Looper.loop(Looper.java:148)
05-08 13:33:55.461 811 833 W WindowAnimator: at android.os.HandlerThread.run(HandlerThread.java:61)
05-08 13:33:55.461 811 833 W WindowAnimator: at com.android.server.ServiceThread.run(ServiceThread.java:46)
05-08 13:33:55.462 811 833 W WindowAnimator: Failed to dispatch window animation state change.
05-08 13:33:55.462 811 833 W WindowAnimator: android.os.DeadObjectException
05-08 13:33:55.462 811 833 W WindowAnimator: at android.os.BinderProxy.transactNative(Native Method)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.os.BinderProxy.transact(Binder.java:503)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.view.IWindow$Stub$Proxy.onAnimationStopped(IWindow.java:534)
05-08 13:33:55.462 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.updateWindowsLocked(WindowAnimator.java:286)
05-08 13:33:55.462 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.animateLocked(WindowAnimator.java:678)
05-08 13:33:55.462 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator.-wrap0(WindowAnimator.java)
05-08 13:33:55.462 811 833 W WindowAnimator: at com.android.server.wm.WindowAnimator$1.doFrame(WindowAnimator.java:123)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:856)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.view.Choreographer.doCallbacks(Choreographer.java:670)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.view.Choreographer.doFrame(Choreographer.java:603)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.os.Handler.handleCallback(Handler.java:739)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.os.Handler.dispatchMessage(Handler.java:95)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.os.Looper.loop(Looper.java:148)
05-08 13:33:55.462 811 833 W WindowAnimator: at android.os.HandlerThread.run(HandlerThread.java:61)
05-08 13:33:55.462 811 833 W WindowAnimator: at com.android.server.ServiceThread.run(ServiceThread.java:46)
05-08 13:33:56.437 811 934 D ConnectivityService: notifyType CAP_CHANGED for NetworkAgentInfo [WIFI () - 107]
05-08 13:33:56.723 8160 9102 I EventLogSendingHelper: Sending log events.
[โ] Flutter(Mac OS X 10.12.4 16E195, ์ ์ ์๋ ์ฑ๋)
โข /Users/jackson/git/flutter์์ Flutter
โข ํ๋ ์์ํฌ ๊ฐ์ 0652737f3b(3์ผ ์ ), 2017-05-05 09:34:55 -0500
โข ์์ง ๊ฐ์ ํ 0071651ecb
โข ๋๊ตฌ ๋คํธ ๋ฒ์ 1.23.0-dev.11.11
[โ] Android ํด์ฒด์ธ - Android ๊ธฐ๊ธฐ์ฉ ๊ฐ๋ฐ(Android SDK 25.0.2)
โข /Users/jackson/Library/Android/sdk/์ Android SDK
โข ํ๋ซํผ android-25, ๋น๋ ๋๊ตฌ 25.0.2
โข ANDROID_HOME = /Users/jackson/Library/Android/sdk/
โข Java ๋ฐ์ด๋๋ฆฌ: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
โข ์๋ฐ ๋ฒ์ : OpenJDK ๋ฐํ์ ํ๊ฒฝ(๋น๋ 1.8.0_112-release-b06)
[โ] iOS ํด์ฒด์ธ - iOS ๊ธฐ๊ธฐ์ฉ ๊ฐ๋ฐ(Xcode 8.3.1)
โข /Applications/Xcode.app/Contents/Developer์ Xcode
โข Xcode 8.3.1, ๋น๋ ๋ฒ์ 8E1000a
โข ios-deploy 1.9.1
โข CocoaPods ๋ฒ์ 1.0.1
[โ] ์๋๋ก์ด๋ ์คํ๋์ค(๋ฒ์ 2.3)
โข /Applications/Android Studio.app/Contents์ Android ์คํ๋์ค
โข Gradle ๋ฒ์ 3.2
โข ์๋ฐ ๋ฒ์ : OpenJDK ๋ฐํ์ ํ๊ฒฝ(๋น๋ 1.8.0_112-release-b06)
[โ] IntelliJ IDEA ์ปค๋ฎค๋ํฐ ์๋์
(๋ฒ์ 2016.3.4)
โข Dart ํ๋ฌ๊ทธ์ธ ๋ฒ์ 163.13137
โข Flutter ํ๋ฌ๊ทธ์ธ ๋ฒ์ 0.1.11.2
[โ] ์ฐ๊ฒฐ๋ ์ฅ์น
โข Nexus 5 โข 07e401a0d00b3699 โข android-arm โข Android 6.0.1(API 23)
โข iPhone 7 Plus โข 5F90A4C3-6F80-446A-88CB-5394635BF8EF โข ios โข iOS 10.3(์๋ฎฌ๋ ์ดํฐ)
๊ธ์, ์ด๊ฒ์ ๋ผ์ธ์ด๋ค:
https://github.com/flutter/engine/blob/master/shell/platform/android/platform_view_android_jni.cc#L29
์๋ง๋ PlatformMessage ์ฝ๋ฐฑ ์ค์ ์กํ์ง ์์ Java ์์ธ๊ฐ ์์ ๋ ๋ฐ์ํฉ๋๊น? @jason-simmons ๋๋ @jakobr-google์ด ์ ์ ์์ต๋๋ค.
์กฐ์ฌ ์ค์ธ๋ฐ ์ด๋ฏธ์ง ์ ํ๊ธฐ๊ฐ ์๋ Firebase ์ ์ฅ์์์ ์์ธ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋์ ์์ ์ ๊ฑฐ๊ธฐ์ ๊ฐ์ผํฉ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์์ ๋๊ณ , ์ฐ๋ฆฌ๋ Storage ํ๋ฌ๊ทธ์ธ๊ณผ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ๋ค๋ฅธ Firebase ๋ฒ์ ์ ์์กดํ๊ณ ์์์ต๋๋ค. ์ผ์นํ์ง ์๋ Firebase ๋ฒ์ ์ผ๋ก ์ธํด catchํ ์ ์๋ ์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๊ทธ๊ฒ์ ์์ ๋๊ณ , ์ฐ๋ฆฌ๋ Storage ํ๋ฌ๊ทธ์ธ๊ณผ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ์ ๋ค๋ฅธ Firebase ๋ฒ์ ์ ์์กดํ๊ณ ์์์ต๋๋ค. ์ผ์นํ์ง ์๋ Firebase ๋ฒ์ ์ผ๋ก ์ธํด catchํ ์ ์๋ ์์ธ๊ฐ ๋ฐ์ํ์ต๋๋ค.