SORU
17 Temmuz 2014, PERŞEMBE


NoClassDefFoundError: android.destek.v7.iç.görünüm.menü.MenuBuilder

Samsung cihazlarda Android v7 appcompat kütüphane 4.2 Android çalışan ile ilgili bir sorun vardır. Aşağıdaki benim Geliştirici yığın izlemesi çöküyor Konsol almaya devam ediyorum:

java.lang.NoClassDefFoundError: android.support.v7.internal.view.menu.MenuBuilder
    at android.support.v7.widget.PopupMenu.<init>(PopupMenu.java:66)
    at com.[my-package-name].CustomActivity$5.onClick(CustomActivity.java:215)
    at android.view.View.performClick(View.java:4222)
    at android.view.View$PerformClick.run(View.java:17620)
    at android.os.Handler.handleCallback(Handler.java:800)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:194)
    at android.app.ActivityThread.main(ActivityThread.java:5391)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
    at dalvik.system.NativeStart.main(Native Method)

Bu CustomActivity.java 215 çizgi vardır:

PopupMenu popup = new PopupMenu(CustomActivity.this, mImageViewMenu);

Çöküyor cihazlar, ama her zaman Samsung bir dizi geliyor, ve her zaman Android 4.2.

Hızlı bir web arama birçok kişi aynı sorunu olduğuna inanıyorum yol açar, bu sorunu çözmek için çalıştık bazı adımlar vardır:

  • Android proje özellikleri kontrol, appcompat kütüphane düzgün eklenir emin olun.
  • Java Yolunu Sipariş Oluşturmak ve proje özellikleri İhracat, Android Bağımlılıkları ve Android Özel Kütüphaneler işaretli olduğundan emin olun.
  • Kütüphanede bulunan sınıf (android.Onayla destek.v7.iç.görünüm.menü.MenuBuilder).
  • R.java android için gen dizininde bulunan onaylayın.destek.v7.appcompat.
  • AppCompat tema manifest.xml etkinliğe dahil olduğunu onaylayın.
  • Temiz ve proje yeniden oluşturun.

Bu adımlara rağmen, ve tüm diğer cihazlar ve Android sürümleri üzerinde çalışmaya rağmen kaza raporları hala geçiyor.

CEVAP
29 EKİM 2014, ÇARŞAMBA


DÜZENLEME:

Benim için çalıştı çözüm (Marathon Kullanarak) bu değiştirmek için:

-keep class android.support.v4.** { *; } 
-keep interface android.support.v4.** { *; }

-keep class android.support.v7.** { *; }
-keep interface android.support.v7.** { *; }

bu:

# Allow obfuscation of android.support.v7.internal.view.menu.**
# to avoid problem on Samsung 4.2.2 devices with appcompat v21
# see https://code.google.com/p/android/issues/detail?id=78377
-keep class !android.support.v7.internal.view.menu.**,android.support.** {*;}

Kredi google grubuna gider: https://code.google.com/p/android/issues/detail?id=78377 #138

Eski cevap (Geçici Çözüm): Bir ben, bir proje olurbu spinnerActionBar. Benim çözüm bu gibi durumlar için kontrol ve uygulama akışını değiştirmek için:

public static boolean isSamsung_4_2_2() {
    String deviceMan = Build.MANUFACTURER;
    String deviceRel = Build.VERSION.RELEASE;
    return "samsung".equalsIgnoreCase(deviceMan) && deviceRel.startsWith("4.2.2");
}

Daha sonra etkinliğin içinde onCreate yöntemi:

if (isSamsung_4_2_2()) {
    setContentView(R.layout.activity_main_no_toolbar);
} else {
    setContentView(R.layout.activity_main);
}

Bu kesin bir çözüm değildir belirttiği gibi, sadece kullanıcıların daha kalıcı bir çözüm bulmuş olsa da sınırlı işlevsellik erişmek için izin vermek için bir yoldur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • stokelycalm

    stokelycalm

    28 Aralık 2010
  • TouchePro

    TouchePro

    27 EYLÜL 2007