{"id":12126,"date":"2017-01-02T14:51:42","date_gmt":"2017-01-02T13:51:42","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12126"},"modified":"2017-01-02T14:51:42","modified_gmt":"2017-01-02T13:51:42","slug":"proguard-ottimizza-codice-e-risorse-della-tua-applicazione-android","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/proguard-ottimizza-codice-e-risorse-della-tua-applicazione-android\/","title":{"rendered":"Proguard: ottimizza codice e risorse della tua applicazione Android"},"content":{"rendered":"<p>Chi <strong>programma in ambiente Java o Android<\/strong> avr\u00e0\u00a0gi\u00e0 sicuramente sentito\u00a0parlare di <a href=\"https:\/\/developer.android.com\/studio\/build\/shrink-code.html\" target=\"_blank\">Proguard<\/a>, un tool per l&#8217;ottimizzazione del codice che si basa sullo &#8220;snellimento&#8221; del bytecode prodotto in compilazione.<\/p>\n<p>Proguard svolge le seguenti attivit\u00e0:<\/p>\n<ul>\n<li>restringe il codice, ripulendolo da classi, metodi e variabili non utilizzati;<\/li>\n<li>offusca il software prodotto eliminando informazioni di debug introdotte appositamete per il testing, ma che in ambito di produzione non servono e possono anche costituire un possibile appiglio per la decompilazione ed il <em>reverse engeneering<\/em> volti a risalire al codice sorgente dell&#8217;app;<\/li>\n<li>infine, ottimizza il codice,\u00a0e questo \u00e8 un elemento complementare ai precedenti in quanto in molti casi Proguard riesce a sostituire le istruzioni presenti nel bytecode con altre pi\u00f9 efficienti.<\/li>\n<\/ul>\n<p>Il risultato finale sar\u00e0, in pratica, un APK pi\u00f9 snello e meno decompilabile. Nei progetti Android Studio, l&#8217;integrazione di Proguard \u00e8 gi\u00e0 predisposta. All&#8217;interno del file <strong>build.gradle<\/strong> del modulo applicativo troviamo un blocco di questo tipo:<\/p>\n<pre class=\"lang:sh decode:true \">buildTypes {\r\n        release {\r\n            minifyEnabled false\r\n            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'\r\n        }\r\n    }<\/pre>\n<p>dove:<\/p>\n<ul>\n<li>si specifica che tali direttive valgono solo per la versione <em>release<\/em> del pacchetto: ci\u00f2 permetter\u00e0 di continuare a &#8220;debuggare&#8221; normalmente il codice;<\/li>\n<li>basta impostare a <em>true<\/em> il valore della propriet\u00e0 <em>minifyEnabled<\/em> per attivare lo snellimento del prodotto finale;<\/li>\n<li>vengono passati altri nomi di file in cui saranno presenti ulteriori direttive di Proguard.<\/li>\n<\/ul>\n<p>Per realizzare app di successo, non basta quindi creare ottimo codice funzionale e dotato di interfacce intuitive: serve ottimizzare il proprio lavoro e proteggerlo da usi non autorizzati e Proguard \u00e8 una buona soluzione, ricca di tante funzionalit\u00e0 e pronta all&#8217;uso in Android Studio.<\/p>\n<p>Alla prossima!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Chi programma in ambiente Java o Android avr\u00e0\u00a0gi\u00e0 sicuramente sentito\u00a0parlare di Proguard, un tool per l&#8217;ottimizzazione del&#8230;<\/p>\n","protected":false},"author":561,"featured_media":12712,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[481],"tags":[1839,1838,1840],"class_list":["post-12126","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-risorse-utili","tag-ottimizzare-codice-android","tag-proguard","tag-tools-android"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12126","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=12126"}],"version-history":[{"count":5,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12126\/revisions"}],"predecessor-version":[{"id":12713,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12126\/revisions\/12713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/12712"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12126"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12126"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12126"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}