diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 02e3e0bb..30e81795 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -91,6 +91,28 @@ jobs: ~/.android/adb* key: avd-${{ matrix.api-level }} + - name: Prepare script to run + id: script + env: + SCRIPT: | + # Workaround for https://github.com/ReactiveCircus/android-emulator-runner/issues/373 + pre_terminate_crashpad() { + # For some reason pgrep/pkill sees only crashpad_handle, not crashpad_handler, + # but it's definitely called ${ANDROID_HOME}/emulator/crashpad_handler. + + # Best-effort gracefully terminate all crashpad_handler processes. + pkill --exact --echo --signal SIGTERM crashpad_handle || return + sleep 10 + pkill --exact --echo --signal SIGKILL crashpad_handle || return + } + trap pre_terminate_crashpad EXIT + + ${{ inputs.script }} + run: | + script_file="${RUNNER_TEMP}/reactivecircus-android-emulator-runner-prepared-script.sh" + echo "${SCRIPT}" > "${script_file}" + echo "file=${script_file}" >> "${GITHUB_OUTPUT}" + - name: Create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' uses: reactivecircus/android-emulator-runner@v2