NoSuchMethodException:< init>[类android.view.View]生成签名后的apk [英] NoSuchMethodException: <init> [class android.view.View] after generating signed apk

查看:65
本文介绍了NoSuchMethodException:< init>[类android.view.View]生成签名后的apk的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道为什么 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:&lt; init&gt;[类android.view.View]生成签名后的apk的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆