2015-06-26 3 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

, если вы включите lints, он говорит: «Избегайте использования + в номерах версий, может привести к непредсказуемым и неповторимым сборкам». – 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

если вы используете +, так что проверить каждый раз для обновления и она будет сломана строить когда на статике он обеспечивает Зависимость от для конкретной версии

0

На самом деле, + "S означает, что вы позволяете Android-студия использовать в будущих версиях библиотеки, поскольку они обновляются. В отличие от этого, не добавляя +, означает, что он будет использовать только указанную конкретную версию. Используйте эти + на основе различных ситуаций. Такие вещи, как appcompat, довольно стабильны, поэтому вы можете не захотеть добавить +. Такие вещи, как недавно выпущенная библиотека дизайна Android, хорошо, новые, нестабильные и багги, и вы хотели бы получать исправления и обновления. Добавьте + в этом случае.

Смежные вопросы