Android CircleCI 2.0:解组返回标头时出错;嵌套异常是:
我创建了一些浓缩咖啡用户界面测试。测试在本地运行良好(模拟器和真实设备)。但是当我试图在CircleCI上运行UI测试时。我正在获取此错误日志 任务:应用程序:compileForSSdebugandroidTestKotlin 使用Kotlin编译守护程序进行编译未成功 java.rmi.UnmarshaleException:错误解组返回头;嵌套异常是: 编译后无法清除jar缓存,可能守护进程已关闭:java.rmi.ConnectException:连接拒绝宿主:127.0.0.1;嵌套异常是: java.net.ConnectException:拒绝连接(拒绝连接) 无法连接到kotlin守护程序。使用回退策略 选择JAVA工具选项:-Xms512m 任务:应用程序:CompileForSSdebugandroidTestKotlin失败 失败:生成失败,出现异常Android CircleCI 2.0:解组返回标头时出错;嵌套异常是:,android,kotlin,android-espresso,circleci,circleci-2.0,Android,Kotlin,Android Espresso,Circleci,Circleci 2.0,我创建了一些浓缩咖啡用户界面测试。测试在本地运行良好(模拟器和真实设备)。但是当我试图在CircleCI上运行UI测试时。我正在获取此错误日志 任务:应用程序:compileForSSdebugandroidTestKotlin 使用Kotlin编译守护程序进行编译未成功 java.rmi.UnmarshaleException:错误解组返回头;嵌套异常是: 编译后无法清除jar缓存,可能守护进程已关闭:java.rmi.ConnectException:连接拒绝宿主:127.0.0.1;嵌套异
- 出了什么问题: 任务“:app:compileForSSdebugandroidTestKotlin”的执行失败
run-ui-tests:
docker:
- image: circleci/android@sha256:5cdc8626cc6f13efe5ed982cdcdb432b0472f8740fed8743a6461e025ad6cdfc
environment:
JVM_OPTS: -Xmx2048m
GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false
steps:
- checkout
- run:
name: ANDROID_HOME
command: echo "sdk.dir="$ANDROID_HOME > local.properties
- run:
name: restore files from ENV
command: |
echo $ROCKET_JKS_BASE64 | base64 --decode > Rocket.jks
echo $ROCKET_PLAY_JSON | base64 --decode > app/rocket-chat.json
- run:
name: checkout Rocket.Chat.Kotlin.SDK
command: git clone https://github.com/RocketChat/Rocket.Chat.Kotlin.SDK.git ../Rocket.Chat.Kotlin.SDK
- restore_cache:
key: kotlin-sdk-{{ .Revision }}
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:
name: Accept licenses
command: yes | sdkmanager --licenses || true
- run:
name: Download Dependencies
command: ./gradlew androidDependencies
- save_cache:
paths:
- ~/.gradle
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- run:
name: Setup emulator
command: sdkmanager "system-images;android-22;default;armeabi-v7a" && echo "no" | avdmanager create avd -n test -k "system-images;android-22;default;armeabi-v7a"
- run:
name: Launch emulator
command: export LD_LIBRARY_PATH=${ANDROID_HOME}/emulator/lib64:${ANDROID_HOME}/emulator/lib64/qt/lib && emulator64-arm -avd test -noaudio -no-boot-anim -no-window -accel auto -verbose
background: true
- run:
name: Wait emulator
command: |
# wait for it to have booted
circle-android wait-for-boot
# unlock the emulator screen
sleep 30
adb shell input keyevent 82
- run:
name: Run EspressoTests
command: ./gradlew connectedAndroidTest
- store_artifacts:
path: app/build/reports
destination: reports
- store_test_results:
path: app/build/test-results
格拉德尔酒店
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
其他配置
compileSdk version : 28
targetSdk version : 28
kotlin version : '1.3.31'
该项目有两种风格:自由和开放源码软件和游戏
和2种构建类型:调试和发布
我已经尝试了所有可能的解决办法,但没有一个奏效。任何帮助都将不胜感激。谢谢,我遇到了同样的问题 最后,我删除了gradle缓存文件夹(linux:~/.gradle),这个问题就消失了 你可以先杀了格雷德·迪蒙 更新:我发现原因是禁用gradle deamon可以解决这个问题。 将org.gradle.daemon=false添加到gradle.properties
android.enableJetifier=true
android.useAndroidX=true
org.gradle.jvmargs=-Xmx1536m
更新2:抱歉,各位,我的ECS(1个cpu,1G内存)内存太低的原因是,我添加了1G交换,这个问题被解决了。对于很多人来说,添加您已经添加的渐变选项行似乎有助于解决他们的解编错误。对我来说,这一行实际上在到达导致解组错误的命令之前中断了我所有的单元测试。对于我们的构建,我们的gradle内存在运行了所有单元测试之后就用完了。解决方案是在所有单元测试运行之后,但在构建并推送到存储之前,清除gradle缓存。正如用户朱坤倩在评论部分指出的那样,我们将命令
rm-fr~/.gradle/daemon/
添加到travis文件中。将这一行添加到config.yml
帮助我避免了这个错误
GRADLE\u选项:-Xmx1536m-XX:+heapdumponootfmemoryerror-Dorg.GRADLE.caching=true-Dorg.GRADLE.configureondemand=true-Dkotlin.compiler.execution.strategy=in-process-Dkotlin.incremental=false
更多信息请点击此处:您是否可以分享您的circleci配置文件或提及我为您提供的用于解决问题的命令。您好,您可以尝试禁用gradle deamon:org.gradle.daemon=false我发现这可以解决问题。先杀了格雷德·迪蒙。我不知道为什么。我尝试通过添加org.gradle.daemon=false来破坏gradle守护进程,但随后它抛出
gradle构建守护进程意外消失(它可能已被杀死或崩溃)
@GOVINDDIXIT您可以尝试删除gradle守护进程缓存文件夹rm-fr~/.gradle/daemon/我发现这可以在一台计算机上解决,但另一台计算机仍然无法解决。@GOVINDDIXIT今天,我多次试图找出为什么这个问题只发生在我的linux计算机上。我发现这两台电脑都是ECS,有1个cpu,1G内存。所以我想可能是内存太少了。我添加了1G交换,发现这个问题在两台计算机上都消失了。所以我想你可以检查一下内存是否足够,然后再试一次。