0

After upgrading to Android Studio Flamingo using JDK 17 and AGP 8 I'm getting this error:

ERROR: R8: Library class android.net.http.AndroidHttpClient implements program class org.apache.http.client.HttpClient

Here's my build.gradle(app)

android {
    compileSdkVersion 33
    buildToolsVersion "33.0.2"
    
    buildTypes {
        release {
            debuggable false
            minifyEnabled true
            zipAlignEnabled true
        }
    }
}

Here's my build.gradle(app)

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:8.0.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.20"
        classpath 'com.google.gms:google-services:4.3.14'
        classpath "io.insert-koin:koin-gradle-plugin:$koin_version"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$navigation_version"
        classpath "com.google.protobuf:protobuf-gradle-plugin:$proto_buf_version"
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
    }
}

After running ./gradlew buildEnvironment couldn't find any usages of org.apache.http.client.HttpClient

Any suggestions would be very appreciated.

  • 1
    The error means that your dependencies have `org.apache.http.client.HttpClient` somewhere, either directly or in a transitively. However, this particular check has not changed in R8 for quite some time, so you should have gotten that with e.g. AGP 7.4.2 as well. You can file an issue with a [compiler dump](org.apache.http.client.HttpClient) (if you can share that, you can also share it privately with sgjesse@google.com) on https://issuetracker.google.com/issues/new?component=326788. You can look in the `program.jar` in the compiler dump to see all R8 input classes for yourself. – sgjesse Apr 21 '23 at 07:53

2 Answers2

2

I got the same error. & these exclude group helped.

    implementation ('com.google.http-client:google-http-client-gson:1.26.0'){
        exclude group: 'org.apache.httpcomponents'
    }
    implementation('com.google.api-client:google-api-client-android:1.26.0') {
        exclude group: 'org.apache.httpcomponents'
    }
    implementation('com.google.apis:google-api-services-drive:v3-rev173-1.25.0') {
        exclude group: 'org.apache.httpcomponents'
    }

If it still doesn't work, also add this to proguard-rules.pro

-keep class org.apache.** { *; }

Also add to gradle.properties

android.enableR8.fullMode=false

Just make sure to check that the genarated signed bundle works properly or not. Because I'm facing many problems with AGP 8.0.0 breaking change too.

Tieria
  • 333
  • 3
  • 11
0

I'm dealing with a legacy project that contains a lot of libraries and it would be very difficult to chase down all libraries that would face problems on R8/Proguard migrations.

What helped me was adding this to my proguard file:

-dontwarn org.apache.httpcomponents
-dontwarn com.google.protobuf.java_com_google_android_gmscore_sdk_target_granule__proguard_group_gtm_N1281923064GeneratedExtensionRegistryLite$Loader
-dontwarn javax.naming.NamingEnumeration
-dontwarn javax.naming.NamingException
-dontwarn javax.naming.directory.Attribute
-dontwarn javax.naming.directory.Attributes
-dontwarn javax.naming.directory.DirContext
-dontwarn javax.naming.directory.InitialDirContext
-dontwarn android.content.res.XmlResourceParser
-dontwarn android.net.http.AndroidHttpClient
-dontwarn com.google.firebase.iid.FirebaseInstanceId
-dontwarn javax.naming.ldap.LdapName
-dontwarn javax.naming.ldap.Rdn
-dontwarn javax.servlet.ServletContextEvent
-dontwarn javax.servlet.ServletContextListener
-dontwarn org.apache.avalon.framework.logger.Logger
-dontwarn org.apache.log.Hierarchy
-dontwarn org.apache.log.Logger
-dontwarn org.apache.log4j.Level
-dontwarn org.apache.log4j.Logger
-dontwarn org.apache.log4j.Priority
-dontwarn org.ietf.jgss.GSSContext
-dontwarn org.ietf.jgss.GSSCredential
-dontwarn org.ietf.jgss.GSSException
-dontwarn org.ietf.jgss.GSSManager
-dontwarn org.ietf.jgss.GSSName
-dontwarn org.ietf.jgss.Oid
-dontwarn javax.naming.InvalidNameException

I'll add them to the force exclude group on my next tests and post the results here. Thanks, everyone!