2

我有一个使用 Google Calendar v3 API 的 Android 项目。

我正在使用Google API 客户端日历 API Java库在 Google 日历上执行查询。

我在设置 Maven 依赖项时遇到问题。我已经使用文档中的 id 将这些库添加到我的 pom.xml 中,但其中一些已经过时,所以我最终得到了这个pom.xml

我不得不放入<scope>provided</scope>google-api-client、google-http-client-jackson 和 google-http-client-android 库,因为 maven 在尝试 dex 这些库时失败了。

Failed to execute goal com.jayway.maven.plugins.android.generation2:android-maven-plugin:3.4.1:dex (default-dex)

现在这个 pom.xml 成功创建了 .apk 并将其安装在设备上。但是当我尝试使用提供的库对日历 API 进行查询时,应用程序失败,说它找不到某些类。

12-19 17:32:17.247: E/dalvikvm(15119): Could not find class 'com.google.api.services.calendar.model.TimePeriod', referenced from method 

当我从 Eclipse 构建应用程序时(所有 .jar 文件都在 /libs 文件夹中),一切正常。

所以我想知道是否有一种正确的方法可以将这些依赖项添加到 Maven 脚本中。谷歌有很多过时的文档,其中包含无效的链接或示例。否则,我将不得不摆脱 Google 库并自己编写日历 API 查询。

任何帮助将不胜感激。

回答:

xpp3.jar 引起了这个问题,因为它有来自 javax 包的类。我不得不手动将它从所有 Google 库中排除:

            <exclusion>
                  <artifactId>xpp3</artifactId>
                  <groupId>xpp3</groupId>
            </exclusion>
4

2 回答 2

1

您不能使用提供的范围,因为这些库不是 Android 堆栈的一部分,因此需要包含在您的 apk 中。将它们包含在默认范围内时,您会遇到什么失败?

更新:

怀疑您正在尝试包含一个 javax 命名空间项目。尝试找出导致它的依赖项

mvn dependency:tree

然后可能排除它(假设同一个类已经在 android 中)或将其隐藏到不同的命名空间(并更新库以使用它)或找到更适合的库..

于 2012-12-19T18:36:09.490 回答
1

阿尔乔姆,

我看到下一个错误并建议如何修复它:

[INFO] trouble processing "javax/xml/namespace/QName.class":
[INFO]
[INFO] Ill-advised or mistaken usage of a core class (java.* or javax.*)
[INFO] when not building a core library.

这是Java核心文件。尝试找出与 ( mvn dependency:tree) 一起使用它的依赖项。

于 2012-12-19T20:47:59.487 回答