module-info.class prevents signed builds from being generated, throws errors when building debug builds.
elliottj-accolade opened this issue · 10 comments
Here's my configuration:
Android Studio 3.4.1
Build #AI-183.6156.11.34.5522156, built on May 1, 2019
JRE: 1.8.0_152-release-1343-b01 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.14.4
Admittedly, this issue could stem from a few different sources (R8, New Relic, and this lib), but I only noticed this issue when New Relic choked on it. Verified that it was only after adding the certificate-transparency-android
lib that the error was thrown, so thought I'd start here.
06:28:58.833 [QUIET] [system.out] [newrelic.debug] [ClassTransformer] transformClassBytes: [module-info.class]
06:28:58.833 [QUIET] [system.out] [newrelic.error] Unfortunately, an error has occurred while processing an unknown class. Please copy your build logs and the jar containing this class and visit http://support.newrelic.com, thanks!
06:28:58.833 [QUIET] [system.out] null
Supposedly, the JPMS error was fixed in 3.4.0-beta, but it also depends on whether the library itself supports JPMS and/or was built with R8. Moreover, I did some research and found that module-info.class
is only supported / used in Java 9+, which Android does not currently support.
Is this something that you could fix on your side?
An update: I've submitted the build logs to New Relic to see if this something they could also fix on their side. Point still stands though that JPMS is a Java 9+ feature.
Having looked through the jar the CI build generates there is no module-info.class
being generated that I can see directly by this library.
Indeed the CI system uses Java 8.
I suspect it must be one of the dependencies the library uses, most likely bouncy castle which is necessary for processing the certificates. See bcgit/bc-java#477
Looks as though 1.62 should fix this when it is released. For the time being I can look to rolling back to 1.60.
Yes, after looking through the logs and sharing them with New Relic, it looks like BouncyCastle is generating the module-info.class
. NR is also looking into this because their android and java agents will need to handle this scenario.
@mattmook - appreciate how responsive you've been on this and my other issue.
I've been talking with the folks at New Relic about this issue, because it's their SDK that's breaking our release builds. Wanted to let you know that this is still an issue: Generatedmodule-info.class
files from JPMS, which I believe are coming from BouncyCastle are causing New Relic's Android SDK to crash:
08:07:59.095 [QUIET] [system.out] [newrelic.debug] [ClassTransformer] transformClassBytes: [module-info.class]
08:07:59.096 [QUIET] [system.out] [newrelic.error] Unfortunately, an error has occurred while processing an unknown class. Please copy your build logs and the jar containing this class and visit http://support.newrelic.com, thanks!
08:07:59.096 [QUIET] [system.out] null
08:07:59.099 [ERROR] [system.err] java.lang.IllegalArgumentException
08:07:59.100 [ERROR] [system.err] at com.newrelic.org.objectweb.asm.ClassReader.<init>(Unknown Source)
08:07:59.100 [ERROR] [system.err] at com.newrelic.org.objectweb.asm.ClassReader.<init>(Unknown Source)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.compile.InvocationDispatcher.visitClassBytesWithOptions(InvocationDispatcher.java:358)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.compile.InvocationDispatcher.visitClassBytes(InvocationDispatcher.java:351)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.compile.ClassTransformer.transformClassBytes(ClassTransformer.java:125)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.compile.ClassTransformer.processClassBytes(ClassTransformer.java:153)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.compile.ClassTransformer.transformClassFile(ClassTransformer.java:202)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.compile.ClassTransformer.transformDirectory(ClassTransformer.java:233)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.compile.ClassTransformer$transformDirectory$1.call(Unknown Source)
08:07:59.100 [ERROR] [system.err] at com.newrelic.agent.android.NewRelicTransform$_transform_closure2$_closure3.doCall(NewRelicTransform.groovy:222)
08:07:59.100 [ERROR] [system.err] at sun.reflect.GeneratedMethodAccessor439.invoke(Unknown Source)
08:07:59.100 [ERROR] [system.err] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
08:07:59.100 [ERROR] [system.err] at java.lang.reflect.Method.invoke(Method.java:498)
08:07:59.100 [ERROR] [system.err] at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
08:07:59.100 [ERROR] [system.err] at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
08:07:59.100 [ERROR] [system.err] at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
08:07:59.100 [ERROR] [system.err] at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
08:07:59.101 [ERROR] [system.err] at groovy.lang.Closure.call(Closure.java:411)
08:07:59.101 [ERROR] [system.err] at groovy.lang.Closure.call(Closure.java:427)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2296)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2281)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2322)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.dgm$186.invoke(Unknown Source)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:246)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:55)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
08:07:59.101 [ERROR] [system.err] at com.newrelic.agent.android.NewRelicTransform$_transform_closure2.doCall(NewRelicTransform.groovy:194)
08:07:59.101 [ERROR] [system.err] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
08:07:59.101 [ERROR] [system.err] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
08:07:59.101 [ERROR] [system.err] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
08:07:59.101 [ERROR] [system.err] at java.lang.reflect.Method.invoke(Method.java:498)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:104)
08:07:59.101 [ERROR] [system.err] at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:326)
08:07:59.101 [ERROR] [system.err] at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
08:07:59.102 [ERROR] [system.err] at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1041)
08:07:59.102 [ERROR] [system.err] at groovy.lang.Closure.call(Closure.java:411)
08:07:59.102 [ERROR] [system.err] at groovy.lang.Closure.call(Closure.java:427)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2296)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2281)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:2322)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.dgm$186.invoke(Unknown Source)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:246)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:55)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:115)
08:07:59.102 [ERROR] [system.err] at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:127)
08:07:59.102 [ERROR] [system.err] at com.newrelic.agent.android.NewRelicTransform.transform(NewRelicTransform.groovy:193)
08:07:59.102 [ERROR] [system.err] at com.android.build.api.transform.Transform.transform(Transform.java:302)
08:07:59.102 [ERROR] [system.err] at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:239)
08:07:59.103 [ERROR] [system.err] at com.android.build.gradle.internal.pipeline.TransformTask$2.call(TransformTask.java:235)
08:07:59.103 [ERROR] [system.err] at com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)
08:07:59.103 [ERROR] [system.err] at com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)
08:07:59.103 [ERROR] [system.err] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
08:07:59.103 [ERROR] [system.err] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
08:07:59.103 [ERROR] [system.err] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
08:07:59.103 [ERROR] [system.err] at java.lang.reflect.Method.invoke(Method.java:498)
08:07:59.103 [ERROR] [system.err] at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
08:07:59.103 [ERROR] [system.err] at org.gradle.api.internal.project.taskfactory.IncrementalTaskAction.doExecute(IncrementalTaskAction.java:47)
08:07:59.103 [ERROR] [system.err] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:41)
08:07:59.103 [ERROR] [system.err] at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:28)
08:07:59.103 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:284)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
08:07:59.104 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:273)
08:07:59.104 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:258)
08:07:59.104 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$200(ExecuteActionsTaskExecuter.java:67)
08:07:59.104 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:145)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.ExecuteStep.execute(ExecuteStep.java:49)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.CancelExecutionStep.execute(CancelExecutionStep.java:34)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:69)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.TimeoutStep.execute(TimeoutStep.java:49)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.CatchExceptionStep.execute(CatchExceptionStep.java:33)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.CreateOutputsStep.execute(CreateOutputsStep.java:50)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:43)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.SnapshotOutputStep.execute(SnapshotOutputStep.java:29)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.CacheStep.executeWithoutCache(CacheStep.java:134)
08:07:59.104 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.CacheStep.lambda$execute$3(CacheStep.java:83)
08:07:59.105 [ERROR] [system.err] at java.util.Optional.orElseGet(Optional.java:267)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:82)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.CacheStep.execute(CacheStep.java:36)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.PrepareCachingStep.execute(PrepareCachingStep.java:33)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:38)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.StoreSnapshotsStep.execute(StoreSnapshotsStep.java:23)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:96)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:89)
08:07:59.105 [ERROR] [system.err] at java.util.Optional.map(Optional.java:215)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:52)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:36)
08:07:59.105 [ERROR] [system.err] at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:34)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:91)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ResolveBuildCacheKeyExecuter.execute(ResolveBuildCacheKeyExecuter.java:79)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:45)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:94)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:56)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:55)
08:07:59.105 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
08:07:59.106 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:67)
08:07:59.106 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
08:07:59.106 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:49)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:315)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:305)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:101)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
08:07:59.106 [ERROR] [system.err] at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:49)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:43)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:355)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:343)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:336)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:322)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
08:07:59.106 [ERROR] [system.err] at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
08:07:59.106 [ERROR] [system.err] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
08:07:59.106 [ERROR] [system.err] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
08:07:59.106 [ERROR] [system.err] at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
08:07:59.107 [ERROR] [system.err] at java.lang.Thread.run(Thread.java:745)
Obviously, it's on New Relic to fix this particular bug in their SDK, but wanted to ask: on your side, is there a way to solve for this?
@mattmook Update: New Relic released the Android Agent 5.24.0 today which supposedly had fixed this issue, but I'm getting the same error.
hi @elliottj-accolade I realise it's been a long time but I'd forgotten to chase up and see whether you ever got this resolved. I've been trying to reproduce this in the sample app to see if recent changes would help resolve this but so far haven't got it to fail!
At the time of the report I hadn't realised that bouncycastle had started releasing (from v1.63) a jdk15to18
version that, by the looks of things, doesn't contain the module-info.class file. This effectively means the above issue should be fixed from v0.3.0 of the certificate transparency library.
@mattmook
Using implementation 'com.babylon.certificatetransparency:certificatetransparency-android:0.3.0'
Still not able to get away with the
java.lang.RuntimeException: cannot find META-INF.versions.9.module-info: module-info found in META-INF/versions/9/module-info.class
Please suggest on how to proceed. This is blocking me use the library. PFA the console outcome on building the project
build.txt
Does adding the following kind of entry help?
android {
packagingOptions {
exclude "**/module-info.class"
}
}
Closing issue as from my own more recent tests this seems to no longer be an issue.