2015-06-26 102 views
0

我的問題是一個簡單的問題,我不知道如何解決。Android編譯依賴項 - Gradle Build

當編譯gradle這個圖書館,我使用的代碼如下所示:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:cardview-v7:21.0.+' 
    compile 'com.android.support:recyclerview-v7:21.0.+' 
    compile 'com.android.support:design:22.2.+' 
    compile 'com.android.support:appcompat-v7:22.2.+' 
} 

這給了我什麼,我想,我沒有任何問題。我猜測上面的代碼確保每個依賴項的最新版本在應用程序構建時編譯(因此每個語句結尾處的「+」號)。然而,我在很多地方已經看到了網上,其中相同的代碼行如下所示不帶「+」號:

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:cardview-v7:21.0.0' 
    compile 'com.android.support:recyclerview-v7:21.0.0' 
    compile 'com.android.support:design:22.2.0' 
    compile 'com.android.support:appcompat-v7:22.2.0' 
} 

沒有明顯的區別的,都很好地工作一樣。但作爲一個開發人員,我打算長期支持應用程序,應該使用哪種應用程序?帶或不帶附加的「+」號。 使用某種產品可能帶來哪些好處或問題?任何反饋將不勝感激。如果你使用+所以它檢查是否有更新的每一次,它會被打破構建 當靜態它特定版本提供扶養

+0

你應該使用「+」。您不必擔心更新。如果庫的更新版本可用,Android Studio將自動編譯更新的庫。但是,如果更新的庫包含錯誤,則可能需要更改舊版本號。 – myatmins

+0

如果你打開lint它說'避免在版本號中使用+,可能會導致不可預測的和不可重複的版本.' – Onheiron

回答

4

使用+,Android Studio可以更新您在項目中使用的依賴關係。

這可能是一個問題,因爲您無法知道哪個版本包含在應用程序的某個特定版本中。

具有可重現的構建結果是非常重要的。

還有一些使用一些不同之處:

compile 'com.android.support:appcompat-v7:22.2.+' 
compile 'com.android.support:appcompat-v7:22.+' 
compile 'com.android.support:appcompat-v7:+' 

在第一種情況下,你將只更新(在大多數情況下,錯誤修正)的微小變化。在第二種情況下,您將更新主要新聞。例如,22.0.0和22.2.0有很多變化。 最後一種情況是最危險的。不要在任何情況下使用它。

+1

嗨Grabriele,謝謝你的迴應。你的解釋非常清楚。在我最終確定這個問題之前,您是否知道開發人員是否有辦法與Google進行確認,哪一個是該特定依賴關係的最新版本?某處是否有Google網址(存儲庫?)。在哪裏我可以檢查哪個是appcompat依賴關係的最新版本?以防萬一我決定使用靜態,並想知道是否有針對該特定依賴項的新版本。 – CBA110

+0

關於支持庫,當您使用舊的依賴關係時,Android Studio應該建議您。在任何情況下,你可以在這裏檢查: http://developer.android.com/tools/support-library/index.html 對於所有其他庫,你可以在這裏檢查: http://search.maven.org / –

0

更新後的圖書館。與此相反,不添加+意味着它將僅使用所提及的特定版本。 根據不同情況使用這些+。像appcompat這樣的東西相當穩定,所以你可能不想添加+的。 像新近發佈的android設計庫的東西很好,新的,不穩定的和越野車,你會想要接收錯誤修正和更新。在這種情況下添加+。

0

其實,+的意思是,你讓Android Studio中使用未來版本

相關問題