2017-02-01 5 views
1

Le problème est Obfuscation en utilisant la dernière version de Proguard5.3.2 péage. Mon environnement informatique est build, eclipse, android 22 et java niveau 1.6. Après l'utilisation du droit Proguard, les fichiers de dump.txt, mapping.txt, seeds.txt et usage.txt sont créés. Cependant, l'Obfuscation ne s'applique pas à apk générée par une application Android signée à l'exportation. S'il vous plaît laissez-moi savoir ce que j'ai appliqué à tort à la source.Proguard ne fonctionne pas, éclipse (android) pas Obfuscation

J'ai attaché complet source (https://www.dropbox.com/s/2ir1y8xea28l9uj/KeyEvent.7z?dl=0) sur l'événement de clé simple. L'option est Options par défaut (outil> proguard> proguard-android.txt) et je n'ai rien changé

Merci de votre aimable collaboration à l'avance et j'ai hâte d'avoir de vos nouvelles bientôt.

simple étape

1 project.properties ajouter le chemin PROGUARD

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

proguard-android.txt paramètre par défaut Android ne modifiez pas

2 mise à jour proguard

proguard 5.3.2 

3 dossier proguard et fichier

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

4 export singned d'applications Android

no error , made singned apk 

5 sortie apk -> decomplie mais pas obscurcissant mapping.txt

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

decomple apk source de

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

Répondre

0

ProGuard doesn 't obscurcissent les classes qui s'étendent de Activity, comme mentionné dans Eric LaFortune (auteur original de ProGuard) répondre here.

Vous pouvez trouver une liste complète des classes Java qui ont été obscurcies en vérifiant le fichier usage.txt tandis que les classes qui ont été laissées inchangées sont répertoriées dans seeds.txt.

+0

ok merci de votre commentaire, donc je l'option changement (proguard-android.txt) garder ** tout bloc. proguard-android.txt a des options -dontusemixedcaseclassnames, -dontskipnonpubliclibraryclasses, -dontwarn android.support. ** -verbose, -dontoptimize, -dontpreverify-dontshrink # (cette option ne fait pas usage.txt) mais ne fonctionne pas .. mes graines .txt Le fichier de ressources n'existait pas. C'est-à-dire, changé Je m'attendais à ce que le fichier de ressources change. mapping.txt find int activity_horizontal_margin -> a mais pas Obfuscation –

+0

'int activity_horizontal_margin -> a' signifie que' activity_horizontal_margin' a été obscurci et qu'il s'appelle maintenant 'a', donc cela a fonctionné comme prévu. Vous ne voulez certainement pas d'une directive '-dontshrink', qui ferait en sorte que ProGuard ignore une de ses étapes cruciales. –

+0

J'utilisais le studio Android et réussissais avec les mêmes options de réglages. mais l'éclipse ne fonctionne pas ... Je vais juste utiliser le studio. –

0

Je suis inquiet que ce que vous essayez réellement de faire est d'enregistrer un mot de passe ou un autre champ statique comme une chaîne ou int que vous ne voulez pas être récupérable à partir de l'apk. Malheureusement, vous ne pouvez pas faire cela. À ma connaissance, les constantes seront toujours là quelque part dans l'apk, même si vous ne le mettez pas dans une activité. S'il y a du contenu protégé, comme un mot de passe, vous ne devriez pas le coder en dur. Vous devez avoir un autre modèle pour l'inclure dans le code, comme si l'utilisateur l'avait saisi.

+0

Merci de votre avis Je veux juste voir les noms de dossiers ou noms de variables obfusqués. –

+0

Désolé pour mon malentendu. Le libellé m'a semblé vouloir cacher les valeurs, et j'ai vu cette erreur beaucoup trop de fois. –

0

si vous voulez masquer toutes les classes d'activités et toutes les chaînes (comme la clé, le mot de passe, ...) Vous pouvez essayer une solution de rechange: 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

Veuillez utiliser la syntaxe de codage standard lors de la publication d'un extrait de code pour faciliter la lecture pour les autres – Adonis