2017-01-26 10 views
1

私はなぜか分からないNoSuchMethodExceptionがアプリで発生しています。 firebase auth + databaseを使用しています。 FirebaseRecyclerAdapterでrecyclerviewにデータを設定しています。this answerに従ってこの例外を解決しようとしていますが、それはまだできません。NoSuchMethodException:<init> [class android.view.View]署名付きapkを生成した後

public class PostViewHolder extends RecyclerView.ViewHolder {...}

私はアプリのデバッグバージョンを使用している場合は、それがクラッシュすることなく完璧に動作します。しかし、Signed apkアプリを作成した後は毎回クラッシュしました。すべてのものは、デバッグバージョンで正常に働いていたが、ときに開いてアプリがクラッシュした署名私のコードが間違っている何

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) 

:私は、私はこのLogcatを取得していたにfirebaseクラッシュ報告を使用しています。

答えて

1

これは、ProGuardがあなたのapkを逆仕掛けにして、ハッカーがあなたのapkをリバースエンジニアリングするのを難しくするためです。あなたは難読化が必要とされていない、あなたのGradleの設定でこれを変更すると思われる場合:

minifyEnabled false 

あるいは、ProGuardのは、これを使って、サポートライブラリの難読化をスキップさせることができます:

minifyEnabled true 
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 

は、ファイルproguard-rules.txtを追加し、次の行を追加してみてください:

-keep class android.support.v7.internal.** { *; } 
-keep interface android.support.v7.internal.** { *; } 
-keep class android.support.v7.** { *; } 
-keep interface android.support.v7.** { *; } 
+0

ログを更新できますか? –

+0

申し訳ありませんが私の間違いは今ありがとうございます** @ジョバンニ** –

+0

あなたは歓迎です:) –

関連する問題