Android Docker image API 30 : error: cannot load api descriptions

Hello, our team are using Android docker image API30 in circle ci. It works fine before today. Today we got some build fail with the following exception. I tried rerun few times but no luck. Does anyone have idea what happen?

config.yml

    docker:
      - image: circleci/android:api-30

As workaround, will use the snapshot from ytd

circleci/android@sha256:4e2a9be4f12833ce9b05c732dcedd3360a56ca2ee24a459a7aa87c88f2f05264
error: cannot load api descriptions from /opt/android/sdk/platform-tools/api/api-versions.xml java.io.IOException: Stream closed
  	at java.base/java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:68)
  	at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:143)
  	at java.base/java.io.FilterInputStream.read(FilterInputStream.java:133)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:3064)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:303)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1913)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanContent(XMLEntityScanner.java:1041)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2744)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534)
  	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
  	at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
  	at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
  	at java.xml/com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:246)
  	at java.xml/com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)
  	at java.xml/javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:122)
  	at android.databinding.tool.reflection.SdkUtil$ApiChecker.<init>(SdkUtil.java:121)
  	at android.databinding.tool.reflection.SdkUtil.create(SdkUtil.java:56)
  	at android.databinding.tool.Context.init(Context.kt:49)
  	at android.databinding.annotationprocessor.ProcessDataBinding.doProcess(ProcessDataBinding.java:109)
  	at android.databinding.annotationprocessor.ProcessDataBinding.process(ProcessDataBinding.java:87)
  	at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt:89)
  	at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:166)
  	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:980)
  	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.runContributingProcs(JavacProcessingEnvironment.java:816)
  	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1220)
  	at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1357)
  	at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1258)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  	at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:81)
  	at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:31)
  	at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:45)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
  	at org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:179)
  	at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:57)
  	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
  	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:67)
  	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:63)
  	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
  	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:63)
  	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
  	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
  	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:409)
  	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:399)
  	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:157)
  	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:242)
  	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:150)
  	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:94)
  	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
  	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
  	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:60)
  	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:200)
  	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
  	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
  	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
  	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
  	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
  	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
  	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
  	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
  	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
  	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
  	at java.base/java.lang.Thread.run(Thread.java:829)
1 Like

Thanks for your patience @charlesng0209 ! Did this get resolved? I didn’t see any other issues reported for this image.

Hi,

we’re also facing this issue even with a very recent image (circleci/android@sha256:73a1114ccb331ae97c6f51693616035d0a49a1cbbc5219c2828f7c44e397d2e1; Published 2 days ago as api-30)

Any pointers on solving this would be great - It’s worth to note that it happens seemingly at random as we got about 1-2 failures per 40 builds…

/Dan

I am still facing this issue and this exception is also occurred in my local device. Finally i saw someone post something similar in stackoverflow. Not sure if it is related or not.

I will check in with the team and see what’s going on!

I’m facing the same issue on CI:

error: cannot load api descriptions from /opt/android/sdk/platform-tools/api/api-versions.xml java.io.IOException: Stream closed
  	at java.base/java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:68)
  	at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:143)
  	at java.base/java.io.FilterInputStream.read(FilterInputStream.java:133)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:3064)
  	at java.xml/com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:303)

I was able to reproduce it locally on my machine too. I think it has something to do with the latest platform-tools as reported in this SO question. The fix on my local machine was also to downgrade platform-tools to 31.0.2 from 31.0.3 since in 31.0.3 the api-versions.xml was not present in the folder that the stacktraces show.

More information here.

1 Like

Thank you for the update @dapon!