【发布时间】:2019-01-04 11:01:58
【问题描述】:
我有一个 Android 应用程序在调试模式下运行良好,但在发布模式下开始出现问题。它在将项目绑定到回收站视图时崩溃。
最初我认为这将是一个 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,则调试版本将停止工作...
Logcat:
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)
【问题讨论】:
-
即使不可调试,也应该有关于崩溃的异常堆栈跟踪。除此之外,看看是否有任何代码,例如以
BuildConfig.DEBUG为条件。 -
请提供logcat..
-
@laalto 没有调试条件代码
-
@shkschneider 添加了 logcat
标签: android kotlin android-proguard