2015-01-19 8 views
23

का उपयोग करते समय सत्यापनकर्ता लॉलीपॉप पर कक्षा को खारिज कर दिया गया है जब मैं 5.x डिवाइस पर अपनी रिलीज एपीके इंस्टॉल करता हूं तो मुझे यह त्रुटि मिलती है। त्रुटि तब नहीं होती जब मैं एंड्रॉइड स्टूडियो से एक ही कोड दबाता हूं, या यदि मैं इसे 4.x डिवाइस पर चलाता हूं।java.lang.VerifyError: रिलीज एपीके

java.lang.VerifyError: Verifier rejected class com.myapp.android.ui.activity.MainActivity$$ViewInjector due to bad method void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) (declaration of 'com.myapp.android.ui.activity.MainActivity$$ViewInjector' appears in /data/app/com.myapp.android-2/base.apk) 
     at java.lang.Class.classForName(Class.java) 
     at java.lang.Class.forName(Class.java:308) 
     at java.lang.Class.forName(Class.java:272) 
     at butterknife.ButterKnife.findInjectorForClass(ButterKnife.java:298) 
     at butterknife.ButterKnife.inject(ButterKnife.java:271) 
     at butterknife.ButterKnife.inject(ButterKnife.java:184) 
     at com.myapp.android.ui.activity.MyDrawerActivity.onCreate(MyDrawerActivity.java:31) 

मैं कक्षा में अपने टूलबार और कस्टम नेविगेशन ड्रावर इंजेक्ट करता हूं।

@InjectView(R.id.toolbar) Toolbar mToolbar; 
@InjectView(R.id.nav_drawer) MyNavigationDrawer mNavigationDrawer; 

लाइन 31:

ButterKnife.inject(this); 

वहाँ कुछ है कि Butterknife codegen साथ अलग है जब gradle assembleRelease का उपयोग कर किया जाएगा है? मैं ProGuard का उपयोग नहीं कर रहा हूँ।

# Android SDK settings 
ANDROID_BUILD_MIN_SDK_VERSION=14 
ANDROID_BUILD_TARGET_SDK_VERSION=21 
ANDROID_BUILD_SDK_VERSION=21 
ANDROID_BUILD_TOOLS_VERSION=21.1.2 

Logcat

I/art  (21354): Verification error in void com.myapp.android.ui.activity.MainActivity$$ViewInjector.inject(butterknife.ButterKnife$Finder, com.myapp.android.ui.activity.MainActivity, java.lang.Object) 
I/art  (21354): void com.myapp.android.ui.activity.MainActivity$$ViewInjector.inject(butterknife.ButterKnife$Finder, com.myapp.android.ui.activity.MainActivity, java.lang.Object) failed to verify: register v4 has type Reference: com.myapp.android.ui.activity.MainActivity but expected Reference: com.myapp.android.ui.activity.LoggedInNavActivitya.lang.Object): [0x0] 
I/art  (21354): Verification error in void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) 
I/art  (21354): void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) failed to verify: register v1 has type Reference: com.myapp.android.ui.activity.MainActivity but expected Reference: com.myapp.android.ui.activity.LoggedInNavActivity 
E/art  (21354): Verification failed on class com.myapp.android.ui.activity.MainActivity$$ViewInjector in /data/app/com.myapp.android-1/base.apk because: Verifier rejected class com.myapp.android.ui.activity.MainActivity$$ViewInjector due to bad method void com.myapp.android.ui.activity.MainActivity$$ViewInjector.reset(com.myapp.android.ui.activity.MainActivity) 
+0

आप logcat उत्पादन दिखा सकते हैं? अपवाद से पहले लॉग में कुछ अतिरिक्त जानकारी हो सकती है। (Dalvik में था, यकीन नहीं है कि कला क्या दिखाता है।) – fadden

+0

मैंने लॉग जोड़ा जो त्रुटि से ठीक पहले दिखाई देता है। मुझे तुरंत एक समस्या दिखाई देती है। लाइन 2 'लॉग इनइन एनएवीएक्टिविटी' नामक एक अभिभावक वर्ग को दिखाता है, 'ए' वास्तविक नाम में नहीं है। अन्य चमकदार मुद्दा यह है कि 'LoggedInNavActivity' अब मेरे कोडबेस में भी नहीं है ... मैंने थोड़ी देर पहले उस फ़ाइल को हटा दिया था। –

उत्तर

55

बाहर सफाई build फ़ोल्डर समस्या हल हो:

यहाँ मेरी अन्य Android निर्माण सेटिंग नहीं है। निश्चित नहीं है कि एआरटी को कोई मुद्दा क्यों था लेकिन दलविक ने नहीं किया।

एक ग्रेडिंग clean कार्य चलाना मेरे build फ़ोल्डर को सभी तरह से साफ़ नहीं कर रहा था। मुझे इसे मैन्युअल रूप से करना था, लेकिन clean कुछ लोगों के लिए काम कर सकता है।

+6

इसे कई बार कोशिश की, लेकिन मदद नहीं करता है। – Alexander

+2

यदि साफ़ प्रोजेक्ट काम नहीं करता है, तो फ़ाइल -> अमान्य कैश/पुनरारंभ करें ... -> अमान्य करें और – Pelanes

9

मेरे मामले में, कारण थोड़ा अलग था।

जाहिर है, एक try/catch ब्लॉक के अंदर एक synchronized बयान डाल VerifyError रूप here on SO सूचना दी और official bug tracker पर कारण बनता है,।

+0

+1 पुनरारंभ करें। इसने मेरी समस्या हल की और मुझे यकीन है कि आपके उत्तर के बिना आसानी से रूट कारण नहीं मिला होगा। आपका बहुत बहुत धन्यवाद! – dbm

1

मेरे मामले में, कारण प्रोजेक्ट है। सैमसंग नोट 3 पर मेरा ऐप शटडाउन एंड्रॉइड 5.0 है।
मैं android-async-http-1.4.9.jar आयातित, ProGuard है:

-dontwarn com.loopj.android.http.** 
-keep class com.loopj.android.http.**{*;} 

यह पर्याप्त नहीं है। मैंने जोड़ा:

-dontwarn cz.msebera.** 
-keep class cz.msebera.**{*;} 

बग चला गया।

इसलिए यदि आप इस बग में आते हैं, तो गहरे बैठे कारण शायद स्पष्ट नहीं हैं, यह प्रोजेवार्ड फ़ाइल को नोट किया जाना है।

0

मुझे एक ही समस्या GoogleTagManager द्वारा फेंक दी गई थी।

java.lang.VerifyError: Verifier rejected class com.google.android.gms.tagmanager.TagManager: com.google.android.gms.common.api.PendingResult com.google.android.gms.tagmanager.TagManager.loadContainerDefaultOnly(java.lang.String, int) failed to verify: com.google.android.gms.common.api.PendingResult com.google.android.gms.tagmanager.TagManager.loadContainerDefaultOnly(java.lang.String, int): [0x11] returning 'Reference: com.google.android.gms.tagmanager.zzp', but expected from declaration 'Reference: com.google.android.gms.common.api.PendingResult'

यह विलय के बाद हुआ। मेरे कॉलेज ने लाइब्रेरी को 10.0.1 से 10.2.1 पर अपडेट किया। स्वच्छ निर्माण काम नहीं किया।

समय की बाधाओं के कारण, मैं पुराने संस्करण में रोलबैक करता हूं, और यह काम करता है।

1

मेरे मामले में, मैंने बस "बिल्ड, निष्पादन, परिनियोजन" सेटिंग्स से "त्वरित रन" विकल्प अक्षम कर दिया। दुर्भाग्य से एंड्रॉइड स्टूडियो फीचर "इंस्टेंट रन" अभी भी स्थिर होने से बहुत दूर है ...

ऐसा करने के लिए:

  1. "फ़ाइल"> "सेटिंग"> "निर्माण, निष्पादन, तैनाती"> "त्वरित रन"
  2. बॉक्स को अनचेक करने के लिए जाना "त्वरित भागो सक्षम करें ..." और "ठीक" बटन पर क्लिक करें
1

मेरे मामले में त्रुटि संदेश कहा गया था कि 'बुरा' था, कुछ अज्ञात दोष थे। कोटलिन लैम्ब्डा से नियमित लूप में बदलकर मेरी समस्या हल हो गई।

से पहले (त्रुटि के साथ):

fun validZipCode(zipcode: String): Boolean { 
    val validRegexes = arrayOf(
      "0[0-9]{1}[0-9]{2}", 
      "1[0-2]{1}[0-9]{2}", 
      "1[3-4]{1}[0-9]{2}", 
      "19[0-9]{2}", 
      "2[0-1]{1}[0-9]{2}" 
    ) 
return validRegexes.any { zipcode.matches(it.toRegex()) } 

के बाद:

fun validZipCode(zipcode: String): Boolean { 

    val validRegexes = arrayOf(
      "0[0-9]{1}[0-9]{2}", 
      "1[0-2]{1}[0-9]{2}", 
      "1[3-4]{1}[0-9]{2}", 
      "19[0-9]{2}", 
      "2[0-1]{1}[0-9]{2}" 
    ) 

    for (regex in validRegexes) { 
     if (zipcode.matches(regex.toRegex())) { 
      return true 
     } 
    } 

    return false 
} 
+0

मुझे stdlib कार्यों के साथ एक ही समस्या थी। – urgentx

संबंधित मुद्दे