第五篇:关于MVPArms打包混淆及报错解决

本文详细介绍了在Android开发中遇到的BaseApplication类找不到的问题及其解决方案。通过在proguard-rules.pro文件中添加特定的保留规则,解决了由ProGuard混淆引起的类丢失问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

至于普通的平常的打包混淆,网上好多教程,也就不废话了。(记得添加作者的proguard-rules.pro的混淆规则)

再在自己的proguard-rules.pro中添加

-keep class 自己的包名.app.GlobalConfiguration
-keep class 自己的包名.app.GlobalHttpHandlerImpl
-keep class 自己的包名.app.ResponseErrorListenerImpl

--原因是因为这几个类是使用反射的原理(貌似是这样,记不清)

打包成功,如果运行报错 出现   java.lang.NoClassDefFoundError 错误,就按作者给出的解决方案

       在 Android 4.4 或以下版本如果突然出现 java.lang.NoClassDefFoundError 错误, 或者 java.lang.ClassNotFoundException 异常, 以及无缘无故提示 Unable to find ConfigModule 异常, 请根据这个 解决方案 处理, 也可以尝试下这个比较 简便的方式

      如果在 Android 5.0 或以上版本出现以上问题, 请在接入 com.android.support:multidex:x.y.z 后, 在当前 Modulebuild.gradle 中加入以下代码:

dexOptions {
     javaMaxHeapSize "4g"
     jumboMode = true
     preDexLibraries = false
     additionalParameters = [
             '--multi-dex',//多分包
             '--set-max-idx-number=60000'//每个包内方法数上限
     ]
 }

这就应该可以解决大多数的报错

而我的报错,却很奇葩

 Caused by: java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.jess.arms.base.BaseApplication
        at com.tencent.bugly.beta.tinker.TinkerPatchReflectApplication.attachBaseContext(BUGLY:12)
        at android.app.Application.attach(Application.java:189)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1102)
        at android.app.Instrumentation.newApplication(Instrumentation.java:1086)
        at android.app.LoadedApk.makeApplication(LoadedApk.java:965)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5765) 
        at android.app.ActivityThread.-wrap1(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1661) 
        at android.os.Handler.dispatchMessage(Handler.java:105) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6541) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

找不到BaseApplication的类

试了好多方法就是不行,我以为是mvparms没有支持androidx(这个项目是使用androidx)。因为我记得作者因为第三方库的原因没有支持adnroidx的,不过我看到了这篇文章《AndroidStudio 一键迁移至 AndroidX》,就明白了,mvparms是支持androdx的。当我要放弃的时候,偶然看到了作者在别的文章上的回答,才恍然大悟。

在proguard-rules.pro中添加添加

-keep class com.jess.arms.base.BaseApplication

 

问题解决,项目就跑起来了。

这个问题只适合我的错误,并不能解决所有,但是给我提供了一种解决问题的方式!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值