diff --git a/.ci/scripts/android/build.sh b/.ci/scripts/android/build.sh new file mode 100755 index 0000000000..1d669919c2 --- /dev/null +++ b/.ci/scripts/android/build.sh @@ -0,0 +1,12 @@ +#!/bin/bash -ex + +export NDK_CCACHE="$(which ccache)" +ccache -s + +BUILD_FLAVOR=mainline + +cd src/android +chmod +x ./gradlew +./gradlew "assemble${BUILD_FLAVOR}Release" "bundle${BUILD_FLAVOR}Release" + +ccache -s diff --git a/.ci/scripts/android/upload.sh b/.ci/scripts/android/upload.sh new file mode 100755 index 0000000000..269684178e --- /dev/null +++ b/.ci/scripts/android/upload.sh @@ -0,0 +1,24 @@ +#!/bin/bash -ex + +. ./.ci/scripts/common/pre-upload.sh + +REV_NAME="yuzu-${GITDATE}-${GITREV}" + +BUILD_FLAVOR=mainline + +cp src/android/app/build/outputs/apk/"${BUILD_FLAVOR}/release/app-${BUILD_FLAVOR}-release.apk" \ + "artifacts/${REV_NAME}.apk" +cp src/android/app/build/outputs/bundle/"${BUILD_FLAVOR}Release"/"app-${BUILD_FLAVOR}-release.aab" \ + "artifacts/${REV_NAME}.aab" + +if [ -n "${ANDROID_KEYSTORE_B64}" ] +then + echo "Signing apk..." + base64 --decode <<< "${ANDROID_KEYSTORE_B64}" > ks.jks + + apksigner sign --ks ks.jks \ + --ks-key-alias "${ANDROID_KEY_ALIAS}" \ + --ks-pass env:ANDROID_KEYSTORE_PASS "artifacts/${REV_NAME}.apk" +else + echo "No keystore specified, not signing the APK files." +fi diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 7cde8380bb..c65e0bc5b9 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -122,3 +122,41 @@ jobs: with: name: ${{ env.INDIVIDUAL_EXE }} path: ${{ env.INDIVIDUAL_EXE }} + android: + runs-on: ubuntu-latest + needs: format + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + - name: Set up cache + uses: actions/cache@v3 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + ~/.ccache + key: ${{ runner.os }}-android-${{ github.sha }} + restore-keys: | + ${{ runner.os }}-android- + - name: Query tag name + uses: little-core-labs/get-git-tag@v3.0.2 + id: tagName + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y ccache apksigner glslang-dev glslang-tools + git -C ./externals/vcpkg/ fetch --all --unshallow + - name: Build + run: ./.ci/scripts/android/build.sh + - name: Copy and sign artifacts + env: + ANDROID_KEYSTORE_B64: ${{ secrets.ANDROID_KEYSTORE_B64 }} + ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} + ANDROID_KEYSTORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASS }} + run: ./.ci/scripts/android/upload.sh + - name: Upload + uses: actions/upload-artifact@v3 + with: + name: android + path: artifacts/ diff --git a/src/android/gradlew b/src/android/gradlew old mode 100644 new mode 100755