网上有很多详细解决方案,此处只作概述;

一、超过64k

1.在app下的build.gradle 文件中的android>defaultConfig中加入multiDexEnabled true
形如:
android {
    ****
    defaultConfig{
        ****
        multiDexEnabled true
    }
}

2.添加依赖于你的build.gradle支持MultiDex库

dependencies { ... compile 'com.android.support:multidex:1.0.1' ... }

3.在Application的onCreate()中调用MultiDex.install(this);方法

当然,根据你的项目情况,你有3种可选方式选择:

如果你没有创建自己的Application 类,在你的清单文件AndroidManifest.xml中配置android.support.multidex.MultiDexApplication就可以了。

.... android:name="android.support.multidex.MultiDexApplication" ...

如果你有自己的Application类了,让它继承android.support.multidex.MultiDexApplication而不是android.app.Application

如果你的Application继承了其他的类,并且你不想改变或者没办法改变。按照下面的方法重写attachBaseContext()

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

不论你选择上面哪种,都会创建多个大小差不多的dex文件代替单个庞大的dex文件。运行的时候回同事加载所有的这些dex文件。

二、Out of memory 问题

对于有很多依赖的项目,编译可能因为下面的错误中断

Error:Execution failed for task ':app:dexDebug'. ... Error Code: 3 Output: UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: GC overhead limit exceeded at com.android.dx.cf.cst.ConstantPoolParser.parse0(ConstantPoolParser.java:326) ...

在app>build.gralde>android标签下面添加下面代码可以解决

dexOptions { incremental true javaMaxHeapSize "4g" }

更多相关文章

  1. Bugly Android自动上传符号表
  2. 友盟多渠道获取渠道名 附赠多渠道打包文件
  3. Selector的用法
  4. MapView的apiKey
  5. android sp文件一个键值保存多条信息
  6. 如何给android studio加速(加快gradle build)
  7. android数据持久化总结
  8. Android(安卓)3.1 r1 中文API文档 (121) ―― ResourceCursorTre
  9. android文件命名错误Invalid file name: must contain only [a-z

随机推荐

  1. [置顶] Android下的stl读取3D显示
  2. DatePickerDialog 自定义样式及使用全解
  3. Android(安卓)简单游戏实现笑脸的移动与
  4. Android模拟器快捷键大全
  5. Android(安卓)DES加密的CBC模式加密解密
  6. android中使用ant打包APK
  7. android: 如何开启webview的LBS功能
  8. 优秀的 Android(安卓)Studio 插件
  9. Android学习笔记(十五)-简易视频播放器
  10. android studio 查看sha1(Mac windows下的