问题描述
我不知道为什么 NoSuchMethodException 在应用程序中发生.我正在使用firebase auth +数据库.我正在使用 FirebaseRecyclerAdapter 将数据填充到recyclerview中.我正在尝试通过遵循,但尚无法实现.
I don't know why NoSuchMethodException is happening in the app. I am using firebase auth + database. I am populating data to recyclerview with FirebaseRecyclerAdapter .I am trying to solve this exception by following this answer but cannot make it possible yet.
公共类PostViewHolder扩展了RecyclerView.ViewHolder {...}
如果我使用该应用程序的调试版本,则可以完美运行而不会崩溃.但是在创建Signed apk应用后,每次都会崩溃.我正在使用Firebase崩溃报告,在其中获得此 Logcat:
If I use debug version of the app it works perfectly without crashing. But after creating Signed apk app crashed every time. I am using firebase crash reporting in which I am getting this Logcat :
Exception java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View]
com.b.a.a.b.a ()
android.support.v7.widget.RecyclerView$a.b ()
android.support.v7.widget.RecyclerView$o.a ()
android.support.v7.widget.RecyclerView$o.a ()
android.support.v7.widget.RecyclerView$o.c ()
android.support.v7.widget.LinearLayoutManager$c.a ()
android.support.v7.widget.LinearLayoutManager.a ()
android.support.v7.widget.LinearLayoutManager.a ()
android.support.v7.widget.LinearLayoutManager.c ()
android.support.v7.widget.RecyclerView.M ()
android.support.v7.widget.RecyclerView.p ()
android.support.v7.widget.RecyclerView.c ()
android.support.v7.widget.RecyclerView$1.run ()
android.view.Choreographer$CallbackRecord.run (Choreographer.java:767)
android.view.Choreographer.doCallbacks (Choreographer.java:580)
android.view.Choreographer.doFrame (Choreographer.java:549)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:753)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:135)
android.app.ActivityThread.main (ActivityThread.java:5233)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:898)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:693)
Caused by java.lang.NoSuchMethodException: <init> [class android.view.View]
java.lang.Class.getConstructor (Class.java:531)
java.lang.Class.getConstructor (Class.java:495)
com.b.a.a.b.a ()
android.support.v7.widget.RecyclerView$a.b ()
android.support.v7.widget.RecyclerView$o.a ()
android.support.v7.widget.RecyclerView$o.a ()
android.support.v7.widget.RecyclerView$o.c ()
android.support.v7.widget.LinearLayoutManager$c.a ()
android.support.v7.widget.LinearLayoutManager.a ()
android.support.v7.widget.LinearLayoutManager.a ()
android.support.v7.widget.LinearLayoutManager.c ()
android.support.v7.widget.RecyclerView.M ()
android.support.v7.widget.RecyclerView.p ()
android.support.v7.widget.RecyclerView.c ()
android.support.v7.widget.RecyclerView$1.run ()
android.view.Choreographer$CallbackRecord.run (Choreographer.java:767)
android.view.Choreographer.doCallbacks (Choreographer.java:580)
android.view.Choreographer.doFrame (Choreographer.java:549)
android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:753)
android.os.Handler.handleCallback (Handler.java:739)
android.os.Handler.dispatchMessage (Handler.java:95)
android.os.Looper.loop (Looper.java:135)
android.app.ActivityThread.main (ActivityThread.java:5233)
java.lang.reflect.Method.invoke (Method.java)
java.lang.reflect.Method.invoke (Method.java:372)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:898)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:693)
我的代码有什么问题,每件事在调试版本中都可以正常工作,但是打开后已签名的应用程序崩溃了.
What is wrong with my code every thing worked fine in debug version but signed app crashed when open.
推荐答案
这是因为ProGuard混淆了您的APK,使黑客更难对您的APK进行反向工程.如果您认为不需要混淆,请在gradle配置中进行更改:
This is because ProGuard is obfuscating your apk to make it harder for hackers to reverse-engineering your apk. If you think obfuscation is not needed, change this in your gradle configuration:
minifyEnabled false
或者,您可以使用以下方法让ProGuard跳过对支持库的混淆:
Alternatively, you can let ProGuard skip obfuscation of the support libraries by using this:
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
添加文件 proguard-rules.txt
并尝试添加以下行:
Add a file proguard-rules.txt
and try adding these lines:
-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }
-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }
这篇关于NoSuchMethodException:< init>[类android.view.View]生成签名后的apk的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!