在 Android 应用中使用 gcloud-java-datastore

Using gcloud-java-datastore in Android app

我正在尝试在 Android 应用项目中使用 gcloud-java-datastore 库。但是,我在尝试构建时一直 运行 进入以下错误:

Execution failed for task ':app:transformClassesWithJarMergingForDebug'. com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: ... [one of several different classes]

我尝试从 build.gradle 中的 gcloud-java-datastore (v0.2.8) 中排除各种依赖项(例如 com.google.guava)以使其编译。如果我排除 com.google.api.grpccom.google.guavacom.google.api-clientdatastore-v1-protosprotobuf-java 之一,我可以让它编译成功。但是,排除最后两个依赖项中的任何一个都会破坏库的核心功能。

甚至可以在 Android 中使用这个库吗?如果是这样,我做错了什么?

好的,明白了。我下载并提取了 datastore-v1-protos-1.0.1.jar,删除了 com/google/datastore 文件夹以外的所有内容,制作了一个新的 jar,并将其作为库包含在我的 Android Studio 项目中。然后我将 gcloud-java-datastore 库添加到 build.gradle,但排除了以下内容:

compile('com.google.cloud:gcloud-java-datastore:0.2.8') {
    exclude group: 'com.google.api-client', module: 'google-api-client-appengine'
    exclude group: 'com.google.guava', module: 'guava-jdk5'
    exclude group: 'com.google.cloud.datastore', module: 'datastore-v1-protos'
}

和以下包装选项:

packagingOptions {
    pickFirst 'META-INF/INDEX.LIST'
    pickFirst 'META-INF/services/io.grpc.ManagedChannelProvider'
    pickFirst 'META-INF/io.netty.versions.properties'
    pickFirst 'META-INF/maven/com.google.guava/guava/pom.xml'
    pickFirst 'META-INF/maven/com.google.guava/guava/pom.properties'
}