在Maven项目中添加Chromecast

3

过去几天,我一直在尝试将Chromecast添加到我的使用Maven构建的Android项目中,但一直没有成功。

与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 http://www.gradle.org/,您可能希望查看一下。所有的AppCompat库都可以与其配合使用。 - Les Vogel - Google DevRel
我有完全相同的问题。你解决了吗?如果已经解决,请将其作为答案写下来,我会给你一个点赞。此外,你可以将其选为正确答案。 - javabeangrinder
嘿,@javabeangrinder,我刚刚发布了我的解决方案。请查看下面的答案,如果您有任何进一步的问题,请大声喊出来。干杯! - Giorgos
2个回答

1

这是我的解决方案:

首先,我为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,在其中声明了它的两个依赖项(apklib和jar文件都包括在内)。

最后,在我的项目的POM中,我将CastCompanionLibrary添加为依赖项(只是apklib)... voila!如果您选择不使用CastCompanionLibrary,则可以将android-support-v7-mediaroutergoogle-play-services添加为项目POM的依赖项。

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

希望这能帮到你!


做得好,Giorgos!感谢您的帖子。 您是否成功地在任何项目中仅使用mediarouter+appcompat? - javabeangrinder
你也转换成Gradle了吗?因为CastCompanionLibrary是针对此工具的。 - javabeangrinder
不,我还没有将它转换为Gradle。CastCompanionLibrary对于Maven也可以正常工作,只需添加适当的POM文件即可。关于您的第一个问题,除了上述项目外,我没有在任何其他项目中使用mediarouter。但是,您应该采取的方式类似于我在CastCompanionLibrary中使用的方式。这将把appcompat作为依赖项添加到mediarouter库中,然后将mediarouter作为依赖项添加到您的项目中。 - Giorgos
你是如何明确地设置它这样做的? - javabeangrinder
抱歉回复晚了。如果我没记错的话,问题是部署程序没有自动包含POM文件在创建的apklib中。为了解决这个问题,在每个我想要使用部署程序转换为apklib的库中,我都需要在该库的POM文件中,在<configuration>标签下添加<pomFile>pom.xml</pomFile>。这样,POM就会被添加到apklib中,并且该库的所有依赖项也会被包含进去。 - Giorgos
显示剩余3条评论

1
我不知道如何在Maven中设置东西,但需要记住的一件事是android-support-v7-mediarouter库依赖于appcompat支持库,如果要在自己的项目中使用它们,两者都应该设置为库项目(即不能只将这些库的jar文件添加到自己的项目中)。我不确定这个信息对你的Maven设置是否有用,但只是想提一下以防万一。

1
谢谢您的评论,但同时添加这两个库的jar和apklib并不能解决上述问题。就我所知,这似乎是编译时出现的问题,当编译mediarouter时,它无法从appcompat库中找到资源。您有其他建议吗? - javabeangrinder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接