Search code examples
androidkotlingradlegroovyandroid-r8

Error in :app:minifyAlphaReleaseWithR8 For Android Studio Flamingo Java 17


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.


Solution

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