Barry Fruitman
Barry Fruitman

Reputation: 12666

Why do I get this error when I add the Google Translate client library to my Android project?

I'm trying to add the Google Translate client library to my Android project per these instructions, which tells me to add this line to my dependencies in build.gradle of my library project (which is a dependency of my app project):

compile group: 'com.google.cloud', name: 'google-cloud-translate', version: '0.4.0'

But when I do, I get this error:

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

I understand what the error means technically but not why it appears in this case. I tried to suppress it by adding a packagingOptions block to my build.gradle per this answer (and others), but it didn't help (plus it's illegal).

It seems unlikely that Google would publish an API with internal inconsistencies. The problem may be specific to my environment. My app consists of a library module that contains most of my code. It's a dependency of the app module. I suspect that has something to do with it.

I'm using: Gradle 2.14.1; Android Studio 2.2.2; Build tools 25.0.0.

Have you successfully added the Google Translate client library to your Android project? If so, how?

Thanks in advance...

Upvotes: 8

Views: 2278

Answers (3)

Jamil Hasnine Tamim
Jamil Hasnine Tamim

Reputation: 4448

Add the following to your pom.xml file:

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

Add the following to your build.gradle file:

repositories {

    mavenCentral()

}

dependencies {

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

}

And checkout this documentation : https://cloud.google.com/translate/v2/translating-text-with-rest

and in github: https://github.com/google/google-api-java-client

Hope it will be help you otherwise you can knock me for furthe help.

Upvotes: 3

avluis
avluis

Reputation: 327

Can you give the following a try, insert in your android block:

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
}

Add any additional files that are duplicated across library projects and your own. When it comes time to give credit, merge all of the above into their own html page (or a text file) for presentation.

Upvotes: 1

Barry Fruitman
Barry Fruitman

Reputation: 12666

This appears to be a bug on Google's end: https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1361

I'll leave the bounty open in case someone wants to offer a workaround.

Upvotes: 3

Related Questions