当前位置: 首页 > 知识库问答 >
问题:

Android Studio更新至1.0会破坏MultiDex

张献
2023-03-14

Hi有类似的错误,如重复条目。

失败:构建失败,但有一个异常。

>

Java语言util。拉链ZipException:重复条目:android/support/annotation/AttrRes。班

尝试:使用--stacktrac选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。

生成失败

总时间:1分钟46.13秒

apply plugin: 'com.android.application'

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile project(':ui-reader')

    compile "com.android.support:support-v4:23.1.1"
    compile "com.android.support:support-v13:20.0.0"
    compile files('libs/Flurry_3.2.1.jar')
}

android {
    compileSdkVersion 21
    buildToolsVersion "20.0.0"

    configurations {
        all*.exclude group: 'com.android.support', module: 'support-v4'
    }

    defaultConfig {
        // Enabling multidex support.
        multiDexEnabled true
    }

    lintOptions {
        abortOnError false
    }

    sourceSets {

        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}

有人能告诉我如何在jar文件中找到重复的类文件,以及如何获得如下输出吗

通用域名格式。整理一下。okhttp:okhttp:1.6.0 | | |---com。intellij:注释:-

共有1个答案

长孙鸿波
2023-03-14

我能够在一个测试项目中重现这一点,只需包含aviary sdk库。我不需要多索引,也没有研究不同的SDK版本,这对我来说似乎有点神秘。

如果您没有multi-dex,您会得到经典的“多个dex文件定义......”错误,这意味着您在构建中多次包含相同的符号,这是不允许的。

这些问题需要一点侦查;这就是gradle dependencies任务非常方便的地方。如果进入模块的目录(不是顶层目录)并运行此任务:

../gradlew dependencies

您可以获得:

compile - Classpath for compiling the main sources.
+--- com.aviary.android.feather.sdk:aviary-sdk:3.4.3.351
|    \--- com.aviary.android.feather.sdk:sdk-library:3.5.1
|         +--- it.sephiroth.android.library.hlistviewanimations:hlistviewanimations-library:1.0.1
|         |    +--- it.sephiroth.android.library.horizontallistview:hlistview:1.2.2
|         |    |    \--- com.android.support:support-v4:19.1.+ -> 21.0.3
|         |    |         \--- com.android.support:support-annotations:21.0.3
|         |    \--- com.nineoldandroids:library:2.4.0
|         +--- com.nineoldandroids:library:2.4.0
|         +--- it.sephiroth.android.library.disklruimagecache:DiskLruImageCache:1.0.2
|         |    +--- org.apache.commons:commons-io:1.3.2
|         |    \--- com.jakewharton:disklrucache:2.0.2
|         +--- com.aviary.android.feather.sdk:cds-library:3.2.4
|         |    +--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1
|         |    |    +--- org.apache.commons:commons-lang3:3.3.2
|         |    |    +--- com.squareup.okhttp:okhttp-urlconnection:1.6.0
|         |    |    |    \--- com.squareup.okhttp:okhttp:1.6.0
|         |    |    +--- com.squareup.okhttp:okhttp:1.6.0
|         |    |    +--- com.intellij:annotations:+ -> 12.0
|         |    |    \--- commons-io:commons-io:2.4
|         |    \--- com.android.support:support-v4:19.+ -> 21.0.3 (*)
|         +--- it.sephiroth.android.library.disklrumulticache:disklrumulticache:1.0.2
|         |    +--- org.apache.commons:commons-io:1.3.2
|         |    \--- com.jakewharton:disklrucache:2.0.2
|         +--- it.sephiroth.android.library.picasso:picasso:2.3.3.2
|         |    +--- com.squareup.okhttp:okhttp-urlconnection:1.6.0 (*)
|         |    +--- com.squareup.okhttp:okhttp:1.6.0
|         |    \--- com.intellij:annotations:12.0
|         +--- com.android.support:support-v4:19.+ -> 21.0.3 (*)
|         +--- it.sephiroth.android.exif:android-exif-extended:1.0.2
|         |    +--- org.apache.commons:commons-lang3:3.3.2
|         |    \--- org.apache.commons:commons-io:1.3.2
|         +--- it.sephiroth.android.library.imagezoom:imagezoom:1.0.5
|         |    \--- it.sephiroth.android.library.easing:android-easing:1.0.3
|         +--- com.aviary.android.feather.sdk:receipt-library:2.0.2
|         |    +--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1 (*)
|         |    +--- it.sephiroth.android.library.ab:ab-test:2.0.3
|         |    \--- com.android.support:support-v4:19.+ -> 21.0.3 (*)
|         +--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1 (*)
|         +--- it.sephiroth.android.library.horizontallistview:hlistview:1.2.2 (*)
|         +--- it.sephiroth.android.library.fork.listviewanimations:listviewanimations-library-core:2.6.1
|         |    \--- com.nineoldandroids:library:2.4.0
|         +--- com.aviary.android.feather.sdk:tracking-library:3.0.1
|         |    \--- com.aviary.android.feather.sdk:common-library:3.1.8.1 (*)
|         \--- com.aviary.android.feather.sdk:headless-library:3.4.002000000
|              \--- com.aviary.android.feather.sdk:common-library:3.1.2 -> 3.1.8.1 (*)

如果仔细观察,您将看到两个方面:

commons io:commons io:2.4

org.apache.commons: Commons-io: 1.3.2

在那里,我没有确认,但我假设是相同类的不同打包,其中包括org/apache/Commons/io/CopyUtils.class

如果通过以下方式排除公用io:

compile ('com.aviary.android.feather.sdk:aviary-sdk:3.4.3.351') {
    exclude group: 'commons-io'
}

它会构建。我还没有尝试运行它,所以我不知道运行时是否会丢失符号;如果有,您可以尝试对从依赖项中排除的内容进行更精确的处理,或者您可以重新打包依赖项以修复错误,或者联系它的作者。

 类似资料:
  • 我ogin.php 指数php 我做了一个登录脚本,打开,如果密码是正确的,我ndex.php网站。当第一次通过登录脚本打开ndex.php网站时,一切正常,会话设置完毕。但是在我刷新页面后,会话会被破坏,并且没有设置。那么我如何保存会话,这样它就不会因为刷新浏览器而被破坏呢?

  • 问题内容: 我听过关于此主题的不同回答,那么销毁PHP会话的肯定方法是什么? 在最简单的情况下,这是否足以真正终止用户与服务器之间的会话? 问题答案: 要销毁会话,您应该采取以下步骤: 删除会话数据 使会话ID无效 为此,我将使用以下代码: 为了确保会话ID无效,您应该只允许脚本启动的会话ID。因此,设置一个标志并检查它是否被设置: 此外,您可以使用此时间戳定期交换会话ID,以缩短其寿命:

  • 成功登录后,我将保存会话变量。 当用户转到应用程序中的不同页面时,会话就消失了,即使我没有显式地销毁会话。我该怎么解决这个问题? 这是一个会话似乎消失的页面。 在中,我有会话开始方法。

  • 我今天早上将Android Studio2.0预览版从4更新到5。如果我继续使用: 这仍将成功编译。但如果我移动到-alpha5,就会出现以下错误: 错误:任务执行失败:应用程序:compileReleaseJavaWithJavac。Java . io . file not found异常:....\ intermediates \ explosed-AAR \ com . Google . A

  • 问题内容: 在我的本地路由http:// localhost:9000 /#/ deviceDetail /中, 我有一个控制器来管理该视图。在进入该视图之前,我将一些变量设置为( 例如)。 一旦进入该视图,我就可以访问仪表盘属性,但是例如当我用键刷新页面时,该属性仪表盘就会丢失。 我试图将localSave变量保存,但是该方法遇到了循环引用问题。 有什么技巧可以解决吗? 问题答案: Angula

  • 编辑1: 我目前从一个Main类调用它,如下所示: } 原文: 解释后代码如下: 我有一个带有JavaConfig的Spring应用程序,称之为主应用程序,它从库中导入另一个Spring JavaConfig类。这个导入的JavaConfig应该用一个方面包装在主应用程序中创建的任何数据源,这个方面有一个自动连接的LogDelegator。 只要主应用程序只包含一个数据源,一切都正常。但是,当我向