2016-08-01 24 views
1

Meine App stürzt wegen meines Proguard-Fehlers ab. Ich habe diese Frage auch irgendwo gepostet. Wie kann ich den Proguard-Fehler formatieren? Bitte helfen Sie mir heraus, diese zu lösen:App stürzt ab mit Proguard

Mein build.gradle:

apply plugin: 'com.android.application' 
android { 
compileSdkVersion 24 
buildToolsVersion "24.0.1" 
defaultConfig { 
    applicationId 'com.quorate.android' 
    minSdkVersion 16 
    targetSdkVersion 24 
    versionCode 3 
    versionName "1.2" 
    testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner' 
    vectorDrawables.useSupportLibrary = true 
} 
buildTypes { 
    release { 
     minifyEnabled true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     signingConfig signingConfigs.debug 
     debuggable true 
    } 
} 
productFlavors { 
} 
} 

configurations.all { 
resolutionStrategy.force 'com.android.support:support-annotations:24.0.0' 
} 

dependencies { 
testCompile 'junit:junit:4.12' 
compile fileTree(include: ['*.jar'], dir: 'libs') 
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' 
androidTestCompile 'com.android.support.test:runner:0.5' 
compile 'com.android.support:appcompat-v7:24.1.1' 
compile 'com.android.support:recyclerview-v7:24.1.1' 
compile 'com.android.support:cardview-v7:24.1.1' 
compile 'com.android.support:design:24.1.1' 
compile 'com.firebaseui:firebase-ui-database:0.4.3' 
compile 'com.google.firebase:firebase-auth:9.2.1' 
compile 'com.google.firebase:firebase-database:9.2.1' 
compile 'com.android.support:support-v4:24.1.1' 
compile 'com.google.firebase:firebase-core:9.2.1' 
} 

apply plugin: ' 

Meine proguard Regeln Pro-Dateien:

# Add project specific ProGuard rules here. 
# By default, the flags in this file are appended to flags specified 
# in C:\Users\Vyshnav\AppData\Local\Android\Sdk/tools/proguard/proguard- android.txt 
# You can edit the include path and order by changing the proguardFiles 
# directive in build.gradle. 
# 
# For more details, see 
# http://developer.android.com/guide/developing/tools/proguard.html 

# Add any project specific keep options here: 

# If your project uses WebView with JS, uncomment the following 
# and specify the fully qualified class name to the JavaScript interface 
# class: 
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { 
# public *; 
#} 

-keepattributes Signature 
-keepattributes *Annotation* 

-keep class com.quorate.android.PostViewHolder.** { 
*; 
} 

-keepclassmembers class com.quorate.android.User.** { 
*; 
} 

-keepclassmembers class com.quorate.android.Post.** { 
*; 
} 

-keepclassmembers class com.quorate.android.Comment.** { 
*; 
} 

logcat Fehler:

java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View] 
at com.a.a.a.d.b(Unknown Source) 
at android.support.v7.widget.ek.c(Unknown Source) 
at android.support.v7.widget.fb.a(Unknown Source) 
at android.support.v7.widget.fb.c(Unknown Source) 
at android.support.v7.widget.dj.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.J(Unknown Source) 
at android.support.v7.widget.RecyclerView.k(Unknown Source) 
at android.support.v7.widget.RecyclerView.t(Unknown Source) 
at android.support.v7.widget.RecyclerView.c(Unknown Source) 
at android.support.v7.widget.ee.run(Unknown Source) 
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767) 
at android.view.Choreographer.doCallbacks(Choreographer.java:580) 
at android.view.Choreographer.doFrame(Choreographer.java:549) 
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:135) 
at android.app.ActivityThread.main(ActivityThread.java:5930) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200) 
Caused by: java.lang.NoSuchMethodException: <init> [class android.view.View] 
at java.lang.Class.getConstructor(Class.java:531) 
at java.lang.Class.getConstructor(Class.java:495) 
... 25 more 
+0

Müssen wir nur den Grund erraten, warum Ihre App abstürzt? Bitte fügen Sie Ihre Logcat –

+0

Entschuldigung, ich habe bearbeitet und hinzugefügt die logcatnow –

+0

Diese Frage ist tatsächlich meine Fortsetzung der folgenden Frage: http://StackOverflow.com/Questions/38696008/App-Crashes-When-Fetching-Data# –

Antwort

2

Ok habe ich es selbst gelöst. Danke für deine Hilfe. Ich weis das zu schätzen. Ich löste es durch Ändern von "Minify aktiviert True" zu "Minify aktiviert, falsch", da das Problem Proguard war. Der Grund, warum es beim Debuggen über Studio nicht angezeigt wurde, war, dass Proguard automatisch deaktiviert wird, wenn "Instant Run" verwendet wird. Es dauerte 24 Stunden und eine starke Augenschmerzen, um dies zu lösen. Hoffe, diese Antwort hilft jemandem irgendwann. Und StackOverflow-Entwickler ... Sie müssen wirklich neue Funktionen entwickeln, damit Anfänger wie ich schneller Antworten bekommen können. Vielleicht sollte ich das selbst entwickeln!

+0

Einstellung MinifyEnabled False ist eine Problemumgehung. Oft wird eine Verschleierung der App mit Sicherheitsbewertungen/Anforderungen benötigt. (Empfindlicher Inhalt oder Sicherheit) – estoke

0

Versuchen Zugabe von unten Zeilen in unserem Programm.

-keep public class android.support.v7.widget.** { *; } -keep public class android.support.v7.internal.widget.** { *; } -keep public class android.support.v7.internal.view.menu.** { *; }

Else können Sie versuchen, einige der Protokolle zu dekodieren mit - printmapping myapplication.map in proguard Datei. Nach dem Decodieren können wir einige der tatsächlichen Protokolle

+0

Ok lass mich sehen. Aber das Problem ist, ich muss es im Play Store veröffentlichen und dann überprüfen, da die App erst nach der Veröffentlichung abstürzt. Gibt es vor der Veröffentlichung eine alternative Methode? Ich habe die Release-Variante ausprobiert. –

+0

Keine Notwendigkeit der freigegebenen Version Ich denke, aber ich bin mir nicht sicher, nur unterschreiben Sie die apk mit Ihren Freigabeschlüssel und versuchen Sie es. –

+0

meinst du "generieren signierte apk"? –