公司的项目又是一个阶段性的完成,又到了总结项目经验的时候了,最近我并没啥可总结的,就是遇到了一个65535的问题,还是记录一下吧。
一、说道65535,网上的解决方案很多,但是再多,也不如自己亲身经历一把,最近我就遇到了,下面来看一下报的错误:
我看了很久没看明白这是啥意思(不好意思,我的英语很垃圾),看表面应该是RxJava的问题吧,但是这不应该的,抽了一颗烟,考虑了许久,还是没看出来,哈哈。但是我看到了NoClassDefFoundError这个错误,没有找到class,我可能怀疑是分包的问题,难道是65535的问题导致了RxJava停止?废话少说,打印一下方法数看看:
打印出来了:
不管是不是RxJava的问题,反正65535的问题出现了,就得解决。
二、有很多人说直接突破一下不就行了吗?像这样
说明你没有研究过AndroidAPI文档,这种方式Google在5.0的时候才引入的,也就是说,这种方式只适合于版本是21及其以上才可以!
对于如何分包,我先提供一个简单的分包方式
三、分包
1、Moudle中导入依赖
compile 'com.android.support:multidex:1.0.1'
2、初始化
让你的MyApplication继承自MultiDexApplication,然后再清单文件中使用MyApplication就可以了
如果你的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、运行程序之后,你可以在以下目录看到多出来两根文件
你分别打开看一下就ok了,灰常清晰!
自己可以看一下,单单是Android和Google提供的方法就接近2W,再随着第三方开源的壮大,你有什么理由达不到65535呢?
本人新手,希望路过的哥哥姐姐们不喜勿喷,并指出小弟在文章中的犯得错误。