java.lang.NoClassDefFoundError: resolución fallida de: Lorg/apache/http/ProtocolVersion

Resuelto dukeking asked hace 54 años • 0 respuestas

Encuentro este error cuando uso Android Studio para crear mi aplicación. El APK está compilado, pero cuando intento ejecutar la aplicación en el emulador de Android P, falla y arroja el siguiente error. Consulte más detalles en los archivos adjuntos:

java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion

ingrese la descripción de la imagen aquí

Este es mi archivo build.grade. Si alguien tiene alguna sugerencia sobre cuál podría ser el problema, se lo agradecería. Muchas gracias.

android {

     compileSdkVersion 'android-P'
     buildToolsVersion '28-rc1'
   
    useLibrary 'org.apache.http.legacy'

    //for Lambda
    compileOptions {
        targetCompatibility JavaVersion.VERSION_1_8
        sourceCompatibility JavaVersion.VERSION_1_8
    }

    packagingOptions {

        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    defaultConfig {
        applicationId "xxx.xxx.xxx"
        minSdkVersion 17
        targetSdkVersion 27
        versionCode xxxx
        versionName "Vx.x.x"

        multiDexEnabled true
     

     //other setting required
        ndk {
            abiFilters 'armeabi', 'armeabi-v7a', 'armeabi-v8a', 'x86', 'x86_64', 'mips', 'mips64'
        }
dukeking avatar Jan 01 '70 08:01 dukeking
Aceptado

Actualización: esto ya no es un error ni una solución alternativa; es necesario si su aplicación tiene como objetivo el nivel API 28 (Android 9.0) o superior y usa el SDK de Google Maps para Android 16.0.0 o inferior (o si su aplicación usa Apache HTTP). Biblioteca heredada). Ahora está incluido en los documentos oficiales . La cuestión pública se ha cerrado según lo previsto.

Este es un error en el lado de los Servicios de Google Play, hasta que se solucione, deberías poder solucionarlo agregando esto AndroidManifest.xmldentro de la <application>etiqueta:

<uses-library android:name="org.apache.http.legacy" android:required="false" />
AdamK avatar Jun 09 '2018 23:06 AdamK

Este enlace android-9.0-changes-28-->Apache HTTP client desuso explica el motivo para agregar lo siguiente a su AndroidManifest.xml:

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

Con Android 6.0, eliminamos la compatibilidad con el cliente HTTP Apache. A partir de Android 9, esa biblioteca se elimina de bootclasspath y no está disponible para las aplicaciones de forma predeterminada.

Pradip Tilala avatar Dec 18 '2018 07:12 Pradip Tilala

Haga cualquiera de las siguientes cosas:

1- Actualiza la biblioteca play-services-maps a la última versión:

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

2- O incluir la siguiente declaración dentro del <application>elemento de AndroidManifest.xml.

<uses-library
      android:name="org.apache.http.legacy"
      android:required="false" />
Darush avatar Feb 12 '2019 16:02 Darush

En su AndroidManifest.xml agregue estas dos líneas.

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

Vea este código a continuación

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher"
        android:supportsRtl="true"
        android:usesCleartextTraffic="true"
        android:theme="@style/AppTheme"
        tools:ignore="AllowBackup,GoogleAppIndexingWarning">
        <activity android:name=".activity.SplashActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <uses-library android:name="org.apache.http.legacy" android:required="false"/>
    </application>
Aftab Alam avatar Feb 25 '2020 21:02 Aftab Alam