java.lang.NoClassDefFoundError: :Lorg/apache/http/ProtocolVersion の解決に失敗しました 質問する

java.lang.NoClassDefFoundError: :Lorg/apache/http/ProtocolVersion の解決に失敗しました 質問する

Android Studio を使用してアプリをビルドするときにこのエラーが発生します。APK はコンパイルされていますが、Android P エミュレーターでアプリを実行しようとするとクラッシュし、次のエラーが発生します。詳細については、添付ファイルを参照してください。

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

ここに画像の説明を入力してください

これは私の build.grade ファイルです。問題の原因について何かアドバイスがあれば、ぜひ教えてください。よろしくお願いします。

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

ベストアンサー1

更新: これはバグや回避策ではなくなりました。アプリがAPIレベル28(Android 9.0)以上を対象とし、Android 16.0.0以下のGoogle Maps SDKを使用している場合(またはアプリがApache HTTP Legacyライブラリを使用している場合)に必要です。これは現在、公式ドキュメント公的な問題は閉まっている意図した動作です。

これはバグAndroidManifest.xmlGoogle Play Services 側では、問題が修正されるまで、タグ内に以下を追加することで回避できるはずです<application>:

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

おすすめ記事