1.原因:
谷歌规定单个dex文件中的方法不能超过65536限制
2.处理:
1.分包处理
2.使用谷歌推荐的multidex
@在app下的build.grade下添加依赖
compile 'com.android.support:multidex:1.0.1'
@确保编译版本大于21.1
@在app下build.grade里的defaultConfig添加
multiDexEnabled true
@在BaseApplication下重写
@Override
protectedvoid attachBaseContext(Context base) {
MultiDex.install(this);
super.attachBaseContext(base);
}
解决multidex打包失败
Error:Execution failed for task ':transformClassesWithMultidexlistForDebug'.
> java.io.IOException: Can't read [D:\workspace\project2\haocaimao2\build\intermediates\transforms\jarMerging\debug\jars\1\1f\combined.jar] (Can't process class [com/tencent/wxop/stat/al.class] (Unknown verification type [95] in stack map frame))
原文:有所不同:http://bbs.youkuaiyun.com/topics/392084419?list=lz
1.查看当前android studio当前使用的混淆版本(android studio安装目录下的)
Android\Android Studio\gradle\m2repository\net\sf\proguard\proguard-base
一般是最后的那一个版本(如果不知道可以重命名文件下的jar包名称,重新打开as看报错的目录)
到官网下载当前源码:
https://sourceforge.net/projects/proguard/files/proguard/
2.下载好后,解压在src\proguard\classfile文件当中找到源码的ClassConstant.java类
打开查找ATTR_StackMapTable并将对应的值改为dummy
3.将当前sdk(F:\Android\sdk\tools\proguard)下面的ant文件、proguard-android.txt、proguard-android-
optimize.txt、proguard-project.txt拷贝到这个源码包的根目录
4.下载ant进行打包(1.9.9)
配置环境变量
ANT_HOME C:/ apache-ant-1.9.9
path %apache-ant-1.9.9%\bin;%JAVA_HOME%\bin;
classpath %apache-ant-1.9.9%\lib;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
验证是否成功:
在cmd下输入ant
如果出现:
Buildfile:build.xml does not exist!
Buildfailed
为成功
运行ant进行打包:
在下载并更改后的proguard下的build(最新版本为buildscriptes)下shift+右键点击在此处运行命令窗口选项输入ant后摁下enter键等待编译成功(主要看红色框里面是否跟我有类似内容)
然后查看lib文件下有一个proguard.jar,将这个proguard.jar覆盖掉步骤一里面的(我这里是5.3.2)5.3.2下的jar文件
大功告成!!