前言
昨天集成网易云信的时候发生的,最终找到了解决方案,记录一下。
The number of method references in a .dex file cannot exceed 64K.
就是这个问题。
错误原因
这个错误出现的原因是因为App的方法数是有限制的,好像是64000个,听起来是不是不可能出现,但是我就是碰到了。。。当然jar包重复也会出现这个错误,但是我jar包看了好几遍,真的是没重复,但是没办法啊,错误来了总要解的。
解决方案
1. 有重复jar包去掉重复jar包
2. 如果没有重复的jar包,那么就看接下来的操作
首先app的 build.gradle 中
(1)在dependencies 中添加
compile 'com.android.support:multidex:1.0.1'
(2)在 defaultConfig 中添加
multiDexEnabled true
比如这样
android {
compileSdkVersion 25
buildToolsVersion '25.0.3'
defaultConfig {
applicationId "XXXXXX"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.00"
multiDexEnabled true
}
buildType{
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
.......
com.android.support:multidex:1.0.1'
}
(3)在你自己的Application类里面重写方法
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this) ;
}
到此就可以解决64K的问题了。
解决底部虚拟按钮遮挡问题
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
}
Git忽略文件
1、在项目根目录添加文件.gitignore内容如下
*.iml
.gradle
.idea
/local.properties
/.idea/workspace.xml
/.idea/vcs.xml
/.idea/libraries
.DS_Store
/build
/captures
*.apk
2、在module的目录下添加.gitignore内容如下
/build