web-dev-qa-db-fra.com

Android Google maps Java.lang.NoClassDefFoundError: Echec de la résolution de: Lorg / Apache / http / ProtocolVersion

J'utilise Google maps Android SDK 11.6.2 (j'ai également essayé la version 15.0.1), mais je subis un crash après l'affichage des cartes. La clé API déjà vérifiée dans le manifeste est disponible, mais le problème persiste. J'ai la version de targetSDk en 28.Il est à l'origine de ce problème.

Java.lang.NoClassDefFoundError: Failed resolution of: Lorg/Apache/http/ProtocolVersion;
        at el.b(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):3)
        at ek.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):4)
        at em.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):51)
        at com.google.maps.api.Android.lib6.drd.ap.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):11)
        at dw.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):16)
        at dw.run(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (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@[email protected] (100408-196123505):25)
        at Java.lang.ClassLoader.loadClass(ClassLoader.Java:312)
        at el.b(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):3) 
        at ek.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):4) 
        at em.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):51) 
        at com.google.maps.api.Android.lib6.drd.ap.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):11) 
        at dw.a(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):16) 
        at dw.run(:com.google.Android.gms.dynamite_mapsdynamite@[email protected] (100408-196123505):61) 
174
Ramprasad

Mettez ceci dans le manifeste <application> tag:

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

Plus d'infos: https://issuetracker.google.com/issues/79478779

398
ham

Cela résoudra votre crash. Appliquer ceci dans manifeste

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


<application/>
33
Nicky

Effectuez l'une des solutions suivantes:

1- Mettez à jour la bibliothèque play-services-maps vers la dernière version:

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

2- Ou incluez la déclaration suivante dans l'élément <application> de AndroidManifest.xml.

<uses-library
      Android:name="org.Apache.http.legacy"
      Android:required="false" />
14
Darush

Si votre application cible une API de niveau 28 (Android 9.0) ou supérieur, vous devez inclure la déclaration suivante dans l'élément <application> d'AndroidManifest.xml.

 <uses-library
       Android:name="org.Apache.http.legacy"
  Android:required="false" />
7
Suman

Si votre application cible une API de niveau 28 (Android 9.0) ou supérieur, vous devez inclure la déclaration suivante dans l'élément AndroidManifest.xml. voir les changements de comportement de l'application ciblant les 28 ans et plus dans le lien ci-dessous

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

1
creativecoder

créer un fichier xml res/xml/network_security_config.xml

<?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>

Et ajoutez 2 balises tag dans votre AndroidManifest.xml

<?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>

Ajoutez également useLibrary 'org.Apache.http.legacy' dans le dégradé de construction de votre application.

defaultConfig {
        applicationId "com.ascorb.merazinn"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 6
        versionName "1.2"
        testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
        useLibrary 'org.Apache.http.legacy'
    }
0
Sudhir singh

Si cela se produit dans Android 8.0 ou version ultérieure, il suffit de mettre cette ligne dans la balise de votre application manifeste

<uses-library Android:name="org.Apache.http.legacy" Android:required="false"/>
0
Abdul Basit Rishi

Set tis:

multiDexEnabled true

Comme ça:

Android {
    compileSdkVersion 28
    defaultConfig {

        multiDexEnabled true

    }
    buildTypes {
        release {

        }
    }
}
0
reza_khalafi