2015-10-22 4 views
0

Я только что обновил свое Android-приложение до buildToolsVersion «23.0.1» и хотел также обновить библиотеки, необходимые для Casting to Chromecast.Переходные зависимости с Gradle & Google Cast

Эти библиотеки:

dependencies { 
    compile 'com.android.support:appcompat-v7:23.1.0' 
    compile 'com.android.support:mediarouter-v7:23.1.0' 
    compile 'com.google.android.gms:play-services-cast:7.8.0' 
} 

После тестирования в то время как с версиями (стыковые услуги литья: 8.1.0 вводит Proguard-проблемы), я понял, что я могу также только это это зависимостями:

dependencies { 
    compile 'com.google.android.gms:play-services-cast:7.8.0' 
} 

Таким образом, это означает, что AppCompat & mediarouter кажется преходящими зависимости от плех-услуг литья.

Кто может сказать мне, что происходит и как это рекомендуется?

  1. объявить appcompat, mediarouter + play-services-cast как раньше, потому что временная зависимость опущена?
  2. просто использовать play-services-cast и использовать его переходные зависимости для appcompat & mediarouter?

Какая версия appcompat & mediarouter используется, если я объявляю их самостоятельно? Или используются несколько версий?

ответ

1

Во-первых, пожалуйста, обновите свои игровые сервисы до 8.1.0; который уже вышел и имеет ряд улучшений. Вернемся к вашему основному вопросу. Вы можете получить дерево зависимостей, запустив gradle dependencies. Предположим, у нас есть простой проект, который зависит от роли, медиа-маршрутизатора и appcompat. Если я не добавить два последние, как зависимости, вот то, что Gradle отчеты для моего дерева зависимостей:

_debugCompile - ## Internal use, do not manually configure ## 
\--- com.google.android.gms:play-services-cast:8.1.+ -> 8.1.0 
    +--- com.google.android.gms:play-services-base:8.1.0 
    | \--- com.google.android.gms:play-services-basement:8.1.0 
    |   \--- com.android.support:support-v4:22.2.0 
    |    \--- com.android.support:support-annotations:22.2.0 
    \--- com.android.support:mediarouter-v7:22.2.0 
      \--- com.android.support:appcompat-v7:22.2.0 
       \--- com.android.support:support-v4:22.2.0 (*) 

Так как вы можете видеть, для моей версии 8.1.0 литых игровых услуг, то захватывая V22 .2.0 поддержки libs. Поскольку это действительно доступно в моем локальном репозитории (как часть моего Android SDK), он находит это, и я могу скомпилировать свой проект без добавления явных зависимостей appcompat и mediarouter. Однако, если я перейду в мой локальный репозиторий (например, в <SDK_HOME>/extras/android/m2repository/com/android/support/mediarouter-v7 и переименуйте каталог 22.2.0 там, где находится медиа-маршрутизатор v22.2.0, и попробуйте снова скомпилировать мой проект. Теперь, если я добавлю зависимости на appcompat и mediarouter (v23.1) обратно в сборках Gradle, он находит эти новые библиотеки и использует те, вот gradle dependencies дерева:

_debugCompile - ## Internal use, do not manually configure ## 
+--- com.android.support:appcompat-v7:23.1.+ -> 23.1.0 
| \--- com.android.support:support-v4:23.1.0 
|   \--- com.android.support:support-annotations:23.1.0 
+--- com.android.support:mediarouter-v7:23.1.+ -> 23.1.0 
| +--- com.android.support:appcompat-v7:23.1.0 (*) 
| \--- com.android.support:palette-v7:23.1.0 
|   \--- com.android.support:support-v4:23.1.0 (*) 
\--- com.google.android.gms:play-services-cast:8.1.+ -> 8.1.0 
    +--- com.google.android.gms:play-services-base:8.1.0 
    | \--- com.google.android.gms:play-services-basement:8.1.0 
    |   \--- com.android.support:support-v4:22.2.0 -> 23.1.0 (*) 
    \--- com.android.support:mediarouter-v7:22.2.0 -> 23.1.0 (*) 

, который является хорошей новостью, так, чтобы ответить на ваш вопрос, включать ваш актуальный -date зависимости, поскольку они исправляют старые ошибки и имеют в них более новые функции.

+0

Отличный ответ, большое спасибо Али за подробную обратную связь! –

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