diff --git a/.github/actions/get-avd-info/action.yml b/.github/actions/get-avd-info/action.yml new file mode 100644 index 0000000..b8105d3 --- /dev/null +++ b/.github/actions/get-avd-info/action.yml @@ -0,0 +1,19 @@ +name: 'Get AVD Info' +description: 'Get the AVD arch and target based on its API level.' +inputs: + api-level: + required: true +outputs: + arch: + value: ${{ steps.get-avd-arch.outputs.arch }} + target: + value: ${{ steps.get-avd-target.outputs.target }} +runs: + using: "composite" + steps: + - id: get-avd-arch + run: echo "arch=$(if [ ${{ inputs.api-level }} -ge 30 ]; then echo x86_64; else echo x86; fi)" >> $GITHUB_OUTPUT + shell: bash + - id: get-avd-target + run: echo "target=default" >> $GITHUB_OUTPUT + shell: bash diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 381ed31..19a93a8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -178,26 +178,17 @@ jobs: strategy: fail-fast: false matrix: - include: - - api-level: 26 - target: default - arch: x86 - force-avd-creation: true - test-emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - - api-level: 29 - target: default - arch: x86 - force-avd-creation: false - test-emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none - - api-level: 35 - target: google_apis - arch: x86_64 - force-avd-creation: false - test-emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + api-level: [26, 31, 36] steps: - uses: actions/checkout@v7 + - name: Get AVD info + uses: ./.github/actions/get-avd-info + id: avd-info + with: + api-level: ${{ matrix.api-level }} + - name: Validate Gradle wrapper uses: gradle/actions/wrapper-validation@v6 @@ -222,16 +213,15 @@ jobs: path: | ~/.android/avd/* ~/.android/adb* - key: avd-v3-${{ runner.os }}-${{ matrix.api-level }}-${{ matrix.target }}-${{ matrix.arch }}-anim-on-${{ hashFiles('.github/workflows/build.yml') }} + key: avd-v4-${{ runner.os }}-${{ matrix.api-level }}-${{ steps.avd-info.outputs.target }}-${{ steps.avd-info.outputs.arch }}-${{ hashFiles('.github/workflows/build.yml') }} - name: Create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }} - target: ${{ matrix.target }} - arch: ${{ matrix.arch }} - force-avd-creation: ${{ matrix.force-avd-creation }} + target: ${{ steps.avd-info.outputs.target }} + arch: ${{ steps.avd-info.outputs.arch }} emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: false script: echo "Generated AVD snapshot for caching." @@ -240,15 +230,11 @@ jobs: uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }} - target: ${{ matrix.target }} - arch: ${{ matrix.arch }} - force-avd-creation: ${{ matrix.force-avd-creation }} - emulator-options: ${{ matrix.test-emulator-options }} + target: ${{ steps.avd-info.outputs.target }} + arch: ${{ steps.avd-info.outputs.arch }} + emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: false - script: | - ./gradlew connectedDebugAndroidTest -Pandroidx.baselineprofile.skipgeneration || GRADLE_EXIT=$? - pkill -9 crashpad_handler 2>/dev/null || true - exit ${GRADLE_EXIT:-0} + script: ./gradlew connectedDebugAndroidTest -Pandroidx.baselineprofile.skipgeneration - name: Upload device test reports if: failure()