<a href="#%E9%97%AE%E9%A2%98%E6%8F%8F%E8%BF%B0" target="_blank">問題描述</a>
<a href="#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95" target="_blank">解決方法</a>
<a href="#%E5%85%88%E4%BA%86%E8%A7%A3compile-comsquareupokhttpokhttp240%E7%9A%84%E6%84%8F%E4%B9%89" target="_blank">先了解compile comsquareupokhttpokhttp240的意義</a>
<a href="#%E4%BA%86%E8%A7%A3jcenter%E5%92%8Cmaven" target="_blank">了解Jcenter和Maven</a>
<a href="#jcenter" target="_blank">jcenter</a>
<a href="#maven-central" target="_blank">Maven Central</a>
<a href="#%E7%90%86%E8%A7%A3jcenter%E5%92%8Cmaven-central" target="_blank">了解jcenter和Maven Central</a>
<a href="#%E5%BF%AB%E9%80%9F%E6%90%9C%E7%B4%A2%E6%96%B9%E6%B3%951" target="_blank">快速搜尋方法1</a>
<a href="#%E5%BF%AB%E9%80%9F%E6%90%9C%E7%B4%A2%E6%96%B9%E6%B3%952" target="_blank">快速搜尋方法2</a>
<a href="#%E5%BF%AB%E9%80%9F%E6%90%9C%E7%B4%A2%E6%96%B9%E6%B3%953" target="_blank">快速搜尋方法3</a>
<a href="#%E5%9B%A0%E6%AD%A4%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9C%8B%E4%BD%A0%E6%98%AF%E6%83%B3%E8%A6%81%E9%82%A3%E4%B8%AA%E7%89%88%E6%9C%AC%E7%9A%84" target="_blank">是以要注意看你是想要那個版本的</a>
今天有個android開發者問了我下面的問題:
問個問題 比如我想找最新的okhhtp compile的最新那句話 compile ‘com.squareup.okhttp:okhttp:2.4.0’ 2.4.0明顯不是最新的 應該怎麼找?
如下圖所示:

好吧,就這個問題寫一篇部落格來描述怎麼找到最新的第三方開發包的版本。
首先我們要了解compile ‘com.squareup.okhttp:okhttp:2.4.0’這一行gradle代碼的意義。
基本上我們可以從這一行代碼可以了解到,引用一個library的代碼需要3個部分,即:
GROUP_ID:ARTIFACT_ID:VERSION
在這句代碼裡面的
GROUP_ID 是com.squareup.okhttp,
ARTIFACT_ID 是okhttp,
VERSION 是2.4.0
按照我的了解,
GROUP_ID就像是我們寫一個項目使用的公司包名一樣,表示自己所在的團隊或個人,
ARTIFACT_ID我認為就是這個類庫的名稱,用于區分同一個GROUP下不同的類庫,
最後的VERSION顧名思義就是版本号。
Android Studio是從build.gradle裡面定義的Maven 倉庫伺服器上下載下傳library的。Apache Maven是Apache開發的一個工具,提供了用于貢獻library的檔案伺服器。總的來說,隻有兩個标準的Android library檔案伺服器:jcenter 和 Maven Central。
jcenter是一個由 bintray.com維護的Maven倉庫 。你可以在這裡看到整個倉庫的内容。
我們在項目的build.gradle 檔案中如下定義倉庫,就能使用jcenter了:
Maven Central 則是由sonatype.org維護的Maven倉庫。你可以在這裡看到整個倉庫。
注:不管是jcenter還是Maven Central ,兩者都是Maven倉庫
我們在項目的build.gradle 檔案中如下定義倉庫,就能使用Maven Central了:
注意,雖然jcenter和Maven Central 都是标準的 android library倉庫,但是它們維護在完全不同的伺服器上,由不同的人提供内容,兩者之間毫無關系。在jcenter上有的可能 Maven Central 上沒有,反之亦然。
為何有兩個标準的倉庫?
事實上兩個倉庫都具有相同的使命:提供Java或者Android library服務。上傳到哪個(或者都上傳)取決于開發者。
起初,Android Studio 選擇Maven Central作為預設倉庫。如果你使用老版本的Android Studio建立一個新項目,mavenCentral()會自動的定義在build.gradle中。
但是Maven Central的最大問題是對開發者不夠友好。上傳library異常困難。上傳上去的開發者都是某種程度的極客。同時還因為諸如安全方面的其他原因,Android Studio團隊決定把預設的倉庫替換成jcenter。正如你看到的,一旦使用最新版本的Android Studio建立一個項目,jcenter()自動被定義,而不是mavenCentral()。
有許多将Maven Central替換成jcenter的理由,下面是幾個主要的原因。
1. jcenter通過CDN發送library,開發者可以享受到更快的下載下傳體驗。
2. jcenter是全世界最大的Java倉庫,是以在Maven Central 上有的,在jcenter上也極有可能有。換句話說jcenter是Maven Central的超集。
3. 上傳library到倉庫很簡單,不需要像在 Maven Central上做很多複雜的事情
4. 友好的使用者界面
基于上面的原因以及我自己的經驗,可以說替換到jcenter是明智之舉。

如剛才那位開發者的提問一樣,既然他是想要com.squareup.okhttp:okhttp的最新版本,那麼我就去搜尋com.squareup.okhttp:okhttp。如下圖所示:
可以看到搜尋第一個排名就是com.squareup.okhttp:okhttp的maven的相關資訊,點選進入:
可以看到com.squareup.okhttp:okhttp的最新版本為2.7.5
點選 2.7.5 的連結,進入如下如所示的界面:
上面寫了com.squareup.okhttp:okhttp的gradle的相關配置資訊為:
maven的相關資訊為:
是以可以知道com.squareup.okhttp:okhttp的最新版本為2.7.5,如果我們要在項目中使用com.squareup.okhttp:okhttp的話,隻要在gradle檔案中配置如下的指令即可。
然後搜尋com.squareup.okhttp:okhttp,如下圖所示:
搜尋結果如下所示:
如圖所示,我們可以知道com.squareup.okhttp:okhttp的最新版本為2.7.5,點選連結com.squareup.okhttp進入如下界面:
如上圖所示,如果我們要在項目中使用com.squareup.okhttp:okhttp的話,隻要在gradle檔案中配置如下的指令即可。
直接去github上搜尋 okhttp
下面就有如何引入okhttp的方式,如下圖所示:
如上圖所示,表面okhttp最新版本是3.4.1,不過這是okhttp3.x版本的,之前那哥們要的是2.x版本
我們又進入maven網站去搜尋 com.squareup.okhttp3
搜 com.squareup.okhttp
作者:歐陽鵬 歡迎轉載,與人分享是進步的源泉!