Repository navigation
MoonCast 0.5.1
Pre-release历史版本 / Historical release · 2026-10-12 · 手机与电视统一版 / unified phone and TV
原 APK 版本 / Original APK version:0.5.1-community(versionCode 51); original tag:community-v0.5.1.
仅整理展示名称,原附件、签名和链接未更改。下载当前 MoonCast 0.7。 / Display name standardized only; original assets, signatures and links are unchanged. Download current MoonCast 0.7.
MoonCast 0.5.1 Community / 社区版
Known limitations / 已知限制
This is a community preview. Builds, signing and a synthetic same-certificate upgrade passed, but the overall CI failed: Android 15 hit a startup ANR during the next locale process, and Android 11 lost its package-manager service during install. Full UI regression, screenshots, GIFs and physical-device casting remain unverified. CPU saturation was recorded; the ANR root cause is not established.
这是社区预览版。构建、签名及合成同签名覆盖升级通过,但整轮 CI 失败:Android 15 在后续语言测试启动时发生 ANR,Android 11 安装时包管理服务消失。完整 UI 回归、真实截图、GIF 及实机投屏尚未验证。记录到 CPU 满载,ANR 根因仍未确定。
Previous 0.5.0 remains available / 旧版 0.5.0 仍可下载.
中文
这次更新
- 统一安卓手机发送与电视接收:同一个应用,根据设备选择默认角色,也可在设置中切换。
- 修复 APK 接收服务关闭后立即重开的固定端口竞争,避免偶发端口占用;不改用随机端口。
- 将中英文界面、语言选择与项目说明作为本轮重点;README 重写为完整的统一版介绍,补充场景、能力边界、模型概念图与裁剪算法详解。
- 改为固定社区包名与公开测试签名,为后续社区版覆盖升级建立连续身份。旧 0.5.0 需要一次迁移,以后不会每个版本都换包名。
本次实测结果与已知限制
- 源码提交:
27967d778c55042bb2adc926074bc3b1d94e19b9;CI 与原始日志。聚合构建验证成功,但整轮 CI 结论为失败,不能称全部通过。 - 两个 ARM 架构的 release 构建、lint、ZIP 对齐、固定包名/签名检查、缺失或错误签名拒绝检查及主机单元测试通过。完整源包的 9864 项输入哈希逐一匹配。
- Android 15 x86_64 模拟器真实执行同包名、同签名的合成 versionCode 50→51 覆盖升级:保留首次安装时间及私有数据标记,未卸载。该测试不代表旧 0.5.0 可覆盖升级,也不是发布 ARM APK 的实机安装证明。
- Android 15 的 system 语言选择阶段通过,包括十组中英文资源区分与系统语言解析;随后新进程启动发生 ANR,后续语言、页面、取消交互与截图测试未完成。日志同时显示 CPU 满载,但没有启动线程栈,根因尚不能确定为环境问题或应用问题。
- Android 11 模拟器安装时包管理服务消失,一次标准非流式重试后仍无法安装。此平台的应用运行验证未通过。
- 本轮没有可用的真实 UI 截图或 GIF,也没有手机到家庭电视的实机互通/音画/延迟验证。README 概念图不是运行截图。
投屏画面怎么选
电视「自动去黑边」先检测成对黑边,再等待稳定证据锁定,并在检测到裁剪外新内容时尝试放宽。想保留全部源画面选「适应」;愿意裁掉部分画面以铺满屏幕选「填满」;也可手动调整四边、缩放与位置。
自动检测基于像素阈值与几何规则,不是 AI 语义识别;暗场、字幕和浮层可能影响判断。去黑边不等于任何比例都能无损铺满。手机发送端与电视接收端使用不同规则,详见 README 中的双语算法文档。本轮文档补充不代表新增裁剪能力或新增实机验证。
应用内更换语言先确认结束会话;取消或选择当前语言不停止会话。直接从 Android 系统设置切换语言,现有通知可能需要停止并重开会话后刷新。
下载与升级
- 64 位 ARM 安卓系统选
MoonCast-0.5.1-community-arm64-v8a.apk;32 位 ARM 安卓系统选MoonCast-0.5.1-community-armeabi-v7a.apk。每个 APK 都包含发送与接收角色,不必同时安装两个架构版本。最低 Android 8.0。 - 社区包名:
com.mooncast.community;versionCode:51。 - 固定社区证书 SHA-256:
290e4372fff33c00848758b12275936900b2eccad053dc63c18622e1a1222bb2。 - 原 0.5.0 的临时签名已无法恢复,社区版与旧包可并存以完成一次迁移;配对、权限、设置不会自动跨包复制。运行时只启动一个接收器以避免端口冲突。
- 社区测试密钥有意公开,任何人都能以它签名,不能作为维护者身份凭证。请从可信项目发布页下载并核对发布校验和。未来商店版使用独立包名与私有生产密钥。
协议、安全与验证范围
支持已实现的 AirPlay、DLNA、GameStream 路径;Miracast、Google Cast、Lelink 未实现,不保证出现在安卓系统投屏列表。DRM 或禁止采集内容可能黑屏或无声。镜像为有损编码,不承诺零延迟、无损或所有设备兼容。
APK 推送仅用于可信局域网,使用固定 TCP 48152 的未加密 HTTP。电视主动开启接收并审阅,最终仍需用户确认及 Android 安装器;不支持静默安装或绕过签名、降级、兼容性及分包限制。GameStream 的 PIN 配对保留,只有 APK 传输不需要额外验证码。
本版本的具体构建、检查与设备结果以发布时的验证清单为准。不得把旧独立版模拟器测试、模型概念图或成功编译当成当前手机到真实电视互通证明。APK、完整对应源码及 SHA256SUMS 应一起发布。源码与依赖遵循 LICENSE / THIRD_PARTY_NOTICES.md。当前源码分支为 unified/community;Release 对应源码 ZIP 不含 MoonCast 应用的 PKCS12 签名文件,可通过 -PmooncastUnsignedVerification=true 构建独立无签名验证身份,不能覆盖社区版。完整 Git checkout 提供用户一次初始化的固定公开测试身份及校验记录。
English
This update
- One Android app for phone sending and TV receiving, with a device-appropriate default role and an override in settings.
- Fix a fixed-port close/reopen race in APK receiving without falling back to random ports.
- This round focuses on English/Chinese UI, language selection and project documentation. The full unified README adds scenarios, practical limits, model-generated concept illustrations and a detailed cropping explanation.
- A fixed community package and public test-signing identity establish continuity for future community updates. Moving from 0.5.0 requires one migration; subsequent versions do not change package names each time.
Results and known limitations
- Exact source:
27967d778c55042bb2adc926074bc3b1d94e19b9; CI and raw logs. The aggregate build-verification job passed; the overall workflow failed. This is not an all-green release. - Both ARM release builds, lint, ZIP alignment, fixed package/certificate checks, missing/wrong-signing rejection checks and host unit tests passed. All 9,864 corresponding-source inventory entries matched their hashes.
- An Android 15 x86_64 emulator actually upgraded a synthetic versionCode-50 baseline to 51 with the same package and certificate, retaining first-install time and a private-data marker without uninstalling. This does not establish compatibility with old 0.5.0 or physical-device installation of the ARM APKs.
- The Android 15 system-language selection phase passed, including ten distinct English/Chinese resource groups and system-language resolution. The next process start hit an ANR; remaining locale, page, cancellation and screenshot checks did not complete. CPU saturation was recorded, but no startup thread trace was captured, so an environment-only or app-specific cause is not established.
- The Android 11 emulator lost its package-manager service during installation; one standard non-streamed retry also failed. App-runtime validation on that platform did not pass.
- No usable actual UI screenshots or GIF were produced in this run, and phone-to-physical-TV interoperability, audio/video and latency remain unverified. README concept illustrations are not runtime screenshots.
Choose the right framing
TV Auto checks paired borders, waits for stable evidence and can widen a locked crop when it detects new visible content outside. Choose Fit for the complete source, Fill if you accept cropping picture content to cover the screen, or Manual for independent edges, zoom and position.
Automatic detection uses pixel thresholds and geometry, not AI semantic recognition. Dark scenes, subtitles and overlays can affect it. Removing black borders cannot make every aspect ratio fill a screen without losing content. Sender and receiver use different rules; see the bilingual algorithm documentation linked from the README. Documenting this behavior does not mean this release adds new cropping features or new physical-device evidence.
In-app language changes confirm session cleanup; Cancel or selecting the current language keeps the session. An external Android Settings language change may leave an active notification in its previous language until the session is stopped and restarted.
Downloads and updates
- Choose
MoonCast-0.5.1-community-arm64-v8a.apkfor a 64-bit ARM Android system, orMoonCast-0.5.1-community-armeabi-v7a.apkfor a 32-bit ARM system. Each APK includes both roles; install one ABI variant per device. Minimum Android 8.0. - Community package:
com.mooncast.community; versionCode:51. - Fixed community certificate SHA-256:
290e4372fff33c00848758b12275936900b2eccad053dc63c18622e1a1222bb2. - The old 0.5.0 disposable signing identity is no longer available. The community app can coexist with that old package for a one-time migration; pairing state, permissions and settings do not transfer automatically. Run only one receiver service at a time to avoid port conflicts.
- The community test key is intentionally public. Anyone can sign with it, so it cannot establish maintainer authenticity. Use the trusted project release source and verify its published checksums. A future store edition will use a separate package and private production key.
Protocols, safety and validation
Implemented workflows include AirPlay, DLNA and GameStream. Miracast, Google Cast and Lelink are not implemented; appearing in Android's system Cast picker is not guaranteed. DRM or capture-restricted content may produce black video or no audio. Mirroring is lossy; there is no zero-latency, losslessness or universal-compatibility promise.
APK transfer is for a trusted LAN, using unencrypted HTTP on fixed TCP port 48152. The TV enables reception and reviews the package; user confirmation and Android's installer remain required. It does not silently install or bypass signature, downgrade, compatibility or split-package rules. GameStream PIN pairing remains; only APK transfer needs no extra code.
Consult the final release verification checklist for this version's actual builds, checks and device results. Historical standalone emulator tests, generated illustrations and successful compilation are not proof of current phone-to-physical-TV interoperability. Publish APKs, complete corresponding source and SHA256SUMS together. Source and dependency licenses are in LICENSE / THIRD_PARTY_NOTICES.md. Current source is on unified/community. The Release source ZIP excludes the MoonCast app-signing PKCS12 fixture; -PmooncastUnsignedVerification=true produces a separate unsigned verification identity that cannot update the community app. A full Git checkout supplies the fixed owner-initialized public test identity and checksum records.