ceabie / DexKnifePlugin

A easy android gradle plugin to smart split the specified classes to multi dex.
Apache License 2.0
524 stars 83 forks source link

请问我在 dexknife中添加了keep 这个类WXEntryActivity,怎么还是报NoClassDefFoundError #38

Open i91h1r opened 7 years ago

i91h1r commented 7 years ago

-keep com.xiaobu121.xiaobu.xiaobu_android.wxapi.WXEntryActivity

急求帮助

ceabie commented 7 years ago

要加 .class 如果要包含内部类,需要另外添加 SomeClass$*.class

i91h1r commented 7 years ago

@ceabie 我在dexknife.txt -keep com.yixia.camera.VCamera.class -keep com.xiaobu121.xiaobu.xiaobu_android.wxapi.WXEntryActivity.class -keep SomeClass$*.class -keep android/support/multidex/MultiDex.class -keep android/support/multidex/MultiDexApplication.class -keep android/support/multidex/MultiDexExtractor.class -keep android/support/multidex/MultiDexExtractor$1.class -keep android/support/multidex/MultiDex$4.class -keep android/support/multidex/MultiDex$14.class -keep android/support/multidex/MultiDex$19.class -keep android/support/multidex/ZipUtil.class -keep android/support/multidex/ZipUtil$CentralDirectory.class

还是不行额?

i91h1r commented 7 years ago

一直报这个 java.lang.NoClassDefFoundError: com.yixia.camera.VCamera

ceabie commented 7 years ago

参考特性的第2条,不要在Application里面添加代码,移到另外一个类中,间接引用不容易出错。proguard 中也要保持Application不使用优化。

同时,如果VCamera里面的引用到的类找不到也会导致VCamera类出问题,类之间的依赖关系也需要保证。

建议使用 -suggest-split 和 -suggest-keep,全局 keep和split配置起来会很麻烦。

i91h1r commented 7 years ago

@ceabie 但是我打包之后查看apk 里面的dex ,这个两个类是在第一个dex里面的啊。

ceabie commented 7 years ago

MultiDex 初始化了没有?检查下生成的maindexlist.txt。因为个人的具体情况不一样,我也不能帮你具体解决。或者在产品不受影响的情况下把maindexlist.txt发到我邮箱:ceabie@gmail.com