{"id":12855,"date":"2018-05-09T11:55:02","date_gmt":"2018-05-09T09:55:02","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=12855"},"modified":"2018-05-09T11:55:02","modified_gmt":"2018-05-09T09:55:02","slug":"android-studio-da-dove-gradle-ottiene-le-librerie","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/android-studio-da-dove-gradle-ottiene-le-librerie\/","title":{"rendered":"Android Studio: da dove Gradle ottiene le librerie?"},"content":{"rendered":"<p>La gestione delle dipendenze in Android Studio \u00e8 una delle caratteristiche pi\u00f9 utili dell&#8217;IDE. Rispetto ai tempi in cui si programmava per Android con Eclipse e ADT, scaricare una libreria &#8211; piccola o grande che sia &#8211; nella versione desiderata ed integrarla nel progetto \u00e8 sicuramente pi\u00f9 semplice.<\/p>\n<p>Aprendo il file <em>build.gradle<\/em> del nostro modulo applicativo \u00e8 sufficiente inserire nel blocco <em>dependencies<\/em> lo strumento di cui si ha bisogno. La seguente dichiarazione, ad esempio, include la libreria Android Support Design Library:<\/p>\n<pre class=\"lang:java decode:true\">dependencies {\r\n    ...\r\n    ...\r\n    compile 'com.android.support:design:25.1.0'\r\n}<\/pre>\n<p>A seguito del comando <em>compile<\/em> vengono passati (in un&#8217;unica stringa concatenata con il simbolo due punti) il Group Id, l&#8217;artifact Id e la versione che nella terminologia di Gradle (ereditata da Maven) rappresentano, rispettivamente, l&#8217;identificativo dei produttori del software, il nome della libreria e la versione desiderata.<\/p>\n<p>Gradle ha ereditato da Maven (entrambe grandi soluzioni per la <a href=\"http:\/\/www.devapp.it\/wordpress\/ant-maven-e-gradle-scenari-di-build-automation-in-java\/\" target=\"_blank\" rel=\"noopener\">build automation<\/a>\u00a0in Java) la modalit\u00e0 di gestione delle dipendenze che rende tutto il procedimento completamente trasparente al programmatore.<\/p>\n<p><strong>Ma da dove prende le librerie Gradle?<\/strong><\/p>\n<p>I <strong>repository ufficiali per Android<\/strong> sono due: <a href=\"https:\/\/bintray.com\/bintray\/jcenter\" target=\"_blank\" rel=\"noopener\">JCenter<\/a>, ospitato da <a href=\"https:\/\/bintray.com\/\" target=\"_blank\" rel=\"noopener\">bintray.com<\/a>, e <a href=\"https:\/\/search.maven.org\/\" target=\"_blank\" rel=\"noopener\">Maven Central<\/a>, ospitato da <a href=\"http:\/\/www.sonatype.org\/\" target=\"_blank\" rel=\"noopener\">sonatype.org<\/a>. Il primo dei due \u00e8 quello di default da alcuni anni. Possono contenere le medesime librerie ma restano pur sempre due contesti assolutamente indipendenti.<\/p>\n<p>Il punto del nostro progetto che sancisce <strong>JCenter repository di default<\/strong> \u00e8 il blocco nel file<em> build.gradle<\/em> principale in cui appare :<\/p>\n<pre class=\"lang:java decode:true \">buildscript {\r\n    repositories {\r\n        jcenter()\r\n    }\r\n    ...\r\n    ...\r\n}<\/pre>\n<p>Il metodo <em>jcenter<\/em>, come si pu\u00f2 immaginare, fissa JCenter come repository ma, volendo, esiste anche il metodo <em>mavencentral<\/em> che incarica di questo ruolo Maven Central.<\/p>\n<p>E&#8217; possibile anche <strong>scegliere ulteriori repository<\/strong> da integrare utilizzando il metodo <em>maven<\/em>:<\/p>\n<pre class=\"lang:java decode:true\">allprojects {\r\n\t\trepositories {\r\n\t\t\t...\r\n\t\t\tmaven { url 'https:\/\/jitpack.io' }\r\n\t\t}\r\n\t}<\/pre>\n<p>La riga indicata nel precedente esempio integra nel progetto la gestione delle dipendenze tramite <a href=\"https:\/\/jitpack.io\/\" target=\"_blank\" rel=\"noopener\">jitpack.io<\/a>, altro famoso repository di progetti Java e Android.<\/p>\n<p>Anche integrando un nuovo repository il soddisfacimento delle dipendenze si svolger\u00e0 come visto prima, con il comando <em>compile<\/em> nel nodo <em>dependencies<\/em>.<\/p>\n<p>JCenter offre un&#8217;infinit\u00e0 di librerie molto utili ma la capacit\u00e0 di saper scegliere i propri repository e orientare il lavoro di Gradle \u00e8 molto importante: come abbiamo visto, comunque, tutto viene offerto con poche direttive molto chiare.<\/p>\n<p>Alla prossima!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La gestione delle dipendenze in Android Studio \u00e8 una delle caratteristiche pi\u00f9 utili dell&#8217;IDE. Rispetto ai tempi&#8230;<\/p>\n","protected":false},"author":561,"featured_media":13554,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1682],"tags":[1278,1541,1555,1554,1553],"class_list":["post-12855","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","tag-android","tag-android-studio","tag-build-automation","tag-gradle","tag-maven"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12855","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=12855"}],"version-history":[{"count":4,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12855\/revisions"}],"predecessor-version":[{"id":13555,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/12855\/revisions\/13555"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media\/13554"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=12855"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=12855"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=12855"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}