Intereting Posts
Версия Android Min SDK и Max SDK Version Android рисовать собственный указатель большого пальца в XML Сглаживание вида преобразуется Файлы классов приложения, не упакованные в APK Нарисуйте перекрывающиеся области по одному пути Получить контекст в службе Студия Android не признает библиотеку Facebook Android Edittext вопрос, заменить клавиатуру введите с сделано Android: ошибка в launchMode = "singleTask"? -> стек активности не сохранен Вложенные if / else, переключатели или что-то более эффективное для RPG-боя? Android Studio показывает ошибку при попытке использовать Embedded JDK вместо пользовательской установки Ошибки, выполняемые builder 'Android Package Builder' в проекте HelloAndroid. вс / безопасность / x509 / X500Name Ошибка IAB У вас уже есть этот элемент Невозможно увидеть значение параметра в Android Studio, когда точка останова находится в первой строке метода Cardview не учитывает индекс z в относительной компоновке

Почему я должен включать зависимость градиента как `@ aar`

Почему (или shouldnt) я должен включать зависимость @aar как @aar ,

Каковы преимущества / недостатки, если таковые имеются?

Как вы можете видеть, я добавил @aar в библиотеки ниже, которые его поддерживали. Но все, казалось, работало, прежде чем это делать …

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.1.1' compile 'com.google.android.gms:play-services-maps:7.3.+' compile 'com.google.guava:guava:18.0' compile 'com.octo.android.robospice:robospice-spring-android:1.4.14' compile 'org.codehaus.jackson:jackson-mapper-asl:1.9.13' compile 'com.mcxiaoke.volley:library-aar:1.0.0@aar' compile 'de.psdev.licensesdialog:licensesdialog:1.7.0@aar' } 

Библиотеки могут быть загружены в нескольких форматах, большую часть времени вы будете использовать .jar или .aar .

Если вы не укажете суффикс @ , вы будете загружать библиотеку в ее формат по умолчанию (определенный его автором, если не тогда .jar ) вместе со всеми его зависимостями.

 compile 'com.android.support:appcompat-v7:22.1.1' 

Когда вы указываете суффикс @ вы принудительно загружаете библиотеку в указанном вами формате (который может или не может существовать). Это полезно, например, когда автор забыл указать, что библиотека является .aar и maven (или gradle, not sure) рассматривает его как .jar по умолчанию. Когда указан суффикс @ зависимости от этой библиотеки больше не загружаются, поэтому вы должны убедиться в этом вручную.

 compile 'com.android.support:appcompat-v7:22.1.1@aar' compile 'com.android.support:support-v4:22.1.1@jar' 

Чтобы гарантировать, что полное дерево зависимостей библиотеки загружается, а суффикс @ указан, вы должны записать его следующим образом:

 compile ('com.android.support:appcompat-v7:22.1.1@aar') { transitive = true } 

TL; DR: Игнорируйте суффикс @ и вы будете очень хороши большую часть времени, если не все время.

С этим в качестве пролога, вот мое понимание того, что происходит …

Синтаксис @ указывает, что вы хотите артефакт этого типа, для случаев, когда может быть несколько артефактов для идентификатора группы ID / артефакта, который будет иметь отношение к ситуации.

Например, проект библиотеки Android, естественно, сводится к AAR, и поэтому это будет типичный артефакт, который будет распространяться. Однако, если проект библиотеки фактически не использует ресурсы, его также можно скомпилировать до JAR и, следовательно, можно использовать в случаях, когда AAR не будет. Автор библиотеки мог бы распространять как AAR, так и JAR как отдельные типы артефактов для одного идентификатора группы ID / артефакта, поэтому инструменты могут захватывать то, что подходит. Инструменты, в которых вы не @ суффикс @ , выберете один, но если вы предоставите суффикс, инструмент должен соблюдать ваш запрос.

В случае Android Studio я понимаю, что сначала будет искать артефакт AAR, а затем JAR, если вы не укажете иначе. Я понимаю, что Maven для Android сделает обратное, сначала ищет JAR, затем AAR.

Итак, если есть библиотека, где разрешение артефакта по умолчанию вам не по душе, вы можете добавить суффикс @ и заставить разрешение к тому, что вы хотите. Но, как правило, инструмент будет делать то же самое, даже без него.

Если проблема с суффиксом @ будет проблемой, если вы просите что-то, что не существует. Например, compile 'com.android.support:appcompat-v7:22.1.1@jar' не будет работать, поскольку этот артефакт доступен только как AAR – это должно потерпеть неудачу, когда он пытается загрузить зависимость.