Android-Easy-MultiDex
Android-Easy-MultiDex copied to clipboard
找不到MainActivity
在酷派9190L android 4.3的系统上,报找不到MainActivity错误!小米5正常使用。
@Cwj1992 看下你的dexknife.txt配置,或者你可以关掉instant run 试试
@Cwj1992 或者切换到1.5.0再试试,由于gradle插件经常更新,也许会遇到莫名的问题
切到1.5.0了。
dexknife配置: #为注释符
#-----------主Dex中必要依赖的脚本配置----------- #默认保留四大组件中其他三大组件,Activity组件选择性保留(使用-just activity 选项),若为空默认保留所有Activity #-just activity com.ceabie.demo.MainActivity
#-----------附加类-----------
如果你想要某个包路径在maindex中,则使用 -keep 选项,即使他已经在分包的路径中.若为空,默认保留所有
保留单个类.
#-keep android.support.v7.app.AppCompatDialogFragment.class
这条配置可以指定这个包下类在第二及其他dex中.
-split android.support.v?.** -split com.bigkoo.** -split com.universalvideoview.** -split com.github.mikephil.** -split com.nineoldandroids.** -split com.tencent.** #-split com.nostra13.** #将全部类移出主Dex #-split .
不包含Android gradle 插件自动生成的miandex列表.(不用系统自带分包策略)
#-donot-use-suggest
不进行dex分包, 直到 dex 的id数量超过 65536.(设置自动执行分包策略)
#-auto-maindex
显示miandex的日志.
-log-mainlist
@Cwj1992 配置有点问题 1,-just activity com.ceabie.demo.MainActivity 你把mainactivity注释掉了,把它打开 2, -split android.support.v?.** -split com.bigkoo.** -split com.universalvideoview.** -split com.github.mikephil.** -split com.nineoldandroids.** -split com.tencent.** 这些可以不用写,建议使用-split . 这样所有的类都会移出main dex,这样能保证main dex里的依赖最小,只需要指定必要的activity到main dex中就行了,会自动计算activity的依赖
@TangXiaoLv 这个是抄您的配置Demo的,前面有#号的、代表的是注释、对我的配置应该是没有影响的吧。奇怪的是,为什么在小米手机上又可以跑,在酷派的手机上,就直接奔溃,系统4.3。小米系统6.0、 自动计算Activity的依赖这个功能有点厉害。
@Cwj1992 那也就是说你没有在main dex中保留必要Activity,你使用-just activity 把你的MainActivity,包括必要的欢迎页Activity加进去试试
@TangXiaoLv 我好像有点明白您的说意思了。我再试一下。
@TangXiaoLv 但是我有些不明白的是,为什么在小米上又可以跑呢、而且这种分包,不是在App启动的时候,就会把两个Dex都加载吗。那么,会报找不到类的错误。。。之后,我又把第一个dex反编译了一下,发现,启动界面的那些Activity都在里面。
@Cwj1992 因为你开了instant run,5.0以上会默认使用instant run 的分包策略,5.0以下使用我们自己的分包策略,你可以试试把instant run关掉,看看 小米会不会报错
@Cwj1992 instant run 只在debug模式下有效,打正式包还是会用我们的分包策略,所以不用担心无效的问题
@TangXiaoLv 我的这个问题就是出现在打正式包的时候。
@TangXiaoLv 因为我们的应用还没有达到方法上限、所以在debug的时候,multidex 设为false了
@Cwj1992 回头我用模拟器试下
@Cwj1992 你能不能帮忙试下4.0 - 4.4的,看看是平台问题还是机器问题,我们这边的测试没有报这方面的错误
@TangXiaoLv 我这边也就只有这一部4.3的。其余都是5.0以上的。我现在把split配置全部去掉,使用just保留了三个Activity(包括启动Activity)。现在Application初始化的时候,报找不到UIL类的错误!
@Cwj1992 注意-split 带星号,留言中打*会被去掉,你看下我demo的配置,一般情况下可以直接使用demo的配置,只需要更换-just activity处就可以了,你这个问题应该是配置没配好
@TangXiaoLv 现在完全按照您Demo中的配置,就-just activity了三个在启动的时候需要用的Activity,一样的报错找不到UIL的类,在Application的初始化中。
@Cwj1992 错误发来看下
@Cwj1992 换2.0.1插件试试
