Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

找不到MainActivity #6

Open
Cwj1992 opened this issue Aug 22, 2016 · 20 comments
Open

找不到MainActivity #6

Cwj1992 opened this issue Aug 22, 2016 · 20 comments
Labels

Comments

@Cwj1992
Copy link

Cwj1992 commented Aug 22, 2016

在酷派9190L android 4.3的系统上,报找不到MainActivity错误!小米5正常使用。

@TangXiaoLv
Copy link
Owner

@Cwj1992 看下你的dexknife.txt配置,或者你可以关掉instant run 试试

@TangXiaoLv
Copy link
Owner

@Cwj1992 或者切换到1.5.0再试试,由于gradle插件经常更新,也许会遇到莫名的问题

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

切到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

@TangXiaoLv
Copy link
Owner

@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的依赖

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

@TangXiaoLv 这个是抄您的配置Demo的,前面有#号的、代表的是注释、对我的配置应该是没有影响的吧。奇怪的是,为什么在小米手机上又可以跑,在酷派的手机上,就直接奔溃,系统4.3。小米系统6.0、
自动计算Activity的依赖这个功能有点厉害。

@TangXiaoLv
Copy link
Owner

@Cwj1992 那也就是说你没有在main dex中保留必要Activity,你使用-just activity 把你的MainActivity,包括必要的欢迎页Activity加进去试试

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

@TangXiaoLv 我好像有点明白您的说意思了。我再试一下。

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

@TangXiaoLv 但是我有些不明白的是,为什么在小米上又可以跑呢、而且这种分包,不是在App启动的时候,就会把两个Dex都加载吗。那么,会报找不到类的错误。。。之后,我又把第一个dex反编译了一下,发现,启动界面的那些Activity都在里面。

@TangXiaoLv
Copy link
Owner

@Cwj1992 因为你开了instant run,5.0以上会默认使用instant run 的分包策略,5.0以下使用我们自己的分包策略,你可以试试把instant run关掉,看看 小米会不会报错

@TangXiaoLv
Copy link
Owner

@Cwj1992 instant run 只在debug模式下有效,打正式包还是会用我们的分包策略,所以不用担心无效的问题

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

@TangXiaoLv 我的这个问题就是出现在打正式包的时候。

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

@TangXiaoLv 因为我们的应用还没有达到方法上限、所以在debug的时候,multidex 设为false了

@TangXiaoLv
Copy link
Owner

@Cwj1992 回头我用模拟器试下

@TangXiaoLv
Copy link
Owner

@Cwj1992 你能不能帮忙试下4.0 - 4.4的,看看是平台问题还是机器问题,我们这边的测试没有报这方面的错误

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

@TangXiaoLv 我这边也就只有这一部4.3的。其余都是5.0以上的。我现在把split配置全部去掉,使用just保留了三个Activity(包括启动Activity)。现在Application初始化的时候,报找不到UIL类的错误!

@TangXiaoLv
Copy link
Owner

@Cwj1992 注意-split 带星号,留言中打*会被去掉,你看下我demo的配置,一般情况下可以直接使用demo的配置,只需要更换-just activity处就可以了,你这个问题应该是配置没配好

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

@TangXiaoLv 现在完全按照您Demo中的配置,就-just activity了三个在启动的时候需要用的Activity,一样的报错找不到UIL的类,在Application的初始化中。

@TangXiaoLv
Copy link
Owner

@Cwj1992 错误发来看下

@Cwj1992
Copy link
Author

Cwj1992 commented Aug 22, 2016

image

dexknife.txt

@TangXiaoLv
Copy link
Owner

@Cwj1992 换2.0.1插件试试

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants