pxb1988 / dex2jar

Tools to work with android .dex and java .class files
Apache License 2.0
12.25k stars 2.1k forks source link

Dashes turning into underscores in filenames ? #312

Open lemonsqueeze opened 4 years ago

lemonsqueeze commented 4 years ago

Hi,

Playing with dex2jar with this .dex file classes.dex.zip, looks like auth-api turns into auth_api when going from .dex file to .jar:

com/google/android/gms/internal/auth-api/* becomes com/google/android/gms/internal/auth_api/*

Tried both 2.1-20180327402 snapshot and latest git (d7a8611)

lemonsqueeze commented 4 years ago

$ strings classes.dex |grep 'Lcom.*gms/internal/auth.api'
,Lcom/google/android/gms/internal/auth-api/a;
,Lcom/google/android/gms/internal/auth-api/b;
,Lcom/google/android/gms/internal/auth-api/c;
,Lcom/google/android/gms/internal/auth-api/d;
,Lcom/google/android/gms/internal/auth-api/e;
,Lcom/google/android/gms/internal/auth-api/f;
,Lcom/google/android/gms/internal/auth-api/g;
,Lcom/google/android/gms/internal/auth-api/h;
,Lcom/google/android/gms/internal/auth-api/i;
,Lcom/google/android/gms/internal/auth-api/j;
,Lcom/google/android/gms/internal/auth-api/k;
,Lcom/google/android/gms/internal/auth-api/l;
,Lcom/google/android/gms/internal/auth-api/m;
,Lcom/google/android/gms/internal/auth-api/m<
,Lcom/google/android/gms/internal/auth-api/n;
,Lcom/google/android/gms/internal/auth-api/o;
,Lcom/google/android/gms/internal/auth-api/p;
,Lcom/google/android/gms/internal/auth-api/q;
,Lcom/google/android/gms/internal/auth-api/r;
,Lcom/google/android/gms/internal/auth-api/s;
,Lcom/google/android/gms/internal/auth-api/t;
.Lcom/google/android/gms/internal/auth-api/zzs;
.Lcom/google/android/gms/internal/auth-api/zzy;
/[Lcom/google/android/gms/internal/auth-api/zzs;
/[Lcom/google/android/gms/internal/auth-api/zzy;

$ unzip -l classes-dex2jar.jar  | grep 'internal/auth.api'
        0  2019-10-06 13:57   com/google/android/gms/internal/auth_api/
      798  2019-10-06 13:57   com/google/android/gms/internal/auth_api/a.class
      792  2019-10-06 13:57   com/google/android/gms/internal/auth_api/b.class
     1194  2019-10-06 13:57   com/google/android/gms/internal/auth_api/c.class
       94  2019-10-06 13:57   com/google/android/gms/internal/auth_api/d.class
     1106  2019-10-06 13:57   com/google/android/gms/internal/auth_api/o.class
      309  2019-10-06 13:57   com/google/android/gms/internal/auth_api/p.class
      456  2019-10-06 13:57   com/google/android/gms/internal/auth_api/r.class
     1106  2019-10-06 13:57   com/google/android/gms/internal/auth_api/t.class
     3137  2019-10-06 13:58   com/google/android/gms/internal/auth_api/g.class
     1079  2019-10-06 13:58   com/google/android/gms/internal/auth_api/q.class
     1065  2019-10-06 13:58   com/google/android/gms/internal/auth_api/s.class
      491  2019-10-06 13:58   com/google/android/gms/internal/auth_api/e.class
      784  2019-10-06 13:58   com/google/android/gms/internal/auth_api/f.class
      889  2019-10-06 13:58   com/google/android/gms/internal/auth_api/zzs.class
      889  2019-10-06 13:58   com/google/android/gms/internal/auth_api/zzy.class
      800  2019-10-06 13:58   com/google/android/gms/internal/auth_api/i.class
      707  2019-10-06 13:58   com/google/android/gms/internal/auth_api/l.class
      950  2019-10-06 13:58   com/google/android/gms/internal/auth_api/m.class
     1704  2019-10-06 13:58   com/google/android/gms/internal/auth_api/n.class
     1174  2019-10-06 13:58   com/google/android/gms/internal/auth_api/h.class
     1119  2019-10-06 13:58   com/google/android/gms/internal/auth_api/j.class
     1119  2019-10-06 13:58   com/google/android/gms/internal/auth_api/k.class
pxb1988 commented 2 years ago

yes, LambadaNameSafeClassAdapter did the change. asm or jvm reject class names whith '-', so it is replaced to '_'

JavkhlanK commented 2 years ago

Do you know what part of the library does that change, and would it be possible to make the library stop doing that? My project would need classes generated by d8 that have names like -$$Lambda$RunnablesExecutor$re6B2STec8sDn1AlZ-GKl1gwEfY as JARs, but unfortunately, the conversion makes it not run.