zoukankan      html  css  js  c++  java
  • Android填坑—Error:Execution failed for task ':app:transformClassesWithDexForRelease'

    昨晚正在干着自己的事,另外一个同学说项目打包不了,但是可以debug运行。又急着需要打包apk发给那边人去测试。真的是搞事情,赶紧打开项目试试打包。项目从之前的$Eclipse$中转过来的,清楚的记得当时转成功后第一件事就是测试能不能编译运行,第二就是尝试打包自动更新。确定当时没有问题,但是之后在上面又开发了些东西,gradle加了一些包啊啥的。

    错误


    打包过程特别慢,那个圈一直转,我还将网切换到了自己的手机热点,因为我知道实验室的网会导致有的包下载不了,但是最后打包了半天,失败了。。。。
    开始各种搜索。。。。。。。。。。

    填坑过程(可直接看后面的解决

    1. 网上确实有很一些帖子啊,就说需要defaultConfig下添加multiDexEnabled true,这句话是干什么用的呢,就是分包,为什么需要分包呢,因为工程的方法数超过了64k,详见我的另外一篇文章Android工程方法数超过64K。这就说明我是有这句话的,而且看看报错异常中确实有multi的字样。而这个确实也是后来转为Androif Studio后加的,所以基本问题就定位到这里了。
    2. 所以去掉了这个分包功能(我知道去掉肯定会无法运行,只是想看看打包apk的时候会不会报这个error),事实证明,直接提示方法数超过64k,编译不过,我真是天真。
    3. 去看了看添加的gradle配置
    implementation 'com.android.support:multidex:1.0.1'
    

    果然上面提示最新版本1.0.3,好吧,我改成最新版本,重写gradle下载,这个时候就出现了一转圈,我去打开了External Liberaies看看,结果发现了这个

    不对啊,我明明是1.0.3,怎么下载了1.0.2,一脸懵逼,猜想是我使用的compileSdkVersion 27,1.0.3需要更高版本吧,个人猜想而已。我又改成了1.0.2,最后满怀期待的打包,啪,,,异常依旧。心死。。。
    4. 想着今天晚上可能打包不了了,哎,仔细看看异常。 注意到了这句话

    java.lang.OutOfMemorayError:GC overhead limit exceed
    

    内存溢出,GC出问题了????,难道这不应该是跑程序会出的问题吗,搞笑,copy,百度,一通搜索后,这样一句话映入眼帘.

    javaMaxHeapSize "4g"
    

    这句话写在app.gradledexOptions下,字面意思,指定堆大小4g,联想到内存溢出。先不管,搞上去,试一试打包。Perfect。。。。。。。。unbelievable。。。amazing。。。。

    解决

    在在app.gradlebuildTypesdexOptions下添加

    javaMaxHeapSize "4g"
    

    当然可以设定更大一些,似乎根据自己的pc配置来的。

    最后

    生命不息,使劲造Android填坑—Error:Execution failed for task ':app:transformClassesWithDexForRelease'

  • 相关阅读:
    P4396 [AHOI2013]作业 分块+莫队
    B1965 [Ahoi2005]SHUFFLE 洗牌 数论
    B1970 [Ahoi2005]Code 矿藏编码 暴力模拟
    B1968 [Ahoi2005]COMMON 约数研究 数论
    B1237 [SCOI2008]配对 贪心 + dp
    B1108 [POI2007]天然气管道Gaz 贪心
    B1734 [Usaco2005 feb]Aggressive cows 愤怒的牛 二分答案
    B1012 [JSOI2008]最大数maxnumber 分块||RMQ
    HAOI2007 反素数
    NOIP2009 Hankson的趣味题
  • 原文地址:https://www.cnblogs.com/numen-fan/p/10864296.html
Copyright © 2011-2022 走看看