2017-02-01 3 views
1

Das Problem ist Verschleierung mit der neuesten Version von Proguard5.3.2 Maut. Meine Computerumgebung ist Build, Eclipse, Android 22 und Java Level 1.6. Nach der Verwendung der Proguard-Maut, , werden die Dateien dump.txt, mapping.txt, seeds.txt und usage.txt erstellt.Proguard nicht funktioniert, Eclipse (Android) nicht Obfuskation

Die Verschleierung gilt jedoch nicht für apk, das von einer signierten Android-Anwendung generiert wurde. Bitte lassen Sie mich wissen, was ich falsch an Quelle angewendet habe.

Ich befestigte volle source (https://www.dropbox.com/s/2ir1y8xea28l9uj/KeyEvent.7z?dl=0) über einfaches Schlüsselereignis. Option ist Standardoptionen (tool> proguard> proguard-android.txt) und ich habe nichts geändert

Vielen Dank für Ihre freundliche Zusammenarbeit im Voraus, und ich freue mich darauf, bald von Ihnen zu hören.

einfachen Schritt

1 project.properties hinzufügen proguard Pfad

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 

proguard-android.txt android Standardeinstellung nicht bearbeiten

2 Update proguard

proguard 5.3.2 

3 gemacht Proguard Ordner und Datei

dump.txt , mapping.txt ,seeds.txt ,usage.txt 

4 Export singned Android-Anwendung

no error , made singned apk 

5 Ausgang apk -> decomplie aber nicht mapping.txt

com.superdroid.test.event.key.MainActivity -> 
com.superdroid.test.event.key.MainActivity: 
long mExitModeTime -> a 

decomple apk Quelle

MainActivity.class not change (mExitModeTime -> a) 
private long mExitModeTime = 0L; 

Antwort

0

ProGuard Verschleiern doesn Verdecken Sie keine Klassen, die von 0 ausgehen, wie in Eric LaFortunes (ursprünglicher Autor von ProGuard) erwähnt, Antwort here.

Sie können eine vollständige Liste der verdeckten Java-Klassen finden, indem Sie die Datei usage.txt überprüfen, während Klassen, die unverändert geblieben sind, in seeds.txt aufgeführt sind.

+0

ok danke Ihren Kommentar so dass ich Option ändern (proguard-android.txt) halten ** alle Block. proguard-android.txt hat Optionen -dontusemixedcaseclassnames, -dontskipnonpubliclibraryclasses, -dontwarn android.support. ** -verbose, -dontoptimize, -dontpreverify-dontshrink # (diese Option nicht usage.txt machen), aber nicht funktioniert .. meine Samen .txt Die Ressourcendatei ist nicht vorhanden. Das heißt, es wurde geändert Ich erwartete die Ressourcendatei zu ändern. mapping.txt find int activity_horizontal_margin -> a aber nicht Verschleierung –

+0

'int activity_horizontal_margin -> a 'bedeutet, dass' activity_horizontal_margin' verschleiert wurde und jetzt' a' heißt, also funktionierte es wie geplant. Sie wollen auf keinen Fall eine '-dontshrink'-Anweisung, die ProGuard zu einem der entscheidenden Schritte machen würde. –

+0

Ich habe das Android Studio benutzt und war bei den gleichen Einstellungen mit den gleichen Einstellungen erfolgreich. aber Eklipse funktioniert nicht ... Ich werde nur das Studio benutzen. –

0

Ich bin besorgt, dass das, was Sie tatsächlich versuchen, ist ein Passwort oder ein anderes statisches Feld wie eine Zeichenfolge oder int zu speichern, die Sie nicht von der apk abrufbar sein möchten. Leider können Sie das nicht tun. Soweit ich weiß, werden Konstanten immer irgendwo in der Apk sein, auch wenn du es nicht aktivierst. Wenn ein geschützter Inhalt wie ein Kennwort vorhanden ist, sollten Sie es nicht hart codieren. Sie müssen ein anderes Muster haben, um das in den Code zu bekommen, so wie der Benutzer es eingeben muss.

+0

Dank Ihrer Meinung Ich möchte nur Ordner Namen oder Variablennamen verschleiert sehen. –

+0

Entschuldigung für mein Missverständnis. Die Formulierung klang für mich so, als ob du die Werte verstecken wolltest, und ich habe diesen Fehler viel zu oft gesehen. –

0

Wenn Sie alle Aktivitätsklassen und alle Zeichenfolgen (wie Schlüssel, Passwort, ...) verschleiern möchten) Sie können eine alternative Lösung versuchen: Bg+ Anti Decompiler/Obfuscator

Obfuscated sample

public class l000001 extends Activity { 
static int ߤ¤=0,ߤ¥=0,ߤª=0; 
static List ߤº=null; 
static int[] ߤÞ=null; 
void ¢¢£() { 
    ¢¢ = (AdView) findViewById(R.id.ad_view); 
    ¢¢¢=null; 
    { 
     AdRequest ¢¢¤ = new AdRequest.Builder() .build(); 
     ¢¢.loadAd(¢¢¤); 
     ¢¢º(); 
    } 
} 
+0

Verwenden Sie beim Veröffentlichen eines Codeausschnitts die Standardcodesyntax, um die Lesbarkeit für andere Benutzer zu verbessern – Adonis

Verwandte Themen