JakeWharton / diffuse

Diffuse is a tool for diffing APKs, AABs, AARs, and JARs
Apache License 2.0
1.97k stars 103 forks source link

Support diffing uses-permission counts #274

Open Goooler opened 4 months ago

Goooler commented 4 months ago

There might be significant differences in blame attribution for AndroidManifest.xml. We usually pay close attention to changes in versionCode, targetSdk, and the count of uses-permissions. Adding an extra line to display the result.

OLD: before.apk (signature: V1, V2, V3)
NEW: after.apk (signature: V1, V2, V3)

          │          compressed           │          uncompressed
          ├───────────┬───────────┬───────┼───────────┬───────────┬────────
 APK      │ old       │ new       │ diff  │ old       │ new       │ diff
──────────┼───────────┼───────────┼───────┼───────────┼───────────┼────────
      dex │   1.7 MiB │   1.7 MiB │   0 B │   3.8 MiB │   3.8 MiB │    0 B
     arsc │ 372.3 KiB │ 372.3 KiB │   0 B │ 372.2 KiB │ 372.2 KiB │    0 B
 manifest │   2.8 KiB │   2.8 KiB │ -30 B │  11.2 KiB │    11 KiB │ -176 B
      res │ 266.9 KiB │ 266.9 KiB │  -4 B │ 380.9 KiB │ 380.9 KiB │    0 B
    asset │   6.1 KiB │   6.1 KiB │   0 B │   5.9 KiB │   5.9 KiB │    0 B
    other │  28.9 KiB │  28.9 KiB │   0 B │  58.9 KiB │  58.9 KiB │    0 B
──────────┼───────────┼───────────┼───────┼───────────┼───────────┼────────
    total │   2.4 MiB │   2.4 MiB │ -34 B │   4.6 MiB │   4.6 MiB │ -176 B

 DEX     │ old   │ new   │ diff
─────────┼───────┼───────┼───────────
   files │     1 │     1 │ 0
 strings │ 25213 │ 25213 │ 0 (+0 -0)
   types │  5662 │  5662 │ 0 (+0 -0)
 classes │  4444 │  4444 │ 0 (+0 -0)
 methods │ 25556 │ 25556 │ 0 (+0 -0)
  fields │ 28471 │ 28471 │ 0 (+0 -0)

 ARSC    │ old  │ new  │ diff
─────────┼──────┼──────┼──────
 configs │   49 │   49 │  0
 entries │ 2416 │ 2416 │  0

=================
====   APK   ====
=================

    compressed    │   uncompressed    │
──────────┬───────┼──────────┬────────┤
 size     │ diff  │ size     │ diff   │ path
──────────┼───────┼──────────┼────────┼────────────────────────
  2.8 KiB │ -30 B │   11 KiB │ -176 B │ ∆ AndroidManifest.xml
  2.4 KiB │  -4 B │  2.3 KiB │    0 B │ ∆ res/1I.9.png
  1.2 KiB │  +1 B │  1.3 KiB │    0 B │ ∆ META-INF/CERT.RSA
   13 KiB │  -1 B │ 28.3 KiB │    0 B │ ∆ META-INF/MANIFEST.MF
──────────┼───────┼──────────┼────────┼────────────────────────
 19.3 KiB │ -34 B │ 42.9 KiB │ -176 B │ (total)

======================
====   MANIFEST   ====
======================

                       │ old                    │ new
───────────────────────┼────────────────────────┼────────────────────────
 package               │ io.goooler.demoapp.app │ io.goooler.demoapp.app
 version code          │ 109000                 │ 109000
 version name          │ 1.9.0                  │ 1.9.0
 uses-permission count │ 14                     │ 13

@@ -18,5 +18,2 @@
   <uses-permission
-      android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEM"
-      />
-  <uses-permission
       android:name="android.permission.ACCESS_NETWORK_STATE"