java.lang.NoClassDefFoundError: অ্যান্ড্রয়েড / গ্রাফিক্স / অঙ্কনযোগ্য / আইকন


95

এখনও আমি এই ত্রুটিটি কেবলমাত্র একজন ব্যবহারকারীর জন্য পেয়েছি, যিনি একটি মূলযুক্ত ফোন ব্যবহার করেন (এসএম-জি 900আর অ্যান্ড্রয়েড 4.4.2)। ত্রুটিটি এরকম:

Fatal Exception: java.lang.NoClassDefFoundError: android/graphics/drawable/Icon
       at java.lang.Class.getDeclaredMethods(Class.java)
       at java.lang.Class.getDeclaredMethods(Class.java:656)
       at android.view.ViewDebug.getExportedPropertyMethods(ViewDebug.java:960)
       at android.view.ViewDebug.exportMethods(ViewDebug.java:1047)
       at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:997)
       at android.view.ViewDebug.dumpViewProperties(ViewDebug.java:983)
       at android.view.ViewDebug.dumpView(ViewDebug.java:900)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:870)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dumpViewHierarchy(ViewDebug.java:867)
       at android.view.ViewDebug.dump(ViewDebug.java:793)
       at android.view.ViewDebug.dispatchCommand(ViewDebug.java:416)
       at android.view.ViewRootImpl$W.executeCommand(ViewRootImpl.java:6258)
       at android.view.IWindow$Stub.onTransact(IWindow.java:65)
       at android.os.Binder.execTransact(Binder.java:404)
       at dalvik.system.NativeStart.run(NativeStart.java)

আমি আমার কোডটিতে কখনও অ্যান্ড্রয়েড.গ্রাফিক্স.ড্রেডেবল.আইকনটি ব্যবহার করি না, সমস্ত ব্যবহারের হয় android.support.v4.graphics.drawable.IconCompatএবং আমি কখনও এই কোডটি আমার কোডে ব্যবহার করি না ...

আমার সাপোর্ট লাইব্রেরিটি বিটিডব্লিউ version 26.0.0, my minSdkVersion is 15 targetSdkVersion is 26.

ধন্যবাদ


4
আমার জন্য একই সমস্যা। একই মূলযুক্ত ডিভাইস, একই অ্যান্ড্রয়েড সংস্করণ। আপনি কি সমাধান খুঁজে পেয়েছেন?
ক্রিস

24
আমাকে অনুমান করতে দাও? স্যামসাং ডিভাইসগুলি অ্যান্ড্রয়েড 4 চালাচ্ছে?
নোমান রফিক

7
@ নোমানআরফিক স্যামসাং এস 5, 4.4.2, মূলযুক্ত।
Vaiden স্বাগতম

4
আমি একই জিনিসটি অনুভব করছি, একই ডিভাইস ক্র্যাশলিটসের মাধ্যমে রিপোর্ট করা হয়েছে। প্রায় প্রতিটি নতুন সংস্করণ এবং প্রায় প্রকাশের পরে একটি উদাহরণ। আমার অ্যাপ্লিকেশনটিতে মাল্টিডেক্স রয়েছে।
djxstream

6
গুগল ইস্যু ট্র্যাকার: ইস্যুজেট্র্যাকার জিইএল
বিবিসি

উত্তর:


40

হালনাগাদ

সমস্যাটি সমর্থন লাইব্রেরিতে 27.0.0 এ স্থির করা হয়েছে। আপনি আপডেট হলে compileSdkVersion 27পাশাপাশি পরিবর্তন করতে ভুলবেন না ।

কি হচ্ছে?

অ্যান্ড্রয়েড with.৪ সহ স্যামসাং ডিভাইসগুলি এ জাতীয় ক্রাশ হয় যখন Viewশ্রেণিপথগুলিতে নেই এমন ধরণের প্যারামিটারগুলি ফিরে আসে বা এমন প্যারামিটার নেয় এমন পদ্ধতিগুলি সংজ্ঞায়িত করে classes

সমর্থন গ্রন্থাগার সংস্করণ 25.4.0 থেকে শুরু করে AppCompatImageViewএবং AppCompatImageButtonভুল ওভাররাইড setImageIcon(Icon)পদ্ধতি। যেহেতু Iconএপিআই 23 তে ক্লাস চালু হয়েছিল অ্যাপ্লিকেশন 19 এ স্যামসাং ডিভাইসগুলিতে অ্যাপ ক্র্যাশ হয়ে গেছে।

আপনি ওভাররাইড করার চেষ্টা করার সময় অনুরূপ জিনিস ঘটে View.onApplyWindowInsets(WindowInsets)

সমর্থন লাইব্রেরির জন্য কর্মসংস্থান 26.1.0

এটি সরকারী পদ্ধতিতে স্থির না হওয়া পর্যন্ত, আপনি যদি সমর্থন লাইব্রেরির পুরানো সংস্করণটির সাথে আটকে থাকেন তবে আমি appcompat-v7যেখানে সমস্ত setImageIconপদ্ধতির ট্রেস সরিয়ে ফেলা হয়েছে তার একটি পরিবর্তিত সংস্করণ তৈরি করেছি। এর অর্থ এটি অ্যান্ড্রয়েড ৪.৪ সহ স্যামসায় ক্রাশ হবে না।

এটিকে আপনার অ্যাপ্লিকেশনটির বিল্ড.gradle এর নীচে রাখুন:

repositories {
    maven { url "https://dl.bintray.com/consp1racy/maven" }
}

configurations.all {
    resolutionStrategy.eachDependency { details ->
        def requested = details.requested
        if (requested.group == 'com.android.support' && requested.name == 'appcompat-v7') {
            details.useTarget 'net.xpece.android:support-appcompat-v7-fixed:26.1.0-1'
        }
    }
}

এই কোডটি appcompat-v7বর্ণিত পরিবর্তিত নিদর্শনগুলির সাথে নির্ভরতা প্রতিস্থাপন করবে ।

বর্তমানে ফিক্সের একমাত্র সমর্থিত সংস্করণটি 26.1.0।

সতর্কতা: অনুলিপি-পেস্ট করার আগে কোডটি বুঝুন এবং অজানা উত্স থেকে কোড পাওয়ার সময় সর্বদা সতর্কতা অবলম্বন করুন!


যদি আমাকে সমর্থন লাইব্রেরিটি> 26.1.0 এ আপডেট করতে হবে তবে ভবিষ্যতে কী হবে? আমি মনে করি আপনার সংশোধন অপ্রচলিত হবে, তাই না?
ডিকা

4
@ ডিকা কোনও উদ্বেগ নয়, এটি পরবর্তী প্রকাশে স্থির করা উচিত।
ইউজেন পেচানেক

4
@ চিস্কো বিভিন্ন সমর্থন লাইব্রেরির একাধিক সংস্করণ ব্যবহার করবেন না। আমি মনে করি আপনি আপনার সমস্ত সমর্থন লিবগুলি নিরাপদে 26.1.0 এ আপডেট করতে পারেন। ফিক্সটি কেবলমাত্র সেই এক সংস্করণের জন্য প্রকাশিত হয়েছে।
ইউজেন পেচানেক

4
@ চিস্কো এটি অভ্যাসের জোর মাত্র। অনেক লোক জানেন না যে সমর্থন লাইব্রেরিগুলি পরস্পর সংযুক্ত রয়েছে এবং বিভিন্ন সংস্করণ ব্যবহার করা হলে ক্রাশ হতে পারে। আপনি নিশ্চিত যে নিশ্চিত করেছেন :)
ইউজেন পেচানেক

4
@ অ্যালেক্স আমি স্রেফ অ্যাপকম্প্যাট 27.0.0 এর উত্স দিয়ে গিয়েছি এবং এটি সঠিক। দুটি বিকল্প: 1) আপনি এখনও পুরানো সমর্থন লাইব্রেরি ব্যবহার করছেন। আপনার সমাধানিত নির্ভরতা পরীক্ষা করুন। 2) একই ব্যতিক্রম অন্য কোথাও নিক্ষেপ করা হয় এবং ভিন্ন শ্রেণীর কারণে। আপনি কি ক্র্যাশ রিপোর্ট বা স্ট্যাক ট্রেস ভাগ করতে পারেন? আমি এটার দিকে নজর রাখব.
ইউজেন পেচানেক

14

এই সমস্যাটি সমর্থন লাইব্রেরি 27.0.0 এ সমাধান করা হয়েছিল :

অ্যান্ড্রয়েড গ্রেডল প্লাগিন 3.x:

implementation 'com.android.support:appcompat-v7:27.0.0'
implementation 'com.android.support:support-v4:27.0.0'

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 2.x:

compile 'com.android.support:appcompat-v7:27.0.0'
compile 'com.android.support:support-v4:27.0.0'

নোট করুন যে আপনাকে এসডিকে স্তরের 27 এর বিপরীতেও সংকলন করতে হবে।


1

সমর্থন লাইব্রেরির 25.4.0 সংস্করণ সম্পর্কিত এই ক্রাশ।

25.3.1 সংস্করণ ব্যবহার করুন ।

প্রতিস্থাপন

compile 'com.android.support:appcompat-v7:25.4.0'
compile 'com.android.support:support-v4:25.4.0'

সঙ্গে:

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:support-v4:25.3.1'

উল্লেখযোগ্য যে এটি আপনাকে লক করে দেয় compileSdkVersion 25, কোনও অ্যান্ড্রয়েড ও এপিআই এবং কোনও সমর্থন লাইব্রেরি বৈশিষ্ট্য 25.4.0 থেকে চালু করা হয়নি (যেমন চিত্রের দৃশ্য আঁকতে সক্ষম এবং ভেক্টর পাথ মোর্ফিং ব্যাকপোর্টকে টিন্ট করা)। এখানে সমর্থন লাইব্রেরি
চেঞ্জলগ

-1

এখানে 2 টি বিকল্প রয়েছে:

  1. আপনি কি সমর্থন লাইব্রেরির সংস্করণ পরিবর্তন করেছেন? এটি বেশ ক্লাসিক লাইব্রেরির ইস্যু যখন সংস্থানগুলি কখনও কখনও একই নামের সাথে বা 'সংরক্ষণ করা হয় না'। এটি আপনি নয়, এর গুগল। সমর্থন lib 25 ব্যবহার করার চেষ্টা করুন এবং দেখুন এই ত্রুটিটি এখনও ঘটে কিনা।
  2. প্রকল্পটি পরিষ্কার করে পুনর্নির্মাণের চেষ্টা করুন। হতে পারে আপনি আপনার বিল্ড ফোল্ডারে কিছু পুরানো লাইব্রেরি সংস্করণ রেখেছেন এবং আপনি যখন আপনার প্রকল্পটি তৈরি করেন তখন এটি এ থেকে পুরানো মানগুলি নিয়ে যায়।

4
উত্তরের জন্য আপনাকে ধন্যবাদ, ২. আমি বহুবার পূর্ণ গ্রেড ক্লিয়ার করেছি। 1 এর জন্য। আমার টার্গেটএসডিপি ভার্সনটি 26, অ্যান্ড্রয়েড স্টুডিও শোতে সতর্ক করে দিয়েছে যে নতুন এপিআই এবং টার্গেট না করে অ্যান্ড্রয়েড স্টুডিওতে ত্রুটিও দেখায় যদি আমি টার্গেটএসডিপি ভার্সনের তুলনায় সমর্থন লিবের পুরানো সংস্করণ ব্যবহার করি।
cn123h

4
SDK এর 26. আপডেট পরে একই সমস্যা
amouly

@ cn123h আপনি সমর্থন লাইব্রেরির কোন সংস্করণ ব্যবহার করছেন?
সুফিয়ান

@ সাউলি এবং আপনার সাপোর্ট লাইব সংস্করণ?
সুফিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.