Android Multidex 遇到的问题 
http://blog.csdn.net/wangbaochu/article/details/51178881

Android 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚 
http://blog.csdn.net/t12x3456/article/details/40837287

apply plugin: 'com.android.application'
//设置编译android项目的参数
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
// 应用的包名
applicationId "me.storm.niaa"
minSdkVersion 9
// maxSdkVersion 23
targetSdkVersion 22
//versionCode 229
//versionName "2.2.9"
// versionCode rootProject.ext.versionCode
// versionName rootProject.ext.versionName
multiDexEnabled true
} afterEvaluate {
tasks.matching {
it.name.startsWith('dex')
}.each { dx ->
if (dx.additionalParameters == null) {
dx.additionalParameters = []
}
dx.additionalParameters += '--multi-dex' // enable multidex
}
} dexOptions {
javaMaxHeapSize "4g" //java虚拟机堆内存最大值设为4g,避免oom
preDexLibraries = false //设置对第三方lib不做preDex处理
additionalParameters = //每个dex包方法数限制在4000以内
['--multi-dex',
'--set-max-idx-number=40000']
}

  

1.配置您的应用进行Dalvik 可执行文件分包


将您的应用项目设置为使用 Dalvik 可执行文件分包配置需要对您的应用项目进行以下修改,具体取决于应用支持的最低 Android 版本。

1.1 如果您的 minSdkVersion 设置为 21 或更高值,您只需在模块级 build.gradle 文件中将 multiDexEnabled 设置为 true,如此处所示:

android {
    defaultConfig {
        ...
        minSdkVersion 21
        targetSdkVersion 25
        multiDexEnabled true
    }
    ...
}

但是,如果您的 minSdkVersion 设置为 20 或更低值,则您必须按如下方式使用 Dalvik 可执行文件分包支持库

  • 修改模块级 build.gradle 文件以启用 Dalvik 可执行文件分包,并将 Dalvik 可执行文件分包库添加为依赖项,如此处所示:

    android {
        defaultConfig {
            ...
            minSdkVersion 15
            targetSdkVersion 25
            multiDexEnabled true
        }
        ...
    } dependencies {
      compile 'com.android.support:multidex:1.0.1'
    }
  • 1.2 根据是否要替换 Application 类,执行以下操作之一:

    • 如果您没有替换 Application 类,请编辑清单文件,按如下方式设置 <application> 标记中的 android:name

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.myapp">
          <application
                  android:name="android.support.multidex.MultiDexApplication" >
              ...
          </application>
      </manifest>
    • 如果您替换了 Application 类,请按如下方式对其进行更改以扩展 MultiDexApplication(如果可能):

      public class MyApplication extends MultiDexApplication { ... }
    • 或者,如果您替换了 Application 类,但无法更改基本类,则可以改为替换 attachBaseContext() 方法并调用 MultiDex.install(this) 来启用 Dalvik 可执行文件分包:

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

构建应用后,Android 构建工具会根据需要构建主 DEX 文件 (classes.dex) 和辅助 DEX 文件(classes2.dex 和 classes3.dex 等)。然后,构建系统会将所有 DEX 文件打包到您的 APK 中。

运行时,Dalvik 可执行文件分包 API 使用特殊的类加载器来搜索适用于您的方法的所有 DEX 文件(而不是仅在主 classes.dex 文件中搜索)。

2.测试 Dalvik 可执行文件分包应用


编写面向 Dalvik 可执行文件分包应用的仪器测试时,无需进行其他配置。AndroidJUnitRunner 直接支持 Dalvik 可执行文件分包,前提是您使用MultiDexApplication 或替换您的自定义 Application 对象中的 attachBaseContext() 方法,并调用 MultiDex.install(this) 以启用 Dalvik 可执行文件分包。

或者,您可以替换 AndroidJUnitRunner 中的 onCreate() 方法:

public void onCreate(Bundle arguments) {
    MultiDex.install(getTargetContext());
    super.onCreate(arguments);
    ...
}

:目前不支持使用 Dalvik 可执行文件分包来创建测试 APK。

ref:

配置方法数超过 64K 的应用 | Android Studio
https://developer.android.com/studio/build/multidex.html、

Android 解决65535的限制 使用android-support-multidex解决Dex超出方法数的限制问题,让你的应用不再爆棚
http://blog.csdn.net/x_i_a_o_h_a_i/article/details/46544341

Android 65535 问题与 MultiDex分包的更多相关文章

  1. Eclipse版本android 65535解决方案(原理等同android studio现在的分包方式)

    由于工作的需要看了下Eclipse下android65535的解决方案,查了好多文档,真心的发自内心的说一句请不要再拷贝别人的博客了,害人,真害人. 接下来我说下我的实现方式,首先说下65535的最可 ...

  2. Android 65K问题之Multidex原理分析及NoClassDefFoundError的解决方法

    Android 65K问题相信困惑了不少人,尽管AS的出来能够通过分dex高速解决65K问题,可是同一时候也easy由于某些代码没有打包到MainDex里引起NoClassDefFoundError. ...

  3. Android Studio MultiDex 分包碰到的坑

    前天准备发包了,测试完毕,打好正式签名包,装到手机上,运行不起来. 网上查了大量资料,都没有解决方案. log显示如下: 04-26 10:07:57.727 1538-1538/? I/MultiD ...

  4. 【Android - 进阶】之MultiDex的配置

    一.什么是MultiDex 随着时代的进步,人们对手机 APP 的需求越来越大,越来越苛刻,很多APP都变得很大,再加上APP都不可避免的需要导入一些框架.第三方类库等等,就更加大了项目的整体文件体系 ...

  5. Android兼容包之MultiDex

    一.MultiDex的产生背景 当Android系统安装一个应用的时候,有一步是对Dex进行优化,这个过程有一个专门的工具来处理,叫DexOpt.DexOpt的执行过程是在第一次加载Dex文件的时候执 ...

  6. multiDex分包时指定主dex的class列表

    在gradle中我们使用了如下代码可以将指定类型分配到主dex中: afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each ...

  7. Android 分包 MultiDex 策略总结

    1.分包背景 我们在Android开发中,会不断的在App代码里面增加新功能,引入新的类库,如果不加控制的话,那么会碰到编辑器IDE爆出一下错误: Error:Execution failed for ...

  8. Android分包MultiDex源码分析

    转载请标明出处:http://blog.csdn.net/shensky711/article/details/52845661 本文出自: [HansChen的博客] 概述 Android开发者应该 ...

  9. android MultiDex multiDex原理(一)

    android MultiDex 原理(一) Android分包MultiDex原理详解 转载请注明:http://blog.csdn.net/djy1992/article/details/5116 ...

随机推荐

  1. Swing的概述

    Swing在Java中是一个包,下面就是它的基本概述:简介: Java为了方便图形界面的实现, 专门设计了类库来满足各种各样的图形元素和用户交互事件, 该类库即为抽象窗口工具箱(Abstract Wi ...

  2. centos 开机自启设定:

    在sentos系统下,主要有两种方法设置自己安装的程序开机启动.1.把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd. #!/bin/sh # # ...

  3. Centos7 安装与破解 Confluence 6.7.1

    1.1硬件需求建议: CPU:32/64 bit 2.27GHz双核心以上之CPU: 内存:8GB以上: 硬盘:300GB,7200转以上: 建议数据库.Confluence等各自独立一台服务器(本测 ...

  4. 利用Elasticsearch搭建全球域名解析记录

    前言 数据来源,由Rapid7收集并提供下载https://scans.io/study/sonar.fdns 下载Elasticsearch 2.3 ElasticSearch是一个基于Lucene ...

  5. [zabbix] zabbix检测mysql主从状态

    环境说明: zabbix-proxy 172.16.2.95(zabbix-server同理) zabbix-agent111 172.16.2.111 mysql从机 1.mysql从机添加用户权限 ...

  6. [salt] jinja模板中变量使用pillar的几种方法

    先转载下jinja模板中使用变量的方法,后文主要讲解pillar的变量使用方法 一.jinja模版的使用方法: 1.file状态使用template参数 - template:jinja 2.模版文件 ...

  7. Go going软件NABCD

    N  (Need 需求):gogoing项目目前打算做得是一个基于石家庄铁道大学在校大学生对于短期节假日出行旅游的指南.次关键的定义为“简单”.“简单”则体现在我们的软件使用简单.方便,以及界面的简洁 ...

  8. Linux系统(X32)安装Oracle11g完整安装图文教程另附基本操作

    一.修改操作系统核心参数 在Root用户下执行以下步骤: )修改用户的SHELL的限制,修改/etc/security/limits.conf文件 输入命令:vi /etc/security/limi ...

  9. Date 类的使用

    package com.Date.Math; import java.text.ParseException; import java.text.SimpleDateFormat; import ja ...

  10. Java集合之HashSet/TreeSet原理

    Set集合 1.HashSet  只去重复, 没有顺序  HashSet的add方法会调用hashCode和equals, 所以存储在HashSet中的对象需要重写这两个方法. 2.TreeSet   ...