【问题标题】:Add Chromecast in a Maven project在 Maven 项目中添加 Chromecast
【发布时间】:2013-11-04 07:05:03
【问题描述】:

在过去的几天里,我一直在努力将 Chromecast 添加到我的 Android 项目中,该项目是使用 Maven 构建的。

就像它是一个 ANT 项目一样,我将 android-support-v7-mediarouter 添加为一个库。我通过在我的 pom.xml 文件中添加以下依赖项来做到这一点:

<dependency>
    <groupId>android.support</groupId>
    <artifactId>compatibility-v7-mediarouter</artifactId>
    <version>18</version>
    <type>apklib</type>
</dependency>

我尝试构建项目时遇到的错误是:

No resource found that matches the given name 'Widget.AppCompat.ActionButton'

我认为这很明显,因为 android-support-v7-mediarouter 库没有对 android-support-v7-appcompat 的引用。

所以,我的问题是;我该如何解决?任何帮助将不胜感激!

【问题讨论】:

  • Android,Android Studio 正在迁移到 Gradle gradle.org,您可能希望查看一下。所有的 AppCompat 库都可以使用它。
  • 我也有同样的问题。这是否已为您解决以及如何解决。如果解决了,请写下答案,我会给你一个点。此外,您可以将其作为正确答案进行检查。
  • 嘿@javabeangrinder,我刚刚发布了我的解决方案。查看下面的答案,如果您有任何其他问题,请喊他们。干杯!

标签: android maven chromecast


【解决方案1】:

我不知道如何在 maven 中进行设置,但要记住的一件事是 android-support-v7-mediarouter 库依赖于 appcompat 支持库并在您自己的项目中使用它们,两者其中应该设置为库项目(即,您不能只将这些库的 jar 添加到您自己的项目中)。我不确定这些信息是否对您有关您的 Maven 设置有用,但只是想我会提到以防万一。

【讨论】:

  • 感谢您的评论,但是为这两个库添加 jar 和 apklib 并不能解决上述问题。据我所知,在编译 mediarouter 时似乎是一个编译时间问题,在该状态下无法从 appcompat 库中找到资源。您还有其他建议吗?
【解决方案2】:

所以我就是这样解决的:

首先,我为 android-support-v7-appcompat 库创建了一个 POM 文件(没有任何依赖项)并将该库上传到我的存储库。

然后,我为 android-support-v7-mediarouter 库创建了一个 POM 文件,添加了 android-support-v7-appcompat 作为依赖项(两个 apklib和 jar)并将这个库也上传到我的存储库。

就我而言,我选择使用CastCompanionLibrary。这个库有两个依赖项; android-support-v7-mediaroutergoogle-play-services。因此,下一步是为 google-play-services 创建一个 POM,并将库也上传到我的存储库。然后,我向 CastCompanionLibrary 添加了一个 POM,我在其中声明了它的两个依赖项(apklibs 和 jar 文件)。

最后,在我项目的 POM 中,我添加了 CastCompanionLibrary 作为依赖项(只是 apklib),然后……瞧!如果您选择不使用 CastCompanionLibrary,则只需将 android-support-v7-mediaroutergoogle-play-services 作为依赖项添加到项目的 POM。

此外,请确保在添加依赖项时排除任何现有的重复项。例如,我的项目中声明的其余一些依赖项依赖于旧版本的 android-support-v7-appcompat,我必须从所有这些依赖项中排除。

我希望这会有所帮助!

【讨论】:

  • 伟大的工作乔治!谢谢你的帖子。你有没有在任何项目中只使用 mediarouter+appcompat 成功?
  • 由于 CastCompanionLibrary 就是为此而设计的,您是否也转换为 Gradle?
  • 不,我还没有将它转换为 Gradle。 CastCompanionLibrary 也适用于 Maven,只需添加适当的 POM 文件即可。关于你的第一个问题,除了我上面描述的那个之外,我没有在任何其他项目中使用过 mediarouter。但是您应该采用的方式类似于我将它用于 CastCompanionLibrary 的方式。那就是将 appcompat 作为依赖项添加到 mediarouter 库,然后将 mediarouter 作为依赖项添加到您的项目中。
  • 由于 mediarouter 已经依赖于 appcompat,如果你将 then 都作为依赖项添加到你的项目中,你最终会得到一个 appcompat 的副本。
  • 这对我来说听起来有点奇怪,但我还是尝试了,但无济于事。我的项目依赖于 appcompat 和 mediarouter,现在它缺少资源。我使用 maven-android-sdk-deployer 构建了 mediarouter apklib 和 jar,并且那里的 pom 显然依赖于 appcompat。请多提建议。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-14
  • 2014-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多