Στην εποχή της ευρείας χρήσης των κινητών συσκευών, η ανάγκη για ελαφρύτερες και
ταχύτερες εφαρμογές εξακολουθεί να υπάρχει, με σκοπό την καλύτερη αξιοποίηση των
πόρων του συστήματος. Προκειμένου να επιτευχθεί αυτό, έχουν αναπτυχθεί διάφορα ερ-
γαλεία για τη βελτιστοποίηση των εφαρμογών όσο το δυνατόν περισσότερο, μέσω της
ανάλυσης προγραμμάτων. Στην περίπτωση των Android εφαρμογών, το κύριο εργαλείο
που χρησιμοποιείται είναι ο βελτιστοποιητής ProGuard. Με βάση είτε κάποια προεπιλεγ-
μένα αρχεία ρυθμίσεων, είτε κάποια που ορίζονται από τον προγραμματιστή, το ProGuard
εκτελεί βελτιστοποιήσεις σε επίπεδο bytecode.
Οι προεπιλεγμένες ρυθμίσεις, είναι αρκετά απλές και συντηρητικές, με αποτέλεσμα να
χάνονται κάποιες ευκαιρίες για περαιτέρω βελτιστοποιήσεις. Επιπλέον, πολλές εφαρμογές
συχνά εμπεριέχουν κώδικα βιβλιοθηκών, ή κάνουν χρήση δυναμικών χαρακτηριστικών
της γλώσσας, όπως η ανάκλαση, για τα οποία πιθανώς χρειάζονται περαιτέρω ρυθμίσεις,
απο τον προγραμματιστή.
Παρουσιάζουμε μια προσπάθεια αυτοματοποίησης της παραγωγής των ρυθμίσεων του
ProGuard, χρησιμοποιώντας το Doop: ένα framework στατικής ανάλυσης προγραμμάτων
Java. Συμπεριλαμβάνουμε μια πειραματική σύγκριση των διαφόρων ρυθμίσεων που πα-
ράγονται από το Doop, έναντι των προτεινόμενων προεπιλεγμένων ρυθμίσεων.In the era of the widespread usage of mobile devices, the requirement for more lightweight
and faster applications continues to exist, aiming for better system resources utilization.
In order to achieve this, many tools have been developed for optimizing applications as
much as possible, with the aid of program analysis. In the case of Android applications,
the main tool used is the ProGuard optimizer. Given configuration files, either default or
defined by the programmer, ProGuard performs optimizations at the bytecode level.
The default configurations are quite simple and conservative, thus leading to missing
chances for further optimizations. Moreover, many applications usually come with library
code, or use dynamic language features, such as reflection, for which further configuration
may be required by the developer.
We present an attempt to automate the generation of ProGuard configurations, using Doop
framework: a Java static analysis framework. We include an experimental evaluation of
the various configurations produced by the Doop framework, against the default suggested
configurations