From de98676cd025da027dea9ecbe6d08e62be7ce2e8 Mon Sep 17 00:00:00 2001 From: Joscha Date: Thu, 23 Jan 2025 02:04:15 +0100 Subject: [PATCH] Set up apk signing --- .github/workflows/build.yml | 52 +++++++++++-------- build_android | 2 +- .../gen/android/app/build.gradle.kts | 19 ++++++- 3 files changed, 49 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3dab1e3..53b6213 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -63,29 +63,37 @@ jobs: target/release/tta-cli.exe target/release/tta-app.exe - # TODO: https://v2.tauri.app/distribute/sign/android/ - # build-android: - # runs-on: ubuntu-latest - # steps: - # - name: Check out repo - # uses: actions/checkout@v4 + build-android: + runs-on: ubuntu-latest + steps: + - name: Check out repo + uses: actions/checkout@v4 - # - name: Set up pnpm - # uses: pnpm/action-setup@v4 - # with: - # version: 10 + - name: Set up pnpm + uses: pnpm/action-setup@v4 + with: + version: 10 - # # https://v2.tauri.app/start/prerequisites/#android - # - name: Set up rust - # run: rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android + # https://v2.tauri.app/start/prerequisites/#android + - name: Set up Rust + run: rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android - # - name: Build - # run: | - # export NDK_HOME="$ANDROID_NDK_HOME" - # ./build_android + # https://v2.tauri.app/distribute/sign/android/ + - name: Set up Android signing + run: | + cd tta-app/src-tauri/gen/android + echo "keyAlias=${{ secrets.ANDROID_KEY_ALIAS }}" > key.properties + echo "password=${{ secrets.ANDROID_KEY_PASSWORD }}" >> key.properties + base64 -d <<< "${{ secrets.ANDROID_KEY_BASE64 }}" > $RUNNER_TEMP/keystore.jks + echo "storeFile=$RUNNER_TEMP/keystore.jks" >> key.properties - # - name: Upload - # uses: actions/upload-artifact@v4 - # with: - # name: tta-android - # path: target/release/tta-app.apk + - name: Build + run: | + export NDK_HOME="$ANDROID_NDK_HOME" + ./build_android + + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: tta-android + path: target/release/tta-app.apk diff --git a/build_android b/build_android index 9b717e7..cb2d5d0 100755 --- a/build_android +++ b/build_android @@ -7,6 +7,6 @@ pnpm tauri android build --apk popd mkdir -p target/release/ -mv tta-app/src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release-unsigned.apk target/release/tta-app.apk +mv tta-app/src-tauri/gen/android/app/build/outputs/apk/universal/release/app-universal-release.apk target/release/tta-app.apk echo "tta-app.apk can be found at target/release/tta-app.apk" diff --git a/tta-app/src-tauri/gen/android/app/build.gradle.kts b/tta-app/src-tauri/gen/android/app/build.gradle.kts index 78e298c..efde04d 100644 --- a/tta-app/src-tauri/gen/android/app/build.gradle.kts +++ b/tta-app/src-tauri/gen/android/app/build.gradle.kts @@ -1,3 +1,4 @@ +import java.io.FileInputStream import java.util.Properties plugins { @@ -24,19 +25,35 @@ android { versionCode = tauriProperties.getProperty("tauri.android.versionCode", "1").toInt() versionName = tauriProperties.getProperty("tauri.android.versionName", "1.0") } + signingConfigs { + create("release") { + val keystorePropertiesFile = rootProject.file("key.properties") + val keystoreProperties = Properties() + if (keystorePropertiesFile.exists()) { + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) + } + + keyAlias = keystoreProperties["keyAlias"] as String + keyPassword = keystoreProperties["password"] as String + storeFile = file(keystoreProperties["storeFile"] as String) + storePassword = keystoreProperties["password"] as String + } + } buildTypes { getByName("debug") { manifestPlaceholders["usesCleartextTraffic"] = "true" isDebuggable = true isJniDebuggable = true isMinifyEnabled = false - packaging { jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so") + packaging { + jniLibs.keepDebugSymbols.add("*/arm64-v8a/*.so") jniLibs.keepDebugSymbols.add("*/armeabi-v7a/*.so") jniLibs.keepDebugSymbols.add("*/x86/*.so") jniLibs.keepDebugSymbols.add("*/x86_64/*.so") } } getByName("release") { + signingConfig = signingConfigs.getByName("release") isMinifyEnabled = true proguardFiles( *fileTree(".") { include("**/*.pro") }