Unterschriebene apk wird in proguard enable abgestürzt

8

Ich versuche Proguard in meiner App zu verwenden setze den Proguard auf "True" und dann beginne ich mit dem Import von lib, wenn ich proguard verwende, indem ich dies -keepnames class com.somepackage.* mit meinem Paketnamen Die App wird abgestürzt, wenn ich versuche, die signierte APK zu verwenden. Ich weiß, dass dies eine dumme Frage ist, aber ich bin seit 5 Stunden nicht mehr in der Lage, eine einfache Lösung zu finden, da ich etwa 20 Lib verwende. Ich folgte auch diesem . Plz führe mich in diesem wie kann ich das tun?

Dies ist mein Proguard-Regelklassencode

%Vor%

Ich kann jetzt keine signierte Apk erzeugen. der Fehler ist.

%Vor%
  

Job fehlgeschlagen, Details finden Sie in den Protokollen

Jeder Hinweis wird hilfreich sein. Konsolenausgabe

%Vor%
  • Was ist schiefgelaufen? Ausführung fehlgeschlagen für Task ': app: transformClassesAndResourcesWithProguardForRelease'.

      

    Job fehlgeschlagen, Details finden Sie in den Protokollen

  • Versuchen Sie Folgendes: Führen Sie die Option --stacktrace aus, um den Stack-Trace abzurufen. Führen Sie die Option --info oder --debug aus, um mehr Protokollausgaben zu erhalten.

Bearbeiten build.gradle

%Vor%

Eine andere Methode, die ich für proguard-rule.pro

probiert habe %Vor%

die Abhängigkeitsstruktur

    
SAVVY 17.05.2017, 18:38
quelle

5 Antworten

3

Grund: Nicht jede Klasse oder Bibliothek ist mit aktiviertem Proguard optimiert. Was Proguard also tut ist, dass Klassen entfernt werden, wenn sie nicht optimiert werden, was zu Abstürzen und Fehlern im Projekt führt.

Lösung: Halten Sie in Ihrer proguard.cfg-Datei die Klassen oder Bibliotheken, die nicht von progaurd unterstützt werden. Probieren Sie den hier beschriebenen Fang aus:
Versuchen Sie Folgendes hinzuzufügen:

%Vor%


Oder wenn Sie v4 lib verwenden:

%Vor%


Wenn Sie das neueste Android-Studio verwenden, könnten Sie dies als proguard-rules.pro

finden


Versuchen Sie in Ihrem Fall -dontwarn auch mit dem Klassennamen zu verwenden. Wie Ihr Fehler zeigt, kann die circleimageview-Bibliothek nicht optimiert werden. Versuchen Sie also, dies ebenfalls hinzuzufügen:

%Vor%


Wenn immer noch nicht funktioniert, als Downgrade Ihre circleimageview Bibliothek:
compile 'de.hdodenhof:circleimageview:1.3.0' Dies funktioniert für mich.

    
Amit Sharma 26.05.2017 10:23
quelle
2

1) Alle Anmerkungen behalten

%Vor%

2) Behalten Sie, wenn Sie irgendwelche pojos oder Modelle und Klassen haben, die für Netzwerkaufruf

verwenden

Beispiel:

%Vor%

3) Für alle Bibliotheken, die Sie verwenden, halten Sie die folgenden Regeln ein:

Beispiel:

%Vor%

Sie müssen sogar ähnliche Progardregeln für "falttabbar" beibehalten, da es auch eine Bibliothek ist

Wenn die obige Lösung nicht löst, run ./gradlew app:dependencies in Ihrem Repository und Senden Sie mir die Liste der Abhängigkeiten

    
Sanyasirao Mopada 25.05.2017 03:34
quelle
1

Die gleiche Version für alle Unterstützungsbibliotheken ist ebenfalls sehr wichtig. Manchmal haben Bibliotheken rekursive Abhängigkeiten, wobei jede eine andere Version hat, die zu diesem Fehler führen kann. Lauf:

%Vor%

, um die Abhängigkeiten für jede Bibliothek anzuzeigen und zu überprüfen, ob sie alle dieselbe Version haben. Ich sehe bereits, dass Sie 25.1.0 und 25.2.0 Versionen von Support-Bibliotheken verwenden. Außerdem sind einige Ihrer Bibliotheken alt und verwenden daher wahrscheinlich alte Versionen.

Versuchen Sie zu verwenden:

%Vor%

anstelle von:

%Vor%     
Javanshir 23.05.2017 12:28
quelle
0

Proguard entfernt Klassen, die Teil von Abhängigkeiten sind, fügte die App hinzu. Versuche sie zu behalten mit:

%Vor%

Deaktivieren Sie die Warnung für Abhängigkeitsklassen:

%Vor%     
Pehlaj 29.05.2017 05:35
quelle
-2

In Ihrem Code:

%Vor%

mach das

%Vor%

hoffe es hilft:)

    
Zuhad 24.05.2017 13:36
quelle