当我使用Android Studio构建我的应用程序时,我遇到了这个错误。APK被编译,但当我试图在Android P模拟器上运行应用程序时,它会崩溃并抛出以下错误。详情请见附件:

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

这是我的身材。级文件。如果有人对问题有什么建议,我将不胜感激。多谢。

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'
        }

当前回答

如果你使用安卓9.0的遗留jar比你必须使用。 在你的mainfest文件里。

< uses-library android: name = " org.apache.http。遗产”android:要求= " false " / >

其他回答

在你的AndroidManifest.xml中添加这两行。

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

请看下面的代码

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

做以下任何一件事:

更新play-services-maps库到最新版本:

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

或者在AndroidManifest.xml的<application>元素中包含以下声明。

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

在react本机,我有错误不显示地图和关闭应用程序,运行adb logcat和显示错误在控制台:

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

通过在androidManifest.xml中添加来修复它

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

根据这个SO的回答,它是由于AWS SDK的一个错误,该错误似乎在SDK的2.6.30版本中得到了解决,因此将版本更新到更新的版本可以帮助您解决这个问题。

如果你正在使用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" />

查看这个链接- https://developers.google.com/maps/documentation/android-sdk/config#specify_requirement_for_apache_http_legacy_library