Skip to content

feat(android): Android target, CI build, and Play Store deploy - #83

Merged
windoze95 merged 3 commits into
mainfrom
feature/android-target
Jul 11, 2026
Merged

feat(android): Android target, CI build, and Play Store deploy#83
windoze95 merged 3 commits into
mainfrom
feature/android-target

Conversation

@windoze95

Copy link
Copy Markdown
Owner

Adds the Android platform NullFeed has been missing:

  • android/ host generated with applicationId codes.julian.nullfeed, adaptive + legacy launcher icons derived from the iOS app icon (violet #7C4DFF background), dark launch screen matching NullFeedTheme.backgroundColor, INTERNET/WAKE_LOCK permissions, and usesCleartextTraffic for plain-HTTP LAN servers.
  • Release signing follows the Cantinarr pattern: CI decodes the upload keystore from ANDROID_KEYSTORE_* secrets into android/key.properties; local builds fall back to debug signing. Secrets are already set on this repo; the keystore lives in ~/Projects/NullFeed/signing/android/ (PKCS12, alias upload).
  • CI: new Build Android job (ubuntu, flutter build appbundle --release) validates every PR.
  • playstore.yml: on pushes to main, builds the signed AAB, computes the next version code from Play, and uploads to the internal track as draft (pre-release: nothing goes live without an explicit Console rollout). Skips the Play upload gracefully until the service account has access to the app.
  • App code needed no changes: push_service.dart already no-ops off iOS, and the better_player_plus playback path supports Android.

🤖 Generated with Claude Code

https://claude.ai/code/session_015UjT16Qz6fmtx8UYzE9pfY

…rkflow

- flutter-generated android/ host (applicationId codes.julian.nullfeed),
  adaptive + legacy launcher icons derived from the iOS app icon, dark
  launch background matching the app backdrop, INTERNET/WAKE_LOCK
  permissions and cleartext HTTP (self-hosted LAN servers).
- Release signing via android/key.properties + upload keystore decoded
  from ANDROID_KEYSTORE_* secrets; falls back to debug signing locally.
- Build Android job in CI (ubuntu, appbundle) validating every PR.
- playstore.yml: signed AAB on pushes to main, uploaded to the Play
  internal track as draft via fastlane (version code = max(Play)+1).
  Push is a no-op until PLAY_SERVICE_ACCOUNT_JSON has app access.
- Push notifications stay iOS-only (push_service.dart already gates on
  Platform.isIOS); playback uses the existing better_player_plus path,
  which supports Android.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015UjT16Qz6fmtx8UYzE9pfY
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Store copy from the demo-repo submission guide, icon/feature graphic
derived from existing brand art, phone screenshots padded to Play's 2:1
ratio limit, iPad shots as tablet screenshots. storelisting.yml pushes
the listing via 'fastlane listing' when metadata changes on main.
@windoze95
windoze95 merged commit 2a2c032 into main Jul 11, 2026
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.

1 participant