天天看点

Android分包那些事(突破65535)

公司的项目又是一个阶段性的完成,又到了总结项目经验的时候了,最近我并没啥可总结的,就是遇到了一个65535的问题,还是记录一下吧。

一、说道65535,网上的解决方案很多,但是再多,也不如自己亲身经历一把,最近我就遇到了,下面来看一下报的错误:

Android分包那些事(突破65535)

我看了很久没看明白这是啥意思(不好意思,我的英语很垃圾),看表面应该是RxJava的问题吧,但是这不应该的,抽了一颗烟,考虑了许久,还是没看出来,哈哈。但是我看到了NoClassDefFoundError这个错误,没有找到class,我可能怀疑是分包的问题,难道是65535的问题导致了RxJava停止?废话少说,打印一下方法数看看:

打印出来了:

Android分包那些事(突破65535)

不管是不是RxJava的问题,反正65535的问题出现了,就得解决。

二、有很多人说直接突破一下不就行了吗?像这样

Android分包那些事(突破65535)

说明你没有研究过AndroidAPI文档,这种方式Google在5.0的时候才引入的,也就是说,这种方式只适合于版本是21及其以上才可以!

对于如何分包,我先提供一个简单的分包方式

三、分包

1、Moudle中导入依赖

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

2、初始化

让你的MyApplication继承自MultiDexApplication,然后再清单文件中使用MyApplication就可以了

Android分包那些事(突破65535)

如果你的MyApplication继承与别的Application了,你也可以直接重写一个方法

public class MyApplication extends SomeOtherApplication {      
  @Override  
  protected void attachBaseContext(Context base) {                
    super.attachBaseContext(context);     
    Multidex.install(this);  
}}
           

四、查看项目中的方法数:

上面说到查看项目中一共有了多少方法,这里也提供一个很简单的方法实现:

1、在主项目中配置一下

buildscript {
    repositories {
        jcenter()
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
        classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.6.1'// 主项目目录build.gradle配置代码
    }
}
           

2、在moudle中配置一下插件

apply plugin: 'com.android.application'
apply plugin: 'com.getkeepsafe.dexcount'//在moudle项目build.gardle中配置代码
           

3、运行程序之后,你可以在以下目录看到多出来两根文件

Android分包那些事(突破65535)

你分别打开看一下就ok了,灰常清晰!

Android分包那些事(突破65535)
Android分包那些事(突破65535)

自己可以看一下,单单是Android和Google提供的方法就接近2W,再随着第三方开源的壮大,你有什么理由达不到65535呢?

本人新手,希望路过的哥哥姐姐们不喜勿喷,并指出小弟在文章中的犯得错误。