当我在我的Android项目中添加Google翻译客户端库时,为什么会出现这个错误?

8
我正在尝试根据这些说明将Google Translate客户端库添加到我的Android项目中。说明告诉我要在我的库项目(它是我的应用程序项目的依赖项)的build.gradle文件中添加此行代码到我的依赖项中:
compile group: 'com.google.cloud', name: 'google-cloud-translate', version: '0.4.0'

但是当我这样做时,我会收到以下错误信息:
Error:Execution failed for task ':typeSmart:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/LICENSE
    File1: C:\Users\Barry\.gradle\caches\modules-2\files-2.1\com.google.auto.value\auto-value\1.1\f6951c141ea3e89c0f8b01da16834880a1ebf162\auto-value-1.1.jar
    File2: C:\Users\Barry\.gradle\caches\modules-2\files-2.1\org.codehaus.jackson\jackson-core-asl\1.9.11\e32303ef8bd18a5c9272780d49b81c95e05ddf43\jackson-core-asl-1.9.11.jar
    File3: C:\Users\Barry\.gradle\caches\modules-2\files-2.1\com.google.inject\guice\4.0\f990a43d3725781b6db7cd0acf0a8b62dfd1649\guice-4.0.jar

我在技术上理解这个错误的含义,但不知道为什么会在这种情况下出现。我尝试通过在我的build.gradle文件中添加packagingOptions块来抑制它,根据这个答案(和其他答案),但没有帮助(而且是非法的)。

Google不太可能发布一个存在内部矛盾的API。问题可能是特定于我的环境。我的应用程序由包含大多数代码的库模块组成。这是app模块的一个依赖项。我怀疑这与此有关。

我正在使用:Gradle 2.14.1;Android Studio 2.2.2;Build tools 25.0.0。

您是否成功地将Google翻译客户端库添加到Android项目中?如果是,如何做到的?

提前感谢...


你尝试过清理项目、清除缓存并重新构建吗? - Yazan
我从AS进行了一次干净的构建,并运行了gradlew clean。我还清除了~/.gradle。 - Barry Fruitman
首先,我认为问题是由于两个库都是谷歌的,因此许可证存在重复问题。其次,在这个答案中https://dev59.com/UGEi5IYBdhLWcg3w6f6e中,它谈到了“将依赖项放在顶部和packageOptions放在末尾”,不确定是否值得一试? - Yazan
可能是Android Studio或Gradle中的一个错误:https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1319 - Barry Fruitman
是的,这是一个错误:https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1361 - Barry Fruitman
3个回答

3

3

将以下内容添加到您的pom.xml文件中:

<project>
  <dependencies>
    <dependency>
      <groupId>com.google.apis</groupId>
      <artifactId>google-api-services-translate</artifactId>
      <version>v2-rev47-1.22.0</version>
    </dependency>
  </dependencies>
</project>

将以下内容添加到您的 build.gradle 文件中:

repositories {

    mavenCentral()

}

dependencies {

    compile 'com.google.apis:google-api-services-translate:v2-rev47-1.22.0'

}

请查看以下文档:https://cloud.google.com/translate/v2/translating-text-with-rest,以及在 GitHub 上的https://github.com/google/google-api-java-client。希望这些内容对您有所帮助,如果您需要更多帮助,请联系我。

我没有pom.xml文件。 - Barry Fruitman
请检查此链接:https://github.com/google/google-api-java-client - Jamil Hasnine Tamim
@BarryFruitman,你使用这个解决方案构建时是否收到警告/错误信息?我得到了“BULD SUCCESSFUL:”,但是有8个警告/336个错误。Google干得好! - grantespo

1

你能试一下以下内容,将其插入到你的Android块中吗:

packagingOptions {
    exclude 'LICENSE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/DEPENDENCIES.txt'

    // `return void` removes the lint error: `Not all execution paths return a value`.
    return void
}

添加任何在库项目和您自己之间重复的其他文件。 到了归功于的时候,将上述所有内容合并为自己的html页面(或文本文件)以供展示。


我在原始帖子中已经描述了这个解决方案。当时它也没有起作用。 - Barry Fruitman

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