Opt-in slim mode for Android emulators
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- android, typescript
- Lĩnh vực
- devops, mobile-dev
Hướng nghiên cứu
Start by reading the existing iOS slim behavior and tracing the Android emulator launch, lease, reclaim, and doctor paths; the issue names no source files for these areas. Run the relevant Android lease and doctor flows, then verify the completion conditions across CLI, MCP, HTTP, events, and pool behavior. Update docs/EVENTS.md, docs/CONFIGURATION.md, docs/CLI.md, and docs/HTTP-API.md as required by the stated outcomes.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Request: #151
Problem
Slim mode exists only for iOS. An Android emulator boots with the guest RAM its device profile asks for and with every background package its system image ships. Most of that serves a phone owner, not a test run. The resource capacity strategy budgets 4 GiB per emulator, so heavy emulators mean fewer devices per machine.
#148 makes the window, GPU, audio, and boot animation configurable. Guest RAM and background packages are what it leaves out.
Who it is for
An operator sizing a Mac or CI host that runs several Android emulators at once, and the parallel coding agents leasing them. Also an agent whose test needs a stock device and must be able to ask for one.
Outcome
- Android slim follows the mode rules of #172. The operator sets
android.defaultModetoslimorfull; the default isfull. A request picks a mode with--mode, and a request with no mode gets the default. - The settings under
android.slim.*are set once, by the operator, never from a lease request, MCP, or HTTP. - A slim emulator boots with the guest RAM size the operator configured, 1536 MB when no size is set.
- A slim emulator boots as a low-RAM device. A separate key under
android.slim.*turns that off while keeping the RAM size and the package pass, for a test that must see a stock device profile. - A slim emulator has a known set of background packages disabled. The set ships with Simlock, is grouped into named categories, and the operator can narrow it to some categories, as on iOS.
- The Play Store, Chrome, and the setup wizard are one category of their own that is not in the default set. The operator adds it by name.
- No category contains Google Play Services or a package the system cannot boot without. Push, sign-in, WebView, and networking keep working on a slim device, and a slim device always finishes booting.
- A lease on a slim device reports
mode: "slim"on every surface.simlock lease --mode fullgets a stock device and never receives a slim one.--mode slimgets a slim device on any worker, whatever its default. - A slim setting that changes applies at the device's next boot. A running emulator keeps what it started with.
- A reclaimed slim device comes back slim, and reclaim costs no more than it does for a full device.
- A package the image does not carry is skipped and logged. A failed slim pass degrades to a device that is not slim, never to a failed lease.
simlock doctorreports an installed system image that cannot honour the configured RAM size, the way it reports an iOS runtime that cannot be slimmed.- Slim mode touches only devices Simlock created, needs nothing installed beyond the Android SDK Simlock already requires, and needs no root inside the guest.
Non-goals
- Headless, GPU, audio, and boot animation: #148.
- Guest settings of any kind: animations, background process caps, sync, location. Slim never changes a guest setting.
- Camera and D-pad hardware toggles.
- Guest CPU count and VM heap size.
- A per-lease choice of RAM size or packages. The only per-lease control is
--mode. - Changing
capacity.config.ramBudget.androidBytesPerDeviceautomatically. The operator lowers it to match, and the docs say so. - Uninstalling packages or altering the system image on disk.
- Slim as the default mode out of the box.
Completion conditions
- With
android.defaultModeunset, a request with no mode gets an emulator whose launch command and package state are exactly what they were before this feature. - On a worker whose default mode is
full,--mode slimgrants a slim Android device. - With no size set, a slim emulator reports roughly 1536 MB from inside the guest and identifies itself as a low-RAM device. With a size set, it reports roughly that size.
- With the low-RAM key off, the emulator boots with the configured size and does not identify itself as a low-RAM device.
- On a slim device, every package in the enabled categories shows as disabled. With no categories set, the Play Store, Chrome, and the setup wizard stay enabled; naming their category disables them. Google Play Services is enabled in every case.
- On every API level Simlock supports, a slim device reaches boot completion and answers package-manager queries.
- A slim device's animation scales, sync, and location settings are what a stock device has.
- The lease response carries
mode: "slim". A--mode fulllease on the same spec gets a device with no package disabled, the profile's own RAM, no low-RAM mode, andmode: "full". - While slim devices sit idle in the pool, a
--mode fullrequest does not receive one. - A slim device that is released and reclaimed with the
standardclean level is granted again still slim, with no extra boot compared to a full device. - Changing the RAM size, the low-RAM key, or the categories, then leasing the device again, yields a device with the new setting, and reclaim on that device is not permanently degraded to a full wipe.
- A configured package missing from the image is logged and the lease still grants.
simlock doctornames an installed image that ignores the RAM size, and stays quiet when the default mode isfull.simlock eventsshows adevice.slimmedevent for the Android device after the pass, anddocs/EVENTS.mddescribes its Android payload.- A lease request carrying any
androidfield, or any slim setting other thanmode, is rejected asBAD_REQUEST. simlock configrendersandroid.defaultModeand theandroid.slimblock.docs/CONFIGURATION.mddocuments every key, its default, what slim mode disables, what stops working, and the capacity budget and GPU setting to pair it with.docs/CLI.mdanddocs/HTTP-API.mdno longer say slim is unavailable on Android.- AVDs outside Simlock's device root are untouched.
Open questions
None.
Decisions
- ADR 0006 — Opt-in slim Android emulators: guest RAM and low-RAM mode as per-boot launch flags, packages disabled before the clean baseline is captured, and the baseline config hash as the one idempotence marker. Accepted — not yet implemented, on branch
claude/inspiring-volta-g3soeruntil it lands onmain. It predates #172 and is amended with it.
Tasks
- #163 — Boot Android emulators slim: guest RAM, low-RAM mode, and the feature profile. Depends on #148 and #172.
- #164 — Disable background packages on slim Android emulators. Depends on #163.
Written by an agent.
- Ngôn ngữ chính
- TypeScript
- Star
- 19
- Fork
- 1
- Merge trung bình
- 7 giờ 57 phút
- Pull request đã merge (30 ngày)
- 213
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của callstackincubator/simlock
-
Lint does not enforce index.ts boundaries for cleanup/, routing/, warm-pool/ and contract/ helpersCó thể đã có người làm Có pull request liên kết đang mở hoặc đã được merge. Đang mởbug:new
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
callstackincubator/simlock#445 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug:new
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
callstackincubator/simlock#424 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
daemon-lifecycle e2e: the it.fails status test passes for the wrong reasonCó thể đã có người làm @V3RON đã nhận 7 ngày trước. Đang mởbug:triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
callstackincubator/simlock#422 · 1 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
feature:spec
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 8/100
callstackincubator/simlock#602 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
agent-device's gateway side runs as an optional moduleCó thể đã có người làm @V3RON đã nhận 1 ngày trước. Đang mởtask:ready
callstackincubator/simlock#598 · 2 bình luận · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của callstackincubator/simlock
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 80/100
aws/agentcore-cli#2606 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
ai-driven-qa bug Cosmetic
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
Maintainer thường phản hồi trong vòng 1 ngày
-
ai-driven-qa bug claude Minor
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 64/100
linagora/twake-mail-admin#301 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
reproduced
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
anomalyco/opencode#56038 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày