অ্যান্ড্রয়েড গুগল java.lang.NoClassDefFoundError: এর ব্যর্থ রেজোলিউশন: লর্গ / অ্যাপাচি / HTTP / প্রোটোকল ভার্সন


208

আমি গুগল ম্যাপস অ্যান্ড্রয়েড এসডিকে ১১..6.২ ব্যবহার করছি (এছাড়াও 15.0.1 ব্যবহার করে দেখেছি), তবে মানচিত্র প্রদর্শন করার আগে আমি নিম্নলিখিত ক্রাশটি পেয়েছি। ম্যানিফেস্টে ইতিমধ্যে পরীক্ষিত এপিআই কীটি এটি উপলব্ধ। তবে এখনও এই সমস্যাটি দেখা দেয়। আমার কাছে টার্গেটএসডিকে সংস্করণটি 28 হিসাবে রয়েছে কারণ এটি এই সমস্যার কারণ হয়ে থাকে।

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion;
        at el.b(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):3)
        at ek.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):4)
        at em.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):51)
        at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):11)
        at dw.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):16)
        at dw.run(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):61)
     Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.http.ProtocolVersion" on path: DexPathList[[zip file "/system/priv-app/PrebuiltGmsCorePi/app_chimera/m/MapsDynamite.apk"],nativeLibraryDirectories=[/data/user_de/0/com.google.android.gms/app_chimera/m/00000036/MapsDynamite.apk!/lib/armeabi-v7a, /data/user_de/0/com.google.android.gms/app_chimera/m/00000036/MapsDynamite.apk!/lib/armeabi, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at ad.loadClass(:com.google.android.gms.dynamite_dynamiteloader@12848063@12.8.48 (100408-196123505):25)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at el.b(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):3) 
        at ek.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):4) 
        at em.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):51) 
        at com.google.maps.api.android.lib6.drd.ap.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):11) 
        at dw.a(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):16) 
        at dw.run(:com.google.android.gms.dynamite_mapsdynamite@12848063@12.8.48 (100408-196123505):61) 

ইতিমধ্যে ডিফল্টকনফিগ
রামপ্রসাদ

6
এই সমস্যাটি অ্যান্ড্রয়েড পিতে ঘটে ... অ্যান্ড্রয়েড 5
রামপ্রসাদ

1
এই খুব পেয়েছিলাম, এটি শুধুমাত্র অ্যান্ড্রয়েড পি বিটা 2. ঘটে
হ্যাম

আমিও এই ত্রুটি পেয়েছি। অ্যান্ড্রয়েড স্টুডিও এবং এর এমুলেটর ব্যবহার করে।
ফ্র্যাঙ্কলিওও

15
এপিআই স্তরের 28 (অ্যান্ড্রয়েড 9.0) এ এই ত্রুটিটি যারা দেখেছেন তাদের, গুগল ম্যাপস ডক্স এখন প্রয়োজনীয় ম্যানিফেস্ট এন্ট্রি বর্ণনা করে
বব স্নাইডার

উত্তর:


495

এটি ম্যানিফেস্ট <application>ট্যাগে রাখুন :

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

আরও তথ্য: https://issuetracker.google.com/issues/79478779


9
এটি সমস্যার সমাধান করেছে। যদিও কেন এটি প্রয়োজন তা পুরোপুরি বুঝতে পারছেন না। আমি ব্যবহৃত মানচিত্রের ক্রিয়াকলাপটি সমস্ত নিয়মিত মনে হয়েছিল ..
ফ্র্যাঙ্কলিওও

8
অ্যান্ড্রয়েড 9.0 ইতিমধ্যে প্রকাশিত হয়েছে এবং গুগল এখনও মানচিত্রের গ্রন্থাগারটি স্থির করেনি, এটির জন্য এই লাইব্রেরিটির প্রয়োজনও নথিভুক্ত করেনি। খুব দরিদ্র দেব সমর্থন।
Headvk

41
@ হেডএসভেক গুগল এটি নথিভুক্ত করেছে, দেখুন: বিকাশকারীদের.
হাম

তবুও,
অ্যাপাডে

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/message/BasicNameValuePair;আমি অ্যান্ড্রয়েডএক্সে স্যুইচ করার পরে এটিও ঠিক করা হয়েছে (এবং পরবর্তী 65 কে পদ্ধতি সীমাবদ্ধতা বৃদ্ধি করে)
কোথাও

41

এটি আপনার ক্র্যাশ সমাধান করবে। ম্যানিফেস্টে এটি প্রয়োগ করুন

 <application
             ...
             >
             ...
          <uses-library android:name="org.apache.http.legacy" 
           android:required="false"/>
             ...


<application/>

1
কি জন্য android:usesCleartextTraffic="true"ভাল? অন্যান্য উত্তরগুলি এই রেখার উল্লেখ করে না। তাই optionচ্ছিক?
টিমো বোহর

1
@ টিমোবাহার এটি উত্তরের অংশ নয়। উত্তর হ্যাম মেন্টোনড, হ'ল নিকির উত্তরটি আরও স্পষ্ট করে তোলে তা দেখানোর জন্য যে আপনার অ্যাপ্লিকেশন ট্যাগের মধ্যে এই লাইনটি প্রবেশ করা উচিত।
ব্যাটম্যাচি

@ টিমোবহর ইস্যুটিও android:usesCleartextTraffic="true"ইস্যুটি যে আপনি পরে পাবেন, এটি সুরক্ষার উদ্দেশ্যে।
লেস্টার এল।

@ লেস্টার.এল যদি আমি ঘোষণা করি যে android:usesCleartextTraffic=”true”এটি ক্লিয়ারটেক্সট HTTP লিঙ্কগুলির সাথে যোগাযোগ করতে দেয় - তবে এটি স্থিতিশীল। আমি যতদূর বুঝতে পেরেছি ততই android:usesCleartextTraffic=”false”অ্যাপ্লিকেশনটিকে আরও "সুরক্ষিত" করে তুলবে। আমি ভুল হলে আমাকে সংশোধন করুন।
টিমো বোহর

1
আমি এটি সরিয়েছি। এটির সাথে নিজের উত্তর দেওয়ার কোনও কিছুই নেই এবং কেউ যদি এটি অনুলিপি করে পেস্ট করে তবে সম্ভবত কিছু সুরক্ষা লঙ্ঘন করতে হবে।
জেরাবাকজাকুব

16

নিম্নলিখিত সমাধানগুলির মধ্যে একটি করুন:

1- প্লে-পরিষেবা-মানচিত্রের লাইব্রেরিকে সর্বশেষ সংস্করণে আপডেট করুন:

com.google.android.gms:play-services-maps:16.1.0

2- বা এর <application>উপাদানগুলির মধ্যে নিম্নলিখিত ঘোষণাটি অন্তর্ভুক্ত করুন AndroidManifest.xml

<uses-library
      android:name="org.apache.http.legacy"
      android:required="false" />

উভয় সমাধানই এই গুগল ডক দ্বারা সমর্থিত: developers.google.com/maps/docamentation/android-sdk/…
অ্যান্ডি

9

যদি আপনার অ্যাপ্লিকেশনটি API এর স্তরের 28 (অ্যান্ড্রয়েড 9.0) বা তত্সহ উপরে লক্ষ্য করে থাকে তবে আপনার অবশ্যই <application>AndroidManLive.xML এর উপাদানটির মধ্যে নিম্নলিখিত ঘোষণাকে অন্তর্ভুক্ত করবেন ।

 <uses-library
       android:name="org.apache.http.legacy"
  android:required="false" />

4

যদি আপনার অ্যাপ্লিকেশনটি API এর স্তরের 28 (অ্যান্ড্রয়েড 9.0) বা তত্সহ উপরে লক্ষ্য করে থাকে তবে আপনাকে অবশ্যই AndroidManLive.xML এর উপাদানটির মধ্যে নিম্নলিখিত ঘোষণাকে অন্তর্ভুক্ত করতে হবে। নীচের লিঙ্কে 28+ টার্গেট করে অ্যাপের আচরণগত পরিবর্তনগুলি দেখুন

https://developer.android.com/about/versions/pie/android-9.0-changes-28 https://developer.android.com/about/versions/pie/android-9.0-changes-28


0

যদি এটি অ্যান্ড্রয়েড 8.0 বা তারও বেশি হয়ে থাকে তবে কেবল এই প্রকাশটি আপনার ট্যাগ প্রয়োগ করুন in

<uses-library android:name="org.apache.http.legacy" android:required="false"/>

0

টিস সেট করুন:

multiDexEnabled true

এটার মত:

android {
    compileSdkVersion 28
    defaultConfig {

        multiDexEnabled true

    }
    buildTypes {
        release {

        }
    }
}

0

ম্যানিফেস্ট ফাইলে অনুমতি যুক্ত করুন

`<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION."/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>`

এবং অংশে কোড এই লাইন রাখুন

` <uses-library android:name="org.apache.http.legacy" android:required="false"/>`

আমারও একই সমস্যা ছিল এবং এটি এর দ্বারা স্থির হয়েছিল।



0

একটি এক্সএমএল ফাইল তৈরি করুন / এক্সএমএল / নেটওয়ার্ক_সিকিউরিটি_কনফিগ.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
      <base-config cleartextTrafficPermitted="true">
       <trust-anchors>
        <certificates src="system" />
       </trust-anchors>
      </base-config>
    </network-security-config>

এবং আপনার অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএলে 2 টি ট্যাগ ট্যাগ যুক্ত করুন

<?xml version="1.0" encoding="utf-8"?>
 <manifest......>
  <application android:networkSecurityConfig="@xml/network_security_config">
   <activity..../> 
   ......
   ......
 <uses-library
        android:name="org.apache.http.legacy"
        android:required="false"/>
</application>

আপনার অ্যাপ্লিকেশন বিল্ড গ্রেডে useLibrary 'org.apache.http.legacy' যুক্ত করুন

defaultConfig {
        applicationId "com.ascorb"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 6
        versionName "1.2"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        useLibrary 'org.apache.http.legacy'
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.