8

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...

Community
  • 1
  • 1
Barry Fruitman
  • 12,316
  • 13
  • 72
  • 135
  • have you tried to clean project, clear cache, and rebuild ? – Yazan Oct 30 '16 at 08:37
  • I did a clean build from AS and I ran gradlew clean. I also blew away ~/.gradle. – Barry Fruitman Nov 01 '16 at 08:23
  • 2 points, first i think the isue is because 2 lib are by google, and thus license is duplicate issue somehow? 2nd in this answer http://stackoverflow.com/questions/20827885/android-studio-0-4-duplicate-files-copied-in-apk-meta-inf-license-txt it talks about `Putting the dependecies at the top and the packageOptions at the end`, not sure though, it worth a try? – Yazan Nov 01 '16 at 10:19
  • It may be a bug in Android Studio or Gradle: https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1319 – Barry Fruitman Nov 01 '16 at 19:29
  • Yep it's a bug: https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1361 – Barry Fruitman Nov 01 '16 at 21:44

3 Answers3

3

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.

Barry Fruitman
  • 12,316
  • 13
  • 72
  • 135
3

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.

Jamil Hasnine Tamim
  • 4,389
  • 27
  • 43
1

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.

avluis
  • 317
  • 5
  • 18