Use Gradle-generated APK names and simplify workflow - #15
Conversation
…#12) * Initial plan * Update Android build flow to use kqt-kotlin package Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Update Android build flow to use new android directory at root Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Re-enable Android build workflow with new /android directory Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add multi-ABI support and split APK configuration - Add armeabi-v7a target alongside arm64-v8a - Build native libraries for both ABIs separately - Generate uniffi bindings once using arm64-v8a library - Configure gradle for split APKs per ABI and universal APK - Update artifact names to reflect multiple APKs Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
…idity period Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
…idity period Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
|
@copilot Please make the following modifications:
|
… APK uploads Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
… APK uploads Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Fixed in commit 78a209a. The issue was that the "Get version name" step wasn't passing the |
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
…add-signing-steps-to-build
|
@copilot We've moved the version name extraction into gradle. Now the apk will be directly named as kqt---<debug|release>.apk. Please modify and simplify the workflow and renaming script, so that we only need to:
Please verify that the changed gradle config works as intended, and do the above modifications. |
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com>
Done! Implemented in commits 2ae4e7d, 3d8ae81, and 48843ae:
The workflow now uses Gradle-generated names ( |
…add-signing-steps-to-build
…ld' into copilot/add-signing-steps-to-build
3e08e98 to
445cc52
Compare
* Add multi-ABI support with split APK configuration for Android builds (#12) * Initial plan * Update Android build flow to use kqt-kotlin package Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Update Android build flow to use new android directory at root Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Re-enable Android build workflow with new /android directory Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add multi-ABI support and split APK configuration - Add armeabi-v7a target alongside arm64-v8a - Build native libraries for both ABIs separately - Generate uniffi bindings once using arm64-v8a library - Configure gradle for split APKs per ABI and universal APK - Update artifact names to reflect multiple APKs Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Initial plan * Add APK signing configuration to Android build workflow Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add APK signing configuration to Android build workflow Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Address code review feedback: use GITHUB_WORKSPACE and improve security Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Address code review feedback: use GITHUB_WORKSPACE and improve security Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix signing configuration to gracefully handle missing credentials Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix signing configuration to gracefully handle missing credentials Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Refactor signing configuration to avoid code duplication Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Refactor signing configuration to avoid code duplication Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix documentation: use genkeypair instead of deprecated genkey Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix documentation: use genkeypair instead of deprecated genkey Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add keystore cleanup step to prevent sensitive data leakage Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Improve security: set restrictive keystore permissions and reduce validity period Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Improve security: set restrictive keystore permissions and reduce validity period Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Refactor signing to use committed CI keystore with ECDSA and separate APK uploads Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Refactor signing to use committed CI keystore with ECDSA and separate APK uploads Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Address code review: improve error handling and reduce duplication Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Address code review: improve error handling and reduce duplication Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix Gradle properties command and improve script robustness Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix Gradle properties command and improve script robustness Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Improve documentation accuracy and script error handling Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Improve documentation accuracy and script error handling Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Final polish: validate version extraction and warn on unexpected APKs Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Final polish: validate version extraction and warn on unexpected APKs Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add better error handling for edge cases Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix APK rename script to use continue statements Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Sign debug builds, simplify uploads, and improve keystore documentation Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Sign debug builds, simplify uploads, and improve keystore documentation Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add: ci.keystore * Add: ci.keystore * Make signing optional and mark unsigned APKs in filename Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Make signing optional and mark unsigned APKs in filename Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Optimize build.gradle.kts to avoid redundant environment variable checks Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Optimize build.gradle.kts to avoid redundant environment variable checks Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Fix signing detection in PRs and improve shell script conventions Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Trim keystore password to handle whitespace in secrets Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Trim keystore password to handle whitespace in secrets Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add better error handling and debugging to version extraction step Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Extract version from built APK instead of running Gradle properties Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Use wildcard pattern to find universal APK for version extraction Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Add better error handling for aapt command Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Clarify why we use debug APK for version extraction Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Changed APK naming * Use Gradle-generated APK names and collect with commit hash Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Remove obsolete rename-apks.sh script Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Quote shell variable assignments for safety Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> * Modify gradle config again * Updated workflow to match gradle build output * Manually run collection task * Fixing collection task * Changed APK regex --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: CircuitCoder <2051572+CircuitCoder@users.noreply.github.com> Co-authored-by: Liu Xiaoyi <circuitcoder0@gmail.com>
The workflow has been simplified to use Gradle's automatic APK naming instead of post-build renaming. Gradle now handles version embedding in filenames, eliminating the need for version extraction and external rename scripts.
Changes
Gradle APK naming
kqt-{abi}-{versionName}-{buildType}.apkbuild.gradle.ktssets output filenames during buildSimplified workflow
apk-collection/directory-UNSIGNEDsuffix for unsigned builds (PRs)Optional signing
KEYSTORE_PASSWORDavailabilityAPK Naming Examples
Signed builds:
kqt-arm64-v8a-1.0-debug-abc123.apkkqt-armeabi-v7a-1.0-release-abc123.apkkqt-universal-1.0-debug-abc123.apkUnsigned builds (PRs):
kqt-arm64-v8a-1.0-debug-abc123-UNSIGNED.apkkqt-universal-1.0-release-abc123-UNSIGNED.apkImplementation
The workflow is now significantly simpler with fewer steps, no external scripts, and direct use of Gradle's built-in naming capabilities.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.