代码之家  ›  专栏  ›  技术社区  ›  sangHoon

应用android5.1.1 Proguard后发生VerifyError。请告诉我怎么修

  •  2
  • sangHoon  · 技术社区  · 7 年前

    这是proguard规则。专业人士

    -dontwarn android.net.wifi.**
    
    -keep class android.net.wifi.** { *; }
    -keepclassmembers class android.net.wifi.** { *; }
    
    -keep  public class com.uns.patientcheck.UpdateInfoActivity$JavaScriptMethods
    -keepclassmembers  class com.uns.patientcheck.UpdateInfoActivity$JavaScriptMethods {
        <fields>;
        <methods>;
    }
    
    -dontwarn android.content.**
    -keep class android.content.Context.** { *; }
    -keepclassmembers class android.content.Context.** { *; }
    
    -dontwarn android.app.**
    -keep class android.app.** { *; }
    -keepclassmembers class android.app.** { *; }
    

    我是logcat

    03-07 16:56:53.311 14354-14354/? E/art: Verification failed on class com.uns.patientcheck.LoginActivity in /data/app/com.uns.patientcheck-2/base.apk because: Verifier rejected class com.uns.patientcheck.LoginActivity due to bad method void com.uns.patientcheck.LoginActivity.onResume()
    03-07 16:56:53.313 14354-14354/? E/AndroidRuntime: FATAL EXCEPTION: main
                                                       Process: com.uns.patientcheck, PID: 14354
                                                       java.lang.VerifyError: Verifier rejected class com.uns.patientcheck.LoginActivity due to bad method void com.uns.patientcheck.LoginActivity.onResume() (declaration of 'com.uns.patientcheck.LoginActivity' appears in /data/app/com.uns.patientcheck-2/base.apk)
                                                           at java.lang.reflect.Constructor.newInstance(Native Method)
                                                           at java.lang.Class.newInstance(Class.java:1606)
                                                           at android.app.Instrumentation.newActivity(Instrumentation.java:1066)
                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2226)
                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
                                                           at android.app.ActivityThread.access$800(ActivityThread.java:151)
                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                           at android.os.Looper.loop(Looper.java:135)
                                                           at android.app.ActivityThread.main(ActivityThread.java:5254)
                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                           at java.lang.reflect.Method.invoke(Method.java:372)
                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
    

    我试图通过应用它来解决这个问题,但我无法解决它。

    -keepclassmembers  class com.uns.patientcheck.LoginActivity {
        <fields>;
        <methods>;
        }
    

    我必须申请职业后卫。我如何解决这个问题?我是一个新手开发人员,请帮助我

    1 回复  |  直到 7 年前
        1
  •  0
  •   sangHoon    7 年前

    我解决了这个问题 问题是由于登录活动的onResume()引用的实例造成的

    -dontwarn android.content.**
    -keep public class android.content.** { *; }
    

    这就解决了

    这是一个问题,因为我没有正确阅读android studio警告。