Android local dev build cache upload succeeds but --dev-client lookup misses
- Dominant language
- TypeScript
- Stars
- 1.4k
- Forks
- 236
- Avg merge
- 3d 1h
- Merged PRs (30d)
- 91
Description
### Build/Submit details page URL
_No response_
### Summary
When using the EAS build cache with `expo run:android`, the locally built Android development APK uploads successfully, but subsequent cache lookups using `--dev-client` cannot find it. The same build is found with `--no-dev-client` and the identical fingerprint.
### Managed or bare?
Bare
### Environment
- Expo SDK: 57
- expo: 57.0.20
- eas-cli: 23.2.0
- eas-build-cache-provider: 20.0.0
- Linux
- Bun
- Bare workflow with an android directory
### Error output
The upload completes, but the development-client lookup reports:
```
No builds available for ANDROID with fingerprint hash
```
The same fingerprint succeeds when the lookup uses `--no-dev-client`.
### Reproducible demo or steps to reproduce from a blank project
1. Create an Expo Android project with `expo-dev-client`.
2. Configure the EAS build cache provider.
3. Run `expo run:android` using a debug/development build.
4. Allow the local build cache provider to upload the generated APK.
5. Run the same command again with the unchanged project.
6. Observe that the provider searches with:
`eas build:download --platform=android --fingerprint= --dev-client`
7. Run the equivalent command with `--no-dev-client`.
Expected behavior: The APK uploaded from a local Android development build should be found on the next run, or the cache provider should fall back to an exact-fingerprint lookup without the dev-client filter.
Actual behavior: The upload succeeds and creates a finished EAS build, but the `--dev-client` lookup reports no builds available. The same fingerprint succeeds with `--no-dev-client`.
Investigation: The uploaded APK does not contain `assets/EXDevMenuApp.android.js`. EAS CLI uses that archive entry to classify APKs as development clients, so the local debug APK is recorded as a non-development-client build even though it was produced by `expo run:android`. The current cache provider always applies `--dev-client` for development workflows, making the uploaded build unreachable through the normal cache lookup.
No project URLs, signed upload URLs, fingerprints, local paths, credentials, or environment-variable output are included.
Contributor guide
Research direction
Start at the local build cache provider flow invoked by expo run:android, tracing how the uploaded APK is classified and how the subsequent eas build:download lookup applies --dev-client. Reproduce with the documented steps and compare the development-client and exact-fingerprint paths; done means the uploaded APK is found on the next run or the lookup falls back without the dev-client filter.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, typescript
- Domain
- build-system, cli, mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 74/100