2016-07-15 22 views
0

In meiner Anwendung aktiviert progurad von minifyEnabled true und progurad Regeln habe ich nicht hinzugefügt, ich baue die signierte in apk dann stürzt es in der Lauching nur dann dachte ich, dass ich die Klassen hinzufügen muss, die nicht hat abgefunden werden. Dann fügte ich Progurtregeln wie -halte öffentliche Klasse * erweitert android.app.Activity, dann auch nicht funktioniert, ich weiß nicht warum, weil es hängt von anderen Dateien wie Ansichten und R-Dateien alle. Also mein Zweifel ist, wenn ich Progurad aktiviert habe, muss ich alle meine Klassen und Bibliotheken in Progurad Regeln hinzufügen, oder es wird andere Klassen minimieren und als nicht funktioniert.So wie kann ich alle Klassen ohne Absturz App hinzufügen, wenn sie signiert bauen in apkNach dem Hinzufügen in Proguard-Regeln stürzt es auch die App Fügen Sie projektspezifische ProGuard Regeln hier.Wie App auf Absturz zu beschränken, wenn signierte Apk mit Minifyenabled True erstellen, bedeutet angewandtes Programm?

> -keep public class * extends android.app.Activity 
> -keep public class * extends android.app.Application 
> -keep public class * extends android.support.v7.app.AppCompatActivity 
> -keep public class * extends android.content.BroadcastReceiver 
> -keep public class * extends android.content.ContentProvider 
> -keep public class * extends android.preference.Preference 
> -keep public class android.os.AsyncTask 
> -keep public class * extends android.view.View { 
>  public <init>(android.content.Context); 
>  public <init>(android.content.Context, android.util.AttributeSet); 
>  public <init>(android.content.Context, android.util.AttributeSet, int); } 
> -keepclasseswithmembers class * { 
>  public <init>(android.content.Context, android.util.AttributeSet); } 
> -keepclasseswithmembers class * { 
>  public <init>(android.content.Context, android.util.AttributeSet, int); } 
> -keepclassmembers class * extends android.content.Context { 
>  public void *(android.view.View); 
>  public void *(android.view.MenuItem); } 
> # The official support library. 
> -keep class android.support.v4.app.** { *; } 
> -keep interface android.support.v4.app.** { *; } 
> -keep class android.support.v7.app.** { *; } 
> -keep interface android.support.v7.app.** { *; } 
> -dontwarn android.support.** 

Wie kann ich eine App mit proguard Release testen bauen, gibt es etwas direclty unterzeichnet in apk zu prüfen oder ich muss keine Mapping-Dateien hinzufügen .Wie kann ich direkte Freisetzung apk testen oder If das apk upload in playstore dann funktioniert es basierend auf Zuordnung von Dateien

+1

diese Frage zu bearbeiten die Antworten, die du brauchst: http://stackoverflow.com/questions/18259632/should-i-use-proguard – Bill

Antwort

0

Ich fand Art irgendeine Lösung, wenn wir direkte Freisetzung apk mit minimierte installieren richten dann wird der Code minimiert (verschleiert), so weiß App nicht, was diese Art von Code, so dass es, wenn sie direkt zum Absturz Installiere Release-APK.

Also, was meine Lösung ist nach die apk-Upload in Plays Freigabe und die Zuordnungsdatei unter dem \ Ausgaben \ Mapping \ release \ mapping.txt Datei in die Plays so laden Sie die App von Plays Build laden dann kann es Werke In Mapping-Datei werden alle Mapping-Klassen there.so zu dieser Zeit wird es nicht abstürzen. Mapping-Datei in Playstore laden https://support.google.com/googleplay/android-developer/answer/6295281?hl=en Ich habe es nicht versucht, aber wenn jemand versucht, dann lassen Sie mich wissen, um die Antwort

0

In meiner Proguard-Datei ist alles auskommentiert und es funktioniert ganz gut mit minifyEnabled True. Haben Sie versucht, so etwas wie dieses:

proguard-rules.pro:

# Add project specific ProGuard rules here. 
# By default, the flags in this file are appended to flags specified 
# in C:\Users\<yourUser>\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 *; 
#} 

Und mein gradle wie folgt aussieht:

buildTypes { 
     release { 
      minifyEnabled true 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

Edit: Andere Lösungen: https://stackoverflow.com/a/6492478

+0

hast du irgendwelche signedin apk wie release build erstellt, dann in diesem build ist es crashing – Hanuman

+0

Ja, ich habe keine Probleme beim Erstellen einer signierten Release-Kopie ... – AZOM

+0

nach der Veröffentlichung von Build überprüfen Sie einfach, ob es funktioniert oder nicht (installieren und überprüfen) und überprüfen Sie die Debug-apk und Release-apk-Größe wird es sehr unterschiedlich sein – Hanuman

0

Dies ist, was documentation sagte einfach über Proguard.

Um Ihre APK-Datei so klein wie möglich zu machen, sollten Sie das Schrumpfen aktivieren, um nicht verwendeten Code und Ressourcen in Ihrem Build zu entfernen. Auf dieser Seite wird beschrieben, wie dies durchgeführt wird und wie der Code und die Ressourcen angegeben werden, die während des Builds beibehalten oder gelöscht werden.

-Code Schrumpfung ist mit ProGuard zur Verfügung, die erkennt und entfernt ungenutzte Klassen, Felder, Methoden und Attribute von Ihrer gepackte Anwendung, auch aus enthielten Code-Bibliotheken (ihm ein wertvolles Werkzeug für die Arbeit rund um die 64k Referenzgrenze machen). ProGuard optimiert außerdem den Bytecode, entfernt nicht verwendete Codeanweisungen und verschleiert die verbleibenden Klassen, Felder und Methoden mit kurzen Namen.

ich einen schönen Beitrag über sie gelesen haben, so sollten Sie es auch gelesen, von here

Wenn Sie wissen wollen, wie es in der Praxis verwenden dann this Antwort für Sie hilfreich sein können, und wenn Sie Vorschlag wollen, wann um es dann zu verwenden, sehen Sie this Antwort.