美文网首页我爱编程
Android--"65535"方法数超标

Android--"65535"方法数超标

作者: 喜爱滴小麦芽 | 来源:发表于2018-07-26 14:31 被阅读39次

    Android--app启用MutiDex(是Google的一个补丁)
    主要解决“65535”方法数超标以及"INSTALL_FAILED_DEXOPT"问题。


    在构建apk的时候限制了一个dex文件能包含的方法数其总数不能超过65535(64K,1K=2^10=1024,64*1024=65535)


    一般一个APP只有一个classes.dex文件,所以方法数最多是65535,而使用了MutiDex后会实现一个apk多个dex文件,解压apk会发现有classes.dex、classes2.dex、classes(n).dex,这样就突破了65535方法数量限制


    使用方法
    1.首先在App的build.gradle中添加multiDexEnabled true和相应依赖

    android {
        ......
        defaultConfig {
            ......
            //dex 突破65535的限制 multiDexEnabled 多dex支持
            multiDexEnabled true
        }
    }
    dependencies {
        ......
        implementation 'com.android.support:multidex:1.0.0'
    }
    

    2.两种方式
    方式一:在清单文件里添加

     <application
    ...
    android:name="android.support.multidex.MultiDexApplication">
    ...
    </application>
    

    但是我们经常会使用自定义的application文件,所以这种方式使用的场景不多。当然我们可以自定义application继承于MultiDexApplication也可以实现。这样就引申出了第二种方式。


    方式二:有两种实现方式,原理一样。

    实现一:我们自定义application直接继承MultiDexApplication,在清单文件使用自定义application

    实现二:我们看一下MultiDexApplication这个类具体实现了什么

    public class MultiDexApplication extends Application {
        public MultiDexApplication() {
        }
    
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            MultiDex.install(this);
        }
    }
    

    所以我们可以照着在自定义application中实现attachBaseContext()方法并加上MultiDex.install(this);


    注意:目前 Android 5.0 以上的设备已经自身支持了 MultiDex 功能,也就是说在安装 apk 的时候,系统已经会帮我们把 apk 里面的所有 dex 文件都做好 Optimize 处理,所以不需要我们在代码里启用 MultiDex 了。但是对于 Android 5.0 以下的设置,则依然要求我们启用 MultiDex。

    ok了,但是看了好多文章,说MultiDex有很多坑。。。。。


    相关文章

      网友评论

        本文标题:Android--"65535"方法数超标

        本文链接:https://www.haomeiwen.com/subject/izzvmftx.html