【问题标题】:Difference between transformDexArchiveWithDexMergerForRelease and transformDexArchiveWithDexMergerForDebug task?transformDexArchiveWithDexMergerForRelease 和 transformDexArchiveWithDexMergerForDebug 任务之间的区别?
【发布时间】:2019-02-19 16:49:00
【问题描述】:

当我运行 assembleDebug 时,应用程序的调试 apk 已成功生成,但在尝试 assembleRelease 时,会导致 transformDexArchiveWithDexMergerForDebug 任务失败。

以下是确切错误的sn-p:

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':app:transformDexArchiveWithDexMergerForRelease'.
> com.android.build.api.transform.TransformException: java.lang.RuntimeException:
Program type already present: android.support.annotation.AnimRes

我想知道为什么 assembleDebug 不会出现此错误?

transformDexArchiveWithDexMergerForDebugtransformDexArchiveWithDexMergerForRelease 之间到底有什么区别?

附:我已经尝试清理和重建项目。

【问题讨论】:

    标签: android android-studio gradle android-gradle-plugin


    【解决方案1】:

    发生这种情况的一个原因是 multidex 。可能在你的调试版本的gradle中你有

        `multidexEnabled true
    

    它可以让您绕过调试版本的 64k 限制,从而成功创建了 apk。生产代码通常发生的情况是您不启用 multidex 并使用 proguard 来减少引用的代码大小以不绕过 64k 限制。

    【讨论】:

    • 如果是这种情况,如何启用multidex 进行生产?
    • 生产环境一般不建议开启multidex,但如果要添加,可以在buildTypes { release {下的build.gradle(app level)中声明
    猜你喜欢
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 2015-05-08
    相关资源
    最近更新 更多