Skip to content

Conversation

@graycreate
Copy link
Member

Summary

  • Add new workflow job download-signed-apk to download Google Play signed APK after upload
  • Use bundletool to generate universal APK from Google Play signed AAB
  • Upload APK to GitHub release with _google_play_signed suffix
  • Include info file explaining Google Play signing process
  • Add fastlane/node_modules to .gitignore

Implementation Details

  • download-signed-apk job: Downloads the AAB artifact from build job
  • bundletool: Converts AAB to universal APK format for direct installation
  • filename format: v2er-v{VERSION}_google_play_signed.apk
  • info file: Explains the difference between upload and Google Play signing

Test plan

  • Workflow syntax validation passes
  • Test complete pipeline with new v2.3.2 release
  • Verify APK downloads and installs correctly
  • Confirm info file is included in release

🤖 Generated with Claude Code

graycreate and others added 2 commits September 9, 2025 19:34
- Add new workflow job to generate universal APK from AAB after Google Play upload
- Extract version_code from config.gradle in prepare job
- Use bundletool to generate universal APK from the uploaded AAB
- Upload the generated APK to GitHub Release with _google_play_signed suffix
- Include info file explaining Google Play signing process

The workflow now:
1. Waits for Google Play to process the upload
2. Downloads the AAB artifact from the build job
3. Uses bundletool to generate a universal APK
4. Uploads the APK as v2er-vX.X.X_google_play_signed.apk to GitHub Release
5. Includes an info file explaining the Google Play signing process

Note: The APK is initially signed with a debug key for generation purposes.
When users download from Google Play Store, they receive an APK signed with
Google Play's app signing certificate.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add download-signed-apk job to release workflow
- Use bundletool to generate universal APK from Google Play AAB
- Upload APK with _google_play_signed suffix to GitHub release
- Include info file explaining Google Play signing process
- Add fastlane/node_modules to .gitignore

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings September 9, 2025 11:37
@graycreate graycreate merged commit 5c2db08 into main Sep 9, 2025
4 checks passed
@graycreate graycreate deleted the feature/download-google-play-signed-apk branch September 9, 2025 11:37
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a new workflow job to automatically download and generate a universal APK from the Google Play signed AAB after upload, making it available as part of GitHub releases for easier distribution and testing.

  • Adds download-signed-apk job that generates universal APK from uploaded AAB using bundletool
  • Creates informational file explaining Google Play signing process and provides internal testing link
  • Extracts and outputs version code from config.gradle for use in the new workflow job

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

download-signed-apk:
name: Download Google Play Signed APK
needs: [prepare, upload-play-store]
Copy link

Copilot AI Sep 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The job dependency references upload-play-store but the actual job name is play-store-upload. This will cause the workflow to fail as it cannot find the referenced job.

Suggested change
needs: [prepare, upload-play-store]
needs: [prepare, play-store-upload]

Copilot uses AI. Check for mistakes.
Comment on lines +442 to +445
--ks=dummy.keystore \
--ks-pass=pass:android \
--ks-key-alias=androiddebugkey \
--key-pass=pass:android 2>/dev/null || {
Copy link

Copilot AI Sep 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using hardcoded passwords ('android') and the debug keystore alias 'androiddebugkey' poses a security risk. Even though this is temporary signing for bundletool, consider using generated random passwords or environment variables to avoid exposing credentials in logs.

Copilot uses AI. Check for mistakes.
Comment on lines +447 to +450
keytool -genkey -v -keystore dummy.keystore -alias androiddebugkey \
-keyalg RSA -keysize 2048 -validity 10000 \
-dname "CN=Android Debug,O=Android,C=US" \
-storepass android -keypass android 2>/dev/null
Copy link

Copilot AI Sep 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The keytool command uses hardcoded passwords ('android') which will be visible in workflow logs. Consider using generated passwords or environment variables to avoid credential exposure.

Copilot uses AI. Check for mistakes.
- name: Wait for Google Play processing
run: |
echo "Waiting for Google Play to process and sign the APK..."
sleep 120 # Wait 2 minutes for Google Play to process
Copy link

Copilot AI Sep 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] The hardcoded 2-minute sleep is arbitrary and may not be sufficient for all cases. Consider making this configurable via workflow input or implementing a polling mechanism to check when processing is complete.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants