单个dex文件不能超过65535个方法解决方法

来源:互联网 发布:nginx服务器绑定域名 编辑:程序博客网 时间:2024/05/23 20:52

1.原因:

谷歌规定单个dex文件中的方法不能超过65536限制

2.处理:

1.分包处理

2.使用谷歌推荐的multidex

@app下的build.grade下添加依赖

compile 'com.android.support:multidex:1.0.1'

@确保编译版本大于21.1

@appbuild.gradedefaultConfig添加

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.csdn.net/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.txtproguard-android-

optimize.txtproguard-project.txt拷贝到这个源码包的根目录

4.下载ant进行打包(1.9.9)

http://ant.apache.org

配置环境变量

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下的buildshift+右键点击在此处运行命令窗口选项输入ant后摁下enter键等待编译成功

然后查看lib文件下有一个proguard.jar,将这个proguard.jar覆盖掉步骤一里面的(我这里是5.3.2)5.3.2下的jar文件

大功告成!!

阅读全文
1 0