release 앱 테스트, 에러 디버깅

Column
adb logcat "*:E"
Tags
Play Store
build
test

Testing the release build of your app#

Before uploading the release build to the Play Store, make sure you test it thoroughly. First uninstall any previous version of the app you already have installed. Install it on the device using the following command in the project root:
$ npx react-native run-android --variant=release
Note that --variant=release is only available if you've set up signing as described above.
You can terminate any running bundler instances, since all your framework and JavaScript code is bundled in the APK's assets.
 
 

디바이스에서만 크래시가 나는 경우 디버깅

release모드로 빌드했으므로 bundler에 로그를 찍어서 확인하는 방법으로는 디버깅 힘듬
따라서 크래시 로그를 보면서 원인을 파악해야함.

태그 우선순위

  • V: Verbose(가장 낮은 우선순위)
  • D: Debug
  • I: Info
  • W: Warning
  • E: Error
  • F: Fatal
  • S: Silent(가장 높은 순위, 이 경우 아무것도 출력되지 않음)
$ adb logcat "*:E" // 에러등급 이상의 로그만 출력함 # AndroidRuntime 태그는 에러등급 이상의 로그만 출력하고, # 나머지 로그들은 Slient 시켜서 보지 않겠다. $ adb logcat "AndroidRuntime:E" "*:S"
09-03 19:44:26.586 7103 7103 E AndroidRuntime: FATAL EXCEPTION: main 09-03 19:44:26.586 7103 7103 E AndroidRuntime: Process: com.pungdong.pungdong, PID: 7103 09-03 19:44:26.586 7103 7103 E AndroidRuntime: java.lang.IllegalStateException: java.lang.NoSuchFieldException: fill 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.aa.a(Unknown Source:92) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.k.b(Unknown Source:41) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.aj.a(Unknown Source:19) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.aa.d(Unknown Source:265) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.k.b(Unknown Source:54) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.k.a(Unknown Source:13) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.aa.d(Unknown Source:265) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.ae.B(Unknown Source:158) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.ae.aiD(Unknown Source:71) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.horcrux.svg.ae.onDraw(Unknown Source:16) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:23187) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22062) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:22917) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:5230) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.facebook.react.views.view.f.dispatchDraw(Unknown Source:7) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:23190) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22062) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:22917) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:5230) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.facebook.react.views.view.f.dispatchDraw(Unknown Source:7) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22048) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:22917) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:5230) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:23190) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.widget.HorizontalScrollView.draw(HorizontalScrollView.java:2230) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.facebook.react.views.scroll.d.draw(Unknown Source:47) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22062) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:22917) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:5230) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.facebook.react.views.view.f.dispatchDraw(Unknown Source:7) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:23190) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22062) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:22917) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:5230) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.facebook.react.views.view.f.dispatchDraw(Unknown Source:7) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22048) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:22917) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:5230) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4987) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.draw(View.java:23190) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.widget.ScrollView.draw(ScrollView.java:2880) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at com.facebook.react.views.scroll.e.draw(Unknown Source:82) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22062) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.586 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:5214) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:5186) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:22017) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:588) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:594) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:667) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewRootImpl.draw(ViewRootImpl.java:4296) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4080) 09-03 19:44:26.587 7103 7103 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3348) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2225) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:9126) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:999) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:797) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:732) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:984) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:883) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:100) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.os.Looper.loop(Looper.java:237) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:8167) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: Caused by: java.lang.NoSuchFieldException: fill 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at java.lang.Class.getField(Class.java:1604) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: at com.horcrux.svg.aa.a(Unknown Source:55) 09-03 19:44:26.589 7103 7103 E AndroidRuntime: ... 135 more
💡
svg에 fill 필드가 없는 아이콘이 있어서 문제가 발생했던 거였음. 로그 찍어서 확인해보지 않았으면 절대 확인 못했을 문제..ㄷㄷㄷ
notion image