Open
Description
What version of gRPC-Java are you using?
- 1.54.0
What is your environment?
- OS : Any
- Jdk : OpenJDK 11 / 17
- Gradle 8.0.2
- Android Gradle Plugin 7.4.2 / 8.0.0
- Kotlin 1.7.21
What did you expect to see?
- Android App build can be succeed
What did you see instead?
- App build is failed with following warnings / errors
buffers
:app:minifyProductionReleaseWithR8 FAILED
WARNING: app/build/intermediates/merged_java_res/productionRelease/base.jar:
ERROR:Missing classes detected while running R8.
Please add the missing classes or apply additional keep rules that are generated in app/build/outputs/mapping/productionRelease/missing_rules.txt.
This will become an error in AGP 8.0.
ERROR:R8:
Missing class javax.naming.NamingEnumeration (referenced from: void io.grpc.internal.JndiResourceResolverFactory$JndiRecordFetcher.closeThenThrow(javax.naming.NamingEnumeration, javax.naming.NamingException) and 1 other context)
Missing class javax.naming.NamingException (referenced from: void io.grpc.internal.JndiResourceResolverFactory$JndiRecordFetcher.closeThenThrow(javax.naming.NamingEnumeration, javax.naming.NamingException) and 4 other contexts)
Missing class javax.naming.directory.Attribute (referenced from: java.util.List io.grpc.internal.JndiResourceResolverFactory$JndiRecordFetcher.getAllRecords(java.lang.String, java.lang.String))
Missing class javax.naming.directory.Attributes (referenced from: java.util.List io.grpc.internal.JndiResourceResolverFactory$JndiRecordFetcher.getAllRecords(java.lang.String, java.lang.String))
Missing class javax.naming.directory.DirContext (referenced from: void io.grpc.internal.JndiResourceResolverFactory$JndiRecordFetcher.closeThenThrow(javax.naming.directory.DirContext, javax.naming.NamingException) and 1 other context)
Missing class javax.naming.directory.InitialDirContext (referenced from: java.util.List io.grpc.internal.JndiResourceResolverFactory$JndiRecordFetcher.getAllRecords(java.lang.String, java.lang.String))
~
Workaround
Add following rules for missing classes
-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
- It seems gRPC-java provides proguard rules for android platform, and above rules should be added for AGP 8.0