2017-01-26 13 views
1

Не знаю почему NoSuchMethodException происходит в приложении. Я использую базу данных auth + firebase. Я заполняю данные для recyclerview с помощью FirebaseRecyclerAdapter. Я пытаюсь решить это исключение, следуя this answer, но пока не могу сделать это возможным.NoSuchMethodException: <init> [класс android.view.View] после генерации подписанного apk

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

Если я использую отладочную версию приложения она отлично работает без сбоев. Но после создания приложения Signed apk каждый раз рушился. Я использую firebase отчетности аварии, в которой я получаю эту 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) 

Что случилось с моим кодом каждая вещь работала нормально в отладочной версии, но подписанное приложение разбился при открытии.

ответ

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

извините, моя ошибка теперь работает Спасибо ** @ Giovanni ** –

+0

Добро пожаловать :) –

 Смежные вопросы

  • Нет связанных вопросов^_^