美文网首页我爱编程
Android打包报错 mismatched stack dep

Android打包报错 mismatched stack dep

作者: df661d1e16ba | 来源:发表于2018-05-27 15:30 被阅读116次

Android Studio运行debug没问题,但是打包时报错:
Uncaught translation error: com.android.dx.cf.code.SimException: mismatched stack depths
Google一下,搜到这样一段源码


image.png

看来是两个包在合并的时候,包的大小不一,抛出的异常。但是没有Google出解决方法。
不过确定这个异常是使用multiDex时报的,看了下,也有return code 1 for dex process的报错,这个报错是比较常见的错误,基本就是multiDex的配置引起的错误,所以排查一下multiDex的配置,应该可以找到错误原因。

gradle的defaultConfig中设置multiDexEnabled true,没问题
Application继承自MultiDexApplication,然后重写方法:

@Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    }

也没问题。再来就是可使用内存的设置,
在gradle.properties中添加org.gradle.jvmargs=-Xmx4096m

打包,还是不行。

然后将下面的代码添加到gradle的android下。

dexOptions {
        javaMaxHeapSize "4g"
    }

打包成功
嗯,综合源码,看来是因为打包时内存不足,导致一个dex不完整,合并的时候发现大小不一致而报错。
所以其实,只要碰到return code 1 for dex process这种multiDex的报错,将配置检查一遍,基本就可以解决问题。

相关文章

网友评论

    本文标题:Android打包报错 mismatched stack dep

    本文链接:https://www.haomeiwen.com/subject/ihibjftx.html