Skip to content

Add an httpSMS Android release APK workflow - #1

Merged
GoDeskio merged 3 commits into
mainfrom
cursor/android-release-apk-1a00
Sep 26, 2026
Merged

GoDeskio merged 3 commits into
mainfrom
cursor/android-release-apk-1a00

Conversation

@GoDeskio

@GoDeskio GoDeskio commented Sep 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

Builds the current httpSMS-style Android app (com.httpsms) in GitHub Actions and keeps the Server URL as a runtime setting.

  • .github/workflows/android.yml decodes google-services.json from GOOGLE_SERVICES_JSON_BASE64, signs with ANDROID_KEYSTORE_BASE64, ANDROID_KEYSTORE_PASSWORD, ANDROID_KEY_ALIAS, and ANDROID_KEY_PASSWORD when all four are set, and otherwise signs the release APK with the debug key. The APK is uploaded as httpsms-release-apk.
  • SDK setup uses android-actions/setup-android@v4 with packages: platform-tools. The v3 action installs the removed tools package and fails on current runners.
  • The APK upload uses actions/upload-artifact@v7 (Node 24).
  • google-services.json is no longer tracked. A placeholder example remains, and ignore rules cover Firebase files, keystores, and private CA material.
  • The network security config trusts system and user CAs. A PEM from ANDROID_PRIVATE_CA_BASE64 or ANDROID_PRIVATE_CA_FILE is bundled only for that build and is not committed.
  • Login and App Settings both edit Server URL. It must be an HTTPS origin, is stored on the phone, and is not compiled into the APK.
  • Operator steps are in docs/android-build.md.

Manual steps

Add the Actions secrets listed in docs/android-build.md before the workflow can produce an APK. Pull requests from forks cannot read those secrets. GOOGLE_SERVICES_JSON_BASE64 is set. The keystore secrets are optional; without them the APK is debug-signed.

The previous google-services.json is removed from the tree. It remains in git history from the upstream fork, so rotate that Firebase Android key if it should no longer be treated as public.

Test plan

  • ./gradlew :app:generateNetworkSecurityConfig writes a config that trusts system and user certificates
  • With ANDROID_PRIVATE_CA_FILE set to a throwaway PEM, the same task also emits res/raw/private_ca.crt and references @raw/private_ca
  • ./gradlew :app:testDebugUnitTest — ServerUrlsTest (3) and ExampleUnitTest (1) passed
  • Actions run 36209041864 built the release APK and uploaded artifact httpsms-release-apk (debug-signed; keystore secrets are unset)
  • Install the artifact on a phone and confirm Server URL can be changed in the app
Open in Web Open in Cursor 

Add a GitHub Actions workflow that injects google-services.json and an optional release keystore from secrets, falling back to a debug signature. Stop tracking google-services.json, trust user-installed CAs, and keep the Server URL editable at runtime.

Co-authored-by: Admin <GoDeskio@users.noreply.github.com>
cursoragent and others added 2 commits September 26, 2026 01:30
Login and settings live in subpackages, so the Server URL validator
did not resolve and the debug unit tests failed to compile.

Co-authored-by: Admin <GoDeskio@users.noreply.github.com>
setup-android v3 asks sdkmanager for the legacy tools package, which
cmdline-tools 16 no longer publishes. Pin v4 and install platform-tools
only, and upload the APK with the Node 24 artifact action.

Co-authored-by: Admin <GoDeskio@users.noreply.github.com>
@GoDeskio
GoDeskio marked this pull request as ready for review September 26, 2026 01:42
@GoDeskio
GoDeskio merged commit 43d5067 into main Sep 26, 2026
7 checks passed
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