java.lang.NoClassDefFoundError: сбой при разрешении: Lorg / apache / http / ProtocolVersion - PullRequest
0 голосов
/ 22 мая 2018

Я встречал такую ​​ошибку, когда я использую Android studio 3.1 для создания приложения для Android P, можно сделать apk, но когда я использую его на эмуляторе Android P, он вылетит и выдаст ниже информацию, более подробная информациясм. изображениемой build.gradle под модулем приложения находится ниже, кто-нибудь встречал это? И дать некоторые предложения?Большое спасибо.

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'

        }

Ответы [ 8 ]

0 голосов
/ 19 августа 2019

Если вы используете Android 9.0 с устаревшим jar, чем вы должны использовать.в вашем файле mainfest.

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

0 голосов
/ 12 марта 2019

Для идеального запуска org.apache.http.legacy в Android 9.0 Pie создайте 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>

и добавьте 2 тега тега в свой AndroidManifest.xml

android: networkSecurityConfig = "@ xml / network_security_config" android: name = "org.apache.http.legacy"

<?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' в сборку приложения

android {
compileSdkVersion 28
defaultConfig {
    applicationId "your application id"
    minSdkVersion 15
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    useLibrary 'org.apache.http.legacy'
}
0 голосов
/ 02 июля 2019

Согласно этому SO-ответу , это происходит из-за ошибки AWS SDK, которая, по-видимому, устранена в версии 2.6.30 SDK , поэтому обновление версии до более новой, может помочь вам решить проблему.

0 голосов
/ 21 февраля 2019

Если вы используете com.google.android.gms: play-services-maps: 16.0.0 или ниже, и ваше приложение ориентировано на API уровня 28 (Android 9.0) или выше, вы должны включить в элемент следующее объявлениеAndroidManifest.xml.

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

Это обрабатывается для вас, если вы используете com.google.android.gms: play-services-maps: 16.1.0, и не требуется, если ваше приложение нацелено наболее низкий уровень API.

0 голосов
/ 12 февраля 2019

Выполните любое из следующих действий:

1 - обновите библиотеку play-services-maps до последней версии:

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" />
0 голосов
/ 18 декабря 2018

Эта ссылка android-9.0-changes-28 -> Устаревание HTTP-клиента Apache объясняет причину добавления следующего в ваш AndroidManifest.xml:

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

СВ Android 6.0 мы убрали поддержку HTTP-клиента Apache.Начиная с Android 9, эта библиотека удаляется из пути загрузки и по умолчанию недоступна для приложений.

0 голосов
/ 10 июня 2018

Обновление: это больше не ошибка или обходной путь, это требуется, если ваше приложение предназначено для API уровня 28 (Android 9.0) или выше и использует Google Maps SDK для Android 16.0.0 или ниже(или если ваше приложение использует библиотеку Apache HTTP Legacy).Теперь он включен в официальные документы .Публичная проблема была закрыта как и предполагалось.

Это ошибка на стороне Сервисов Google Play, пока она не будет устранена,должен быть в состоянии обойти, добавив это к AndroidManifest.xml внутри тега <application>:

<uses-library android:name="org.apache.http.legacy" android:required="false" />
0 голосов
/ 07 июня 2018

Это также сообщается на трекере ошибок Android: https://issuetracker.google.com/issues/79478779

...