>

디버그 모드에서는 잘 작동하지만 릴리스 모드에서는 문제가 발생하기 시작한 Android 앱이 있습니다. 항목을 recyclerview에 바인딩하는 동안 충돌이 발생합니다.

처음에는 이것이 proguard 문제라고 생각했지만 디버그 모드에서 proguard를 활성화 한 후에는 릴리스 버전에만이 문제가 있음이 분명해졌습니다. 시험해보기 위해 릴리스 버전을 debuggable true 로 설정했습니다.  문제가 사라졌습니다.

APK를 디버깅 할 수없는 경우에만 충돌을 일으킬 수있는 아이디어가 있습니까? 또는 이것을 디버깅하고 정확히 무엇이 잘못되었는지 확인하는 방법은 무엇입니까?

이것은 내 빌드 타입입니다 :

buildTypes {
    debug {
        multiDexEnabled true
        shrinkResources true
        minifyEnabled true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    release {
        multiDexEnabled true
        shrinkResources true
        minifyEnabled true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

따라서 debuggable true 를 추가하면   release 로 릴리스 버전이 작동합니다. debuggable false 를 추가하면   debug 로 디버그 버전이 작동을 멈 춥니 다 ...

로그 캣 :

E/AndroidRuntime: FATAL EXCEPTION: main
Process: __, PID: _
a.a
    at ___.overview.dashboard.m.a(Unknown Source)
    at ___.overview.dashboard.c.a(Unknown Source)
    at android.support.v7.widget.RecyclerView$a.a(Unknown Source)
    at android.support.v7.widget.RecyclerView$a.b(Unknown Source)
    at android.support.v7.widget.RecyclerView$p.a(Unknown Source)
    at android.support.v7.widget.RecyclerView$p.a(Unknown Source)
    at android.support.v7.widget.RecyclerView$p.a(Unknown Source)
    at android.support.v7.widget.RecyclerView$p.c(Unknown Source)
    at android.support.v7.widget.LinearLayoutManager$c.a(Unknown Source)
    at android.support.v7.widget.LinearLayoutManager.a(Unknown Source)
    at android.support.v7.widget.LinearLayoutManager.a(Unknown Source)
    at android.support.v7.widget.LinearLayoutManager.c(Unknown Source)
    at android.support.v7.widget.RecyclerView.N(Unknown Source)
    at android.support.v7.widget.RecyclerView.q(Unknown Source)
    at android.support.v7.widget.RecyclerView.onLayout(Unknown Source)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.support.constraint.ConstraintLayout.onLayout(Unknown Source)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.support.constraint.ConstraintLayout.onLayout(Unknown Source)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
    at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
    at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
    at com.android.internal.policy.DecorView.onLayout(DecorView.java:887)
    at android.view.View.layout(View.java:18798)
    at android.view.ViewGroup.layout(ViewGroup.java:5951)
    at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2648)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2364)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1515)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7091)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:927)
    at android.view.Choreographer.doCallbacks(Choreographer.java:702)
    at android.view.Choreographer.doFrame(Choreographer.java:638)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:913)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6682)
    at java.lang.reflect.Method.invoke(Native Method)

  • 답변 # 1

    나에게 문제는 릴리스 버전을 테스트하고 있으며 내 활동을 추적하지 못하도록 Crashlytics를 비활성화했다는 것입니다. "debuggable"이 true로 설정되면 제대로 작동하지만 일단 false로 설정하면 앱 시작시 즉시 충돌이 발생했습니다. 그래서 기본적으로 Crashlytics를 켜는 것을 잊었고 내부 오류가 발생했습니다.

    @laalto가 말했듯이

  • 답변 # 2

    @laalto가 말했듯이 스택 추적이 가능합니다 도움이 됨

    프로 가드 파일에 넣는 방법 :

    -keepattributes SourceFile,LineNumberTable
    
    

    오류가있는 위치를 찾는 데 도움이되었습니다. 스택 추적의 원래 클래스 이름과 줄 번호를 보여줍니다. 디버그 모드에서 오류가 발생하지 않는 이유는 여전히 확실하지 않지만 적어도 해결할 수있었습니다. 다시 감사합니다!

관련 자료

  • 이전 NHibernate 새로운 SchemaExport (cfg) Execute (false, true, false, false);네 번째 부울 매개 변수 없음
  • 다음 wso2carbon - WSO2 서버의 기본 키 저장소에서 인증서 변경