J'ai créé des tests d'interface utilisateur d'espresso. Les tests fonctionnent correctement localement (émulateur et appareil réel). Mais lorsque j'essaye d'exécuter le test de l'interface utilisateur sur CircleCI. Je reçois ce journal des erreurs
Tâche: app: compileFossDebugAndroidTestKotlin La compilation avec le démon de compilation Kotlin n'a pas réussi java.rmi.UnmarshalException: Erreur lors de la suppression de l'en-tête de retour; l'exception imbriquée est:
Impossible de vider le cache jar après la compilation, peut-être que le démon est déjà en panne: java.rmi.ConnectException: Connexion refusée à l'hôte: 127.0.0.1; l'exception imbriquée est: java.net.ConnectException: connexion refusée (connexion refusée) Impossible de se connecter au démon kotlin. Utilisation de la stratégie de secours.
Récupération de JAVA_TOOL_OPTIONS: -Xms512m
Tâche: app: compileFossDebugAndroidTestKotlin FAILED
ÉCHEC: la construction a échoué avec une exception.
Plus de détails sur le journal des erreurs sont disponibles ici a >
Voici mon fichier config.yml pour circleci avec la tâche run-ui-tests
compileSdk version : 28 targetSdk version : 28 kotlin version : '1.3.31'
gradle.properties
android.enableJetifier=true android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m
Autre configuration
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
Le projet a 2 saveurs: foss et play et 2 types de build: debug et release
J'ai essayé toutes les solutions possibles mais aucune ne fonctionne. Toute aide serait appréciée. Merci
3 Réponses :
Je rencontre le même problème.
Et enfin, je supprime mon dossier de cache gradle (linux: ~ / .gradle), et ce problème disparaît.
Vous pouvez d'abord essayer de tuer Gradle Deamon.
mise à jour: j'ai trouvé que la désactivation du démon gradle peut résoudre ce problème. ajoutez org.gradle.daemon = false à gradle.properties
update2: désolé, tout le monde, la raison pour laquelle ce momery est trop bas sur mon ECS (1 cpu, 1G de mémoire), j'ajoute un swap 1G et ce problème disparaît.
pouvez-vous partager votre fichier de configuration circleci ou mentionner les commandes que je dois utiliser pour résoudre le problème.
salut, vous pouvez essayer de désactiver le démon gradle: org.gradle.daemon = false J'ai trouvé que cela pouvait résoudre le problème. Tuez d'abord le démon gradle. Je ne sais pas pourquoi.
J'ai essayé de démanteler le démon gradle en ajoutant org.gradle.daemon = false mais ensuite il lance Le démon de compilation Gradle a disparu de manière inattendue (il a peut-être été tué ou s'est peut-être écrasé)
@GOVINDDIXIT vous pouvez essayer de supprimer le dossier de cache du démon gradle rm -fr ~ / .gradle / daemon / J'ai trouvé que cela peut être résolu sur un ordinateur, mais un autre ordinateur ne peut toujours pas le résoudre.
@GOVINDDIXIT aujourd'hui, j'ai essayé plusieurs fois de découvrir pourquoi ce problème ne se produit que sur mon ordinateur Linux. J'ai trouvé que les deux ordinateurs étaient ECS avec 1 processeur, 1G de mémoire. Donc je pense que la mémoire est peut-être trop faible. J'ai ajouté un swap 1G et j'ai trouvé ce problème disparaître sur les deux ordinateurs. donc je pense que vous pouvez vérifier si la mémoire est suffisante et essayer.
Il y a une mise à jour de mon côté, j'ai fait quelques changements dans la configuration et les tests commencent à s'exécuter mais pour la deuxième fois, il lance Impossible de vider le cache jar après la compilation, peut-être que le démon est déjà en panne: java.rmi.ConnectException: Connection refusé d'héberger: 127.0.0.1; l'exception imbriquée est: java.net.ConnectException: connexion refusée (connexion refusée)
première fois: circleci.com/gh/GOVINDDIXIT/Rocket.Chat.Android/878 deuxième fois: circleci.com/gh/GOVINDDIXIT/Rocket.Chat.Android/885
salut, @GOVINDDIXIT, sur mon ordinateur, cette exception se lève à chaque fois avec UnmarshalException. Après avoir ajouté un échange 1G, les deux exceptions disparaissent et la construction réussit.
Pouvez-vous partager votre fichier de configuration de circleci de travail, les circleci ont par défaut 4 Go de RAM. Comment ajoutez-vous de la mémoire d'échange?
Pour beaucoup de gens, il semble que l'ajout de la ligne GRADLE_OPTS que vous avez déjà a aidé à résoudre leur erreur de démarshaling. Pour moi, cette ligne a en fait cassé tous mes tests unitaires avant d'arriver à la commande qui provoque l'erreur de démarshaling. Pour notre build, notre mémoire gradle a été utilisée après l'exécution de tous nos tests unitaires. La solution consistait à vider le cache gradle après l'exécution de tous les tests unitaires, mais avant la création et le transfert vers le magasin. Nous avons ajouté la commande rm -fr ~ / .gradle / daemon /
à notre fichier travis comme l'a indiqué l'utilisateur zhukunqian dans la section commentaires.
L'ajout de cette ligne à config.yml
m'a aidé à éviter cette erreur
GRADLE_OPTS: -Xmx1536m -XX: + HeapDumpOnOutOfMemoryError -Dorg.gradle.caching = true -Dorg.gradle.configureondemand = true -Dkotlin.compiler.execution.strategy = in-process -Dkotlin.incremental = false < / code>
plus d'infos ici: https://github.com/circleci / circleci-docs / issues / 2945 # issuecomment-471637158