eclipse 方法超标处理

来源:
https://www.jianshu.com/p/e761c0ba0855
https://www.cnblogs.com/liemng/p/5982221.html

整理记录下,万一以后用到了。

将用到的一堆jar合并成一个jar,完事在转换为dex文件

步骤如下:

  1. 工程根目录下新建build.xml文件
    name:工程的名字
    basedir :基准目录,不懂,反正写个点没啥影响
    destfile:合并后的jar存放的位置以及合并后的jar文件名字
    default:默认的运行目录,不管,反正用不到
    src:后边是我们要合并的lib的路径,记得加上libs目录。
 
 
 
     
          
                 
        
        
        
        
     
 

工程目录右键,如下图


image.png

然后左侧点击builder,右侧点击new,弹框出来选择ant,如下图


image.png

弹框如下,分别点击红框的地方,第一个是选择我们刚才新建的那个build.xml文件,第二个选择目标工程即可
image.png

点击菜单栏的build project,就可以在控制台看到编译的信息了
我们上边的build.xml文件destfile 没有相对路径,所以就直接在工程根目录下了,这个自己可以改


image.png

合并完jar以后这个ant也就不需要了,要不每次build都执行一次也是浪费,用完可以去下掉勾选了


image.png
  1. 把这个合并的jar转成dex。使用sdk下的工具dx.bat
    打开command命令窗口,完事把路径切换到dx.bat所在的目录,然后执行下边的命令
    output后边跟的是生成dex文件保存的位置以及名字,最后是要转换的jar文件路径【就是我们上边打包的那个all.jar】
dx --dex --output=D:\classes2.dex(生成的路径和名称)      路径\myjar.jar
image.png
注意

由于apk默认会将项目中的class文件编译成classes.dex,所以这里你需要更改下你的输出文件名,这里这个名字要有规范,严格的命名classes2.dex,classes3.dex
换句话说这dex文件在这里名字必须是classes2.dex,如果以后这个classex2.dex也超65535了,需要合并新的dex,那么名字就classes3.dex了。

继续操作

  1. 复制上边生成的classex2.dex文件到工程的src目录下

  2. libs目录下删除用来合并的 jar 。
    但是删除后为了能编译通过我们得使用外部引用:通过工程右键》 bulidPath 下的 add external archives 引用被我们合并的 all.jar

  3. 找个mutildex包导入libs,这个就不要参与合并了。application里用到的不要合并
    完事可以让application继承MultiDexApplication 或者在oncreate里调用multidex的install方法

  4. 测试
    运行后正常安装到手机了,点了下,有个页面就挂了。其他页面正常。
    看下出错的log,提示的是fragment$1找不到,点进去是下边的代码
    看来上边合并的recyclerView的库没加载对啊

private RecyclerView.OnScrollListener mRecyclerViewOnScrollListener = new RecyclerView.OnScrollListener()

原因已经找到了并修改了,就是上边的classex.dex名字弄错了【写成了classex1.dex】,系统默认会把java文件打包成classex.dex,我们新加的需要从数字2开始,也就是classex2.dex

你可能感兴趣的:(eclipse 方法超标处理)