天天看点

Android 突破64K方法数限制解决办法

随着应用的不断开发,Android 应用的大小也在增加。当应用及引用的库达到特定大小时,会碰到65536限制,造成构建错误。

谷歌官方给了解决办法Android官网

65536表示这个数字很重要,代表的是单个 Dalvik Executable (DEX) 字节码文件内的代码可调用的引用总数。

解决办法:
如果minSdkVersion 为 21 或更高值,只需在项目中的修改 build.gradle 文件,将 multiDexEnabled 设置为 true 即可。
           
android {
    defaultConfig {
        ...
        minSdkVersion  
        targetSdkVersion 
        multiDexEnabled true
    }
    ...
}
           
如果 minSdkVersion为20或更低值,则需要依赖Dalvik 可执行文件分包库。
           
android {
    defaultConfig {
        ...
        minSdkVersion  
        targetSdkVersion 
        multiDexEnabled true
    }
    ...
}
dependencies {
  compile 'com.android.support:multidex:1.0.1'
}
           
然后自定义Application继承MultiDexApplication,并重写attachBaseContext()方法,并调用Multidex.install(this);
           
public class MyApplication extends SomeOtherApplication {
  @Override
  protected void attachBaseContext(Context base) {
     super.attachBaseContext(context);
     Multidex.install(this);
  }
}
           
当然不能忘记在AndroidManifest.xml中注册。
           
<application
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:name="com.example.test.MyApplication"
       ...
    </application>
           
编译运行即可。