Android(安卓)SDK开发报错NoClassDefFoundError: Failed resolution of: Lcom/android/volley/toolbox/StringRequ
16lz
2022-07-31
Android SDK开发报错NoClassDefFoundError: Failed resolution of: Lcom/android/volley/toolbox/StringRequest
- 前言
- 解决方法
- 完事
前言
最近在封装sdk,里面的http请求使用了Google的Volley网络框架,在混淆打包以后,在其他工程里面运行报错,错误如下:
Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/volley/toolbox/StringRequest; at com.rdwl.rdsigmeshlib.http.RDHttp.<init>(Unknown Source:8) at com.rdwl.rdsigmeshlib.http.RDHttp$Companion.getInstance(Unknown Source:15) at com.rdwl.sigmeshdemo.activity.RegisterActivity.getCode(RegisterActivity.kt:44) at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) at android.view.View.performClick(View.java:6608) at android.view.View.performClickInternal(View.java:6585) at android.view.View.access$3100(View.java:785) at android.view.View$PerformClick.run(View.java:25921) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6861) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.volley.toolbox.StringRequest" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.rdwl.sigmeshdemo-sxexhkCXCIuH9KPUmyFfDg==/base.apk"],nativeLibraryDirectories=[/data/app/com.rdwl.sigmeshdemo-sxexhkCXCIuH9KPUmyFfDg==/lib/arm, /data/app/com.rdwl.sigmeshdemo-sxexhkCXCIuH9KPUmyFfDg==/base.apk!/lib/armeabi-v7a, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at com.rdwl.rdsigmeshlib.http.RDHttp.<init>(Unknown Source:8) at com.rdwl.rdsigmeshlib.http.RDHttp$Companion.getInstance(Unknown Source:15) at com.rdwl.sigmeshdemo.activity.RegisterActivity.getCode(RegisterActivity.kt:44) at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) at android.view.View.performClick(View.java:6608) at android.view.View.performClickInternal(View.java:6585) at android.view.View.access$3100(View.java:785) at android.view.View$PerformClick.run(View.java:25921) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6861) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
我的混淆规则比较直接,如下:
-keep class com.android.volley.** {*;}
我一直以为是我的混淆规则有问题,导致找不到这个相关类。搞了好久。。。
解决方法
比较蠢的解决方法,就是反正这个网络框架都是开源的,直接在项目里依赖完我的sdk后再依赖volley就好了。保证sdk中的volley依赖和项目中的版本号相同,这样就没问题了。
// 我的sdk包 implementation files('libs/xxxx.aar') // 依赖volley implementation 'com.android.volley:volley:1.1.1'
完事
更多相关文章
- APIDEMO PREFERENCE 学习 ACTIVTIY
- Android(安卓)无法查看外部依赖jar的源码的问题
- 整理:Android自带、第三方需要添加依赖的控件
- Android(安卓)项目混编flutter报错
- 关于android studio报错transformClassesAndResourcesWithProgua
- 报错android-apt plugin is incompatible with the Android(安卓
- 关于Android(安卓)混淆的内容总结
- Android代码混淆官方实现方法
- Android(安卓)Studio代码混淆,开启Proguard,稍微总结一下