android - lang - volley didn t find class org apache http protocolversion




java.lang.NoClassDefFoundError: falha na resolução de: Lorg/apache/http/ProtocolVersion (5)

Eu encontrei esse erro quando eu uso o Android 3.1 para construir um aplicativo do Android P, o apk pode ser feito, mas quando eu uso ele no emulador do Android P, ele irá travar e jogar abaixo da informação, mais detalhes veja a imagem .

java.lang.NoClassDefFoundError: falha na resolução de: Lorg / apache / http / ProtocolVersion

parte do meu build.gradle no módulo App está abaixo, alguém atender a isso? E dar alguma sugestão? Muito Obrigado.

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'

        }

De acordo com essa resposta do SO , isso ocorre devido a um bug do AWS SDK que parece estar resolvido na versão 2.6.30 do SDK , portanto, atualizar a versão para uma versão mais recente pode ajudá-lo a corrigir o problema.


Este link android-9.0-changes-28 -> depreciação do cliente HTTP Apache explica razão para adicionar o seguinte ao seu AndroidManifest.xml:

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

Com o Android 6.0, removemos o suporte para o cliente HTTP Apache. A partir do Android 9, essa biblioteca é removida do bootclasspath e não está disponível para os aplicativos por padrão.


Se você estiver usando com.google.android.gms: play-services-maps: 16.0.0 ou abaixo e seu aplicativo estiver segmentando o nível de API 28 (Android 9.0) ou superior, inclua a seguinte declaração no elemento do AndroidManifest. xml.

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

Isso é feito se você estiver usando com.google.android.gms: play-services-maps: 16.1.0 e não é necessário se seu aplicativo estiver segmentando um nível de API mais baixo.


Siga um destes procedimentos:

1- Atualize a biblioteca play-services-maps para a versão mais recente:

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

2- Ou inclua a seguinte declaração no elemento <application> do AndroidManifest.xml .

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

Atualização: isso não é mais um bug ou uma solução alternativa, é necessário se seu aplicativo segmentar o nível 28 da API (Android 9.0) ou superior e usar o SDK do Google Maps para Android 16.0.0 ou inferior (ou se seu aplicativo usar o HTTP Apache Biblioteca legada). Está agora incluído nos documentos oficiais . A questão pública foi closed como comportamento pretendido.

Este é um bug no lado do Google Play Services, até que seja corrigido, você deve ser capaz de adicionar isso ao seu AndroidManifest.xml dentro da tag <application> :

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




android-9.0-pie