添加Google商家信息库以及多语言支持时的TransformException

时间:2016-08-03 13:29:42

标签: android google-play-services google-places-api

我正在尝试将Google Placed库集成到我的应用中。 添加播放服务依赖项之后,我得到错误,说我需要使用multi dex,因为方法引用的数量超过65536.

然后我按照指南here添加了多dex支持,然后我开始收到此错误(transformexception)。

据我所知,这是因为多个依赖项有一些共同的类,需要将它们排除在外。

我做了一些关于SO的研究并且已经排除了一些。但是,我仍然得到同样的错误,但这次只是为了一个新的类名。

错误说:

  

错误:任务执行失败   ':应用程序:transformClassesWithJarMergingForDebug'

     
    

com.android.build.api.transform.TransformException:java.util.zip.ZipException:重复条目:     组织/ xmlpull / V1 / XmlPullParser.class

  

这是我的模块级gradle脚本:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "xx.exampleapp.app"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"

        // Enabling multidex support.
        multiDexEnabled true

    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:3.8.1'
    compile ('com.android.support:appcompat-v7:24.0.0'){
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
        exclude group: 'com.android.support'
    }
    compile 'com.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile ('com.android.support:design:24.0.0'){
        exclude group: 'com.android.support'
    }
    compile ('com.google.android.gms:play-services:9.0.2'){
        exclude group: 'com.google.guava'
    }
    compile 'org.robolectric:shadows-multidex:3.1.2'
}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

根据此thread,您可以通过下载最新版本的API来消除错误:任务执行失败':app:transformClassesWithJarMergingForDebug'

您也可以尝试启用multidex并使用此related issue中列出的打包选项。

packagingOptions {
exclude 'META-INF/maven/com.squareup.moshi/moshi/pom.properties'
exclude 'META-INF/maven/com.squareup.moshi/moshi/pom.xml'

    exclude 'META-INF/maven/com.google.protobuf/protobuf-java/pom.xml'
    exclude 'META-INF/maven/com.google.protobuf/protobuf-java/pom.properties'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
    exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'

    exclude 'META-INF/maven/com.squareup.okhttp3/okhttp/pom.properties'
    exclude 'META-INF/maven/com.squareup.okhttp3/okhttp/pom.xml'

    exclude 'META-INF/maven/com.annimon/stream/pom.properties'
    exclude 'META-INF/maven/com.annimon/stream/pom.xml'

    exclude 'META-INF/maven/net.iharder/base64/pom.xml'
    exclude 'META-INF/maven/net.iharder/base64/pom.properties'

    pickFirst 'gpsoauth.properties'
    pickFirst 'google/protobuf/any.proto'
    pickFirst 'google/protobuf/field_mask.proto'
    pickFirst 'google/protobuf/plugin.proto'
    pickFirst 'google/protobuf/compiler/plugin.proto'
    pickFirst 'google/protobuf/api.proto'
    pickFirst 'google/protobuf/descriptor.proto'
    pickFirst 'google/protobuf/wrappers.proto'
    pickFirst 'google/protobuf/type.proto'
    pickFirst 'google/protobuf/struct.proto'
    pickFirst 'google/protobuf/timestamp.proto'
    pickFirst 'google/protobuf/source_context.proto'
    pickFirst 'google/protobuf/duration.proto'
    pickFirst 'google/protobuf/empty.proto'

}

希望这有帮助!