我刚刚将我的 Android 应用更新为 buildToolsVersion “23.0.1”,并且还想更新 Casting to Chromecast 所需的库。
这些库是:
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'
}
在对版本进行了一段时间测试后(play-services-cast:8.1.0 引入了 ProGuard-problems),我意识到我也可以只使用这个依赖项:
dependencies {
compile 'com.google.android.gms:play-services-cast:7.8.0'
}
所以这意味着,appcompat 和 mediarouter 似乎是 play-services-cast 的临时依赖项。
谁能告诉我会发生什么以及推荐的方法是什么?
appcompat & mediarouter 如果我自己声明使用的是什么版本的?还是使用了多个版本?
最佳答案
首先,请将您的播放服务更新到 8.1.0;那已经出来了,并且有一些改进。现在回到你的主要问题。您可以通过运行 gradle dependencies
获得依赖关系树。 .假设我们有一个简单的项目,它依赖于 Actor 、媒体路由器和 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 版本的 Actor 播放服务,它正在抓取 v22.2.0 的支持库。由于这实际上在我的本地存储库中可用(作为我的 Android SDK 的一部分),它发现并且我可以在不添加显式 appcompat 和 mediarouter 依赖项的情况下编译我的项目。但是,如果我转到我的本地存储库(例如,在
<SDK_HOME>/extras/android/m2repository/com/android/support/mediarouter-v7
中并重命名保存媒体路由器 v22.2.0 的目录 22.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 (*)
这是个好消息;因此,要回答您的问题,请包括您的最新版本的依赖项,因为它们修复了旧错误并具有更新的功能。
关于android - Gradle 和 Google Cast 的 transient 依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33284641/