android分包

前言

只有android5.0之前需要解决分包问题,5.0之后dex在apk安装的时候汇总,启动时不存在分包问题。

google官方分包

地址:https://developer.android.com/studio/build/multidex?hl=zh-CN

插件分包

github地址:https://github.com/ceabie/DexKnifePlugin#dexknife%E4%B8%AD%E6%96%87
插件分包的优势在于:将指定使用通配符包名分包到第二个dex中。

无论在google分包还是插件分包,自定义Application都会默认加入到首包,但是LauncherAcitivity并不一定会加入首包,执行MultiDex.install(this)会将分dex加入到DexClassLoader。如果在执行MultiDex.install(this)前就进入首页LauncherAcitivity,而LauncherAcitivity并未加入首包,则会出现ClassNotFoundException

自定义Application初始化中的所有类必须加入首包中,即使是在MultiDex.install(this)之后调用也不行

例如bean.getId在Application的onCreate调用,那么这个bean会被加入首包,如果强行将bean移除首包,那么首包中也会有这个bean和getId这一个方法,但是调用会报ClassNotFoundException

你可能感兴趣的:(android分包)