Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android proguard截击:ClassNotFoundException:Didn';“找不到类”;com.android.volley.VolleyLog“;_Java_Android_Android Volley_Proguard - Fatal编程技术网

Java Android proguard截击:ClassNotFoundException:Didn';“找不到类”;com.android.volley.VolleyLog“;

Java Android proguard截击:ClassNotFoundException:Didn';“找不到类”;com.android.volley.VolleyLog“;,java,android,android-volley,proguard,Java,Android,Android Volley,Proguard,我正在用Android创建一个库项目。 我想启用pro guard,但出现以下崩溃: Process: com.mysdk.myapplication, PID: 15629 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/volley/VolleyLog; at com.mysdk.sdk.api.b.a(Unknown Source) at com.mysdk.sdk.api.mys

我正在用Android创建一个库项目。 我想启用pro guard,但出现以下崩溃:

Process: com.mysdk.myapplication, PID: 15629
    java.lang.NoClassDefFoundError: Failed resolution of: Lcom/android/volley/VolleyLog;
    at com.mysdk.sdk.api.b.a(Unknown Source)
    at com.mysdk.sdk.api.mysdk.startmysdk(Unknown Source)
    at com.mysdk.myapplication.App.onCreate(Unknown Source)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1026)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5099)
    at android.app.ActivityThread.access$1600(ActivityThread.java:150)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1464)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:168)
    at android.app.ActivityThread.main(ActivityThread.java:5885)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:819)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:709)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.volley.VolleyLog" on path: DexPathList[[zip file "/data/app/com.mysdk.myapplication-1/base.apk"],nativeLibraryDirectories=[/data/app/com.mysdk.myapplication-1/lib/arm64, /vendor/lib64, /system/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    at com.mysdk.sdk.api.b.a(Unknown Source) 
    at com.mysdk.sdk.api.mysdk.startmysdk(Unknown Source) 
    at com.mysdk.myapplication.App.onCreate(Unknown Source) 
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1026) 
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5099) 
    at android.app.ActivityThread.access$1600(ActivityThread.java:150) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1464) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:168) 
    at android.app.ActivityThread.main(ActivityThread.java:5885) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:819) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:709) 
Suppressed: java.lang.ClassNotFoundException: com.android.volley.VolleyLog
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
    ... 14 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
在我的库项目中,我有一个proguard-rules.pro文件,配置如下:

-keep class com.android.volley.** { *; }
-keep interface com.android.volley.** { *; }
-keepclassmembers class com.android.volley.VolleyLog { *; }
-keep class org.apache.commons.logging.** { *; }
我在网上找到了一些解决方案(比如在我的pro-guard文件中添加apache行),但没有成功。 有什么建议吗?我错过了什么

谢谢。

说明书

-keepclassmembers class com.android.volley.VolleyLog { *; }
告诉ProGuard保留类成员(方法、字段等),但仍然让它混淆实际类的名称,这意味着它可以在APK中重命名为类似“a.a.b.a”的名称

使用类似的工具检查APK中是否包含
com.android.volley.VolleyLog
,如果没有,则将规则更改为:

-keep class com.android.volley.VolleyLog { *; }
使ProGuard保留类的名称。

指令

-keepclassmembers class com.android.volley.VolleyLog { *; }
告诉ProGuard保留类成员(方法、字段等),但仍然让它混淆实际类的名称,这意味着它可以在APK中重命名为类似“a.a.b.a”的名称

使用类似的工具检查APK中是否包含
com.android.volley.VolleyLog
,如果没有,则将规则更改为:

-keep class com.android.volley.VolleyLog { *; }

使ProGuard保留类的名称。

Android Studio的大部分即时运行功能会在不同的类名下产生此类问题,有时找不到MainApplication类。。。 我也曾多次遇到这些问题,但“清理”、“重建”和“多索引步骤”都没有解决我的问题,但当我关闭“即时运行”时,我的应用程序开始正常工作,而不是运行时崩溃或应用程序启动时崩溃

就这么做。。 检查文件-->设置-->生成、执行、部署-->即时运行
如果关闭,则启用它;如果打开,则禁用它。Android Studio的大部分即时运行功能会使用不同的类名产生此类问题,有时找不到MainApplication类。。。 我也曾多次遇到这些问题,但“清理”、“重建”和“多索引步骤”都没有解决我的问题,但当我关闭“即时运行”时,我的应用程序开始正常工作,而不是运行时崩溃或应用程序启动时崩溃

就这么做。。 检查文件-->设置-->生成、执行、部署-->即时运行 并在其关闭时启用它,或在其打开时禁用它