2016-03-14 1 views
-1

ajouter une méthodePourquoi les méthodes dex comptent-elles ajouter 3 lorsque j'ajoute une méthode?

public static void cancelAll(RequestQueue queue,@NonNull final Object tag){ 
     queue.cancelAll(new RequestQueue.RequestFilter() { 
      @Override 
      public boolean apply(Request<?> request) { 

       Object oldTag = request.getTag(); 
       if(tag == null || oldTag == null){ 
        return false; 
       } 
       if(oldTag instanceof Integer && tag instanceof Integer){ 
        return (int)oldTag == (int)tag; 
       }else if(oldTag instanceof String && tag instanceof String){ 
        return ((String) tag).equalsIgnoreCase((String)oldTag); 
       } 
       return false; 
      } 
     }); 
    } 

Et le nombre de méthode dex ajouter 3.

Je pense qu'ils sont cancelAll et apply.Where est le troisième?

BuildType est la version. Et j'utilise proguard.

C'est la même chose quand je mets buildType à déboguer.

Répondre

0

Le nombre de méthode dex que vous faites référence indique le nombre total de méthodes qui ont été référencées dans un seul Dex, non seulement les déclarés les!
Par conséquent votre question ne peut pas être facilement répondue. Pourquoi ne pas simplement vider tous les noms de méthodes à l'aide d'un outil tel que dextra avec et sans cette méthode, puis différencier les sorties?
Par exemple:

./dextra -M classes.dex 

va afficher toute la liste de method_ids référencé au format suivant:

Method (0): <init> Access Flags: 0x0 Params:() Returns: V 
Method (1): attachBaseContext Access Flags: 0x0 Params: (Landroid/content/Context;) Returns: V 
Method (2): getClassLoader Access Flags: 0x0 Params:() Returns: Ljava/lang/ClassLoader; 
... 
+0

je vais avoir un essai quand je suis libre. –