1、今天在升级了AS2.0后,运行iyuba项目竟然爆出了1500多个错误!(内心崩溃的)
拉到最后一行,错误提示:
Android Studio XXX causing GC overhead limit exceeded error
StackOverflow解决:
I think there's a separate way to raise the heap limit of the dexing operation. Add this to your android closure in your build.gradle file:
dexOptions {
javaMaxHeapSize "4g"
}
再次执行,还是报错,不过这次只报一个错误了:
Android Studio Error:Execution failed for task ':iyuba:transformClassesWithDexForDebug'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process finished with non-zero exit value 2
总的分析来说,应该是项目中的总文件数超过了65K的限制了。下面采用插件化机制multidex,首先在iyuba和lib的build.gradle文件的dependencies中添加:
compile 'com.android.support:multidex:1.0.0'
并在iyuba的build.gradle文件中添加:
defaultConfig{
multiDexEnabled true
}
注意不要在lib的build.gradle文件添加!
这时执行还是有错误:
Android Studio duplicate entry: android/support/multidex/MultiDex$V19.class
项目Clean了一遍之后这个错误就消失了,又出现了新的错误:
Gradle Duplicate Entry: java.util.zip.ZipException :duplicate entry: android/support/annotation/IntegerRes.class
因为这里有support包的问题,怀疑是本地的support包或者其他有两个module使用的jar包中的方法引起的冲突,因为使用了Multidex的原因。然后将Project中的所有Module一一排查,只用一次的jar包可以直接引用本地的,其他可能多次引用的jar包一律使用在线的。如此折腾完一番,问题比较明确了。然后发现有support-v4包的冲突,actionbarSherlock、SlidingMenu统统注掉,基本问题少了很多,只剩下最后一个坑,AS的应用运行按钮旁边的应用名字上一直显示个红叉,说是找不到Default Activity,自己手动指定一下就可以了。至此,程序基本上可以运行了,再次泪流满面!
最后一个小点,如果想让应用中的ActionBar和Title不显示,在styles.xml文件中,Application中调用的Theme中设置:
<item name = "android:windowActionBar">false</item>
<item name = "android:windowNoTitle">true</item>即可。
愉快而又充满了坑的一天!