Slide 1

Slide 1 text

The open source optimizer for Java bytecode @soulesidibe Proguard

Slide 2

Slide 2 text

• Proguard, quèsaco? • Proguard on Android • Why should we use Proguard? Agenda

Slide 3

Slide 3 text

Proguard, quèsaco?

Slide 4

Slide 4 text

Proguard • By Guard Square • First release 2002 • Written in… java • For Java based app(Java *E, Android, etc)

Slide 5

Slide 5 text

Proguard • Last version !-> 6.0 • ./gradlew buildEnvironment | grep proguard • Source code is on sourceforge.

Slide 6

Slide 6 text

Proguard. Quèsaco? Input Jars Output Jars Shrink Optimize Obfuscate Preverify

Slide 7

Slide 7 text

Proguard. Quèsaco? Input Jars Output Jars Shrink Optimize Obfuscate Preverify • Looks at all possible entry points • Calculates the map of reachable code • Remove dead code

Slide 8

Slide 8 text

Proguard. Quèsaco? Input Jars Output Jars Shrink Optimize Obfuscate Preverify

Slide 9

Slide 9 text

Proguard. Quèsaco? Input Jars Output Jars Shrink Optimize Obfuscate Preverify proguard.optimize.Optimizer.java

Slide 10

Slide 10 text

Proguard. Quèsaco? Input Jars Output Jars Shrink Optimize Obfuscate Preverify • Renames classes and members that are not entry points

Slide 11

Slide 11 text

Proguard. Quèsaco? Input Jars Output Jars Shrink Optimize Obfuscate Preverify • I don’t know ☹ • Generate mapping files

Slide 12

Slide 12 text

Proguard on Android

Slide 13

Slide 13 text

Proguard on Android build.gradle

Slide 14

Slide 14 text

Proguard on Android • dump.txt • mapping.txt • seeds.txt • usage.txt

Slide 15

Slide 15 text

Proguard errors

Slide 16

Slide 16 text

Proguard errors -dontwarn com.google.errorprone.annotations.* -dontwarn org.codehaus.mojo.animal_sniffer.*

Slide 17

Slide 17 text

Proguard errors • ClassNotFoundException • MethodNotFoundException

Slide 18

Slide 18 text

Proguard errors • ClassNotFoundException • MethodNotFoundException

Slide 19

Slide 19 text

Proguard on Android Démo

Slide 20

Slide 20 text

Why should we use Proguard?

Slide 21

Slide 21 text

Why should we use Proguard? • More compact code

Slide 22

Slide 22 text

Why should we use Proguard? • More compact code • The obfuscation

Slide 23

Slide 23 text

Why should we use Proguard? • More compact code • The obfuscation • Smaller app

Slide 24

Slide 24 text

Why should we use Proguard? • More compact code • The obfuscation • Smaller app • Avoid 64k methods limit

Slide 25

Slide 25 text

That’s it! @soulesidibe