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的报错,将配置检查一遍,基本就可以解决问题。
网友评论