java.lang.NoClassDefFoundError: resolución fallida de: Lorg/apache/http/ProtocolVersion
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
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'
}
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.xml
dentro de la <application>
etiqueta:
<uses-library android:name="org.apache.http.legacy" android:required="false" />
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.
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" />
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>