diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5568fdd..5ae3437 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,6 +36,23 @@ jobs: echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV echo "APP_VERSION=$VERSION_NAME" >> $GITHUB_OUTPUT + # Setup keystore directory + - name: Setup keystore directory + run: mkdir -p app/keystore + + # Generate a keystore for signing + - name: Generate keystore + run: | + keytool -genkey -v -keystore app/keystore/release.keystore -storepass android -alias release -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=TetriStats,O=Accidental Productions,L=Unknown,C=US" + + # Set environment variables for signing + - name: Set signing environment variables + run: | + echo "KEYSTORE_PASSWORD=android" >> $GITHUB_ENV + echo "KEY_ALIAS=release" >> $GITHUB_ENV + echo "KEY_PASSWORD=android" >> $GITHUB_ENV + + # Build a signed release APK - name: Build Release APK run: ./gradlew assembleRelease @@ -46,13 +63,13 @@ jobs: if: startsWith(github.ref, 'refs/tags/') run: | mkdir -p renamed_apk - cp app/build/outputs/apk/release/app-universal-release-unsigned.apk renamed_apk/TetriStats-${{ env.VERSION_NAME }}.apk + cp app/build/outputs/apk/release/app-universal-release.apk renamed_apk/TetriStats-${{ env.VERSION_NAME }}.apk - name: Rename APK for push release if: ${{ !startsWith(github.ref, 'refs/tags/') && github.event_name == 'push' }} run: | mkdir -p renamed_apk - cp app/build/outputs/apk/release/app-universal-release-unsigned.apk renamed_apk/TetriStats-${{ env.VERSION_NAME }}-${{ github.run_number }}.apk + cp app/build/outputs/apk/release/app-universal-release.apk renamed_apk/TetriStats-${{ env.VERSION_NAME }}-${{ github.run_number }}.apk - name: Upload APK as artifact for tag release if: startsWith(github.ref, 'refs/tags/') diff --git a/app/build.gradle.kts b/app/build.gradle.kts index f1d83db..b46fc77 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -27,6 +27,16 @@ android { } } + signingConfigs { + create("release") { + // These values will be replaced during the GitHub Actions build + storeFile = file("keystore/release.keystore") + storePassword = System.getenv("KEYSTORE_PASSWORD") ?: "android" + keyAlias = System.getenv("KEY_ALIAS") ?: "release" + keyPassword = System.getenv("KEY_PASSWORD") ?: "android" + } + } + buildTypes { release { isMinifyEnabled = false @@ -34,7 +44,10 @@ android { getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) - // Make release version debuggable for now (helps with troubleshooting) + isDebuggable = false + signingConfig = signingConfigs.getByName("release") + } + debug { isDebuggable = true } }