Feat/material3 expressive redesign - #2
Merged
Conversation
Assembles both variants, uploads them as artifacts, then runs lint. - JDK 21, to match the project's compileOptions. - The Android SDK packages are pinned to platform 37 / build-tools 36.0.0, so a runner image update cannot silently change what we compile against. The step also accepts the SDK licenses, which is what lets AGP fetch anything else it needs. - The wrapper is checksum-validated before it is executed. - Lint runs after the artifact uploads, so a lint regression still leaves an installable APK attached to the run. - Concurrency is per branch with cancel-in-progress: a newer push makes the running build irrelevant. The release variant is signed with the debug key, as the project is set up today (app/build.gradle.kts), so these artifacts are for testing and cannot upgrade an install signed with a real release key.
Triggered by a v* tag: builds the release variant, attaches the APK to a GitHub release with generated notes, and marks tags containing a hyphen (v1.05-beta1) as pre-releases. workflow_dispatch runs the same build and uploads the APK as an artifact without publishing, so the signing setup can be checked before a tag is pushed. Release signing comes from repository secrets, which required a change to app/build.gradle.kts: the release buildType hardcoded the debug signing config. It now uses a release config built from KEYSTORE_FILE and friends, falling back to the debug key when those are unset, so local builds behave exactly as they did before. To sign for real, set these secrets: KEYSTORE_BASE64 base64 of the .jks (base64 -w0 release.jks) KEYSTORE_PASSWORD KEY_ALIAS KEY_PASSWORD Without them the workflow still succeeds, but it annotates the run and the release body with a warning that the APK carries the debug signature. The keystore is written to RUNNER_TEMP, deleted straight after the build, and the release notes carry the APK's SHA-256 so a sideloaded download can be checked.
The first run failed in the Android SDK step: there is no 'platforms;android-37' package. AGP 9 uses minor-versioned platforms, so the id is 'platforms;android-37.0', and pinning it here duplicates what compileSdk already states. Let AGP resolve and download the platform and build-tools it needs, which it does once the licenses are accepted, and leave this step to accept them.
Permission is granted outside this screen — Shizuku shows its own dialog — so nothing was telling the app about it. The list stayed empty behind the "permissions required" dialog until the app was restarted. - UserServiceProvider exposes the bind state as a StateFlow, updated by Connection on connect and disconnect. MainScreenVm watches it and loads the list as soon as the privileged service binds. The current value is dropped: if the service was already bound at startup, the load kicked off in init succeeds by itself. - Pull to refresh on the app list. The empty state is rendered as a full-height item inside the LazyColumn rather than a plain Box, so it stays scrollable and can be pulled too, which is exactly the state you are in before access has been granted. The permission request had a second dead end. It ran once in onCreate and only if Shizuku's binder was already alive, so opening this app before starting Shizuku meant permission was never requested at all, and onResume only ever bound an already-granted service. "Proceed" then just re-ran the detection and found the same nothing. - The request now runs on every resume, guarded by a flag so a declined dialog is not re-shown, seeded from savedInstanceState so a rotation does not re-ask. - "Proceed" asks Shizuku for permission instead of only re-detecting.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.