smb-vanilla-port
A C and C++ decompilation of the NES games "Super Mario Bros" and "Super Mario Bros: The Lost Levels"
逆向复活锤子音乐,使用现代 Android 技术栈重写
git clone https://github.com/Mangi-11/SmartisanMusic-Revived.gitMangi-11/SmartisanMusic-Revived中文 · English
锤子科技从来不只把自己看作一家做视觉的公司。好看的界面只是起点,产品最终仍要解决真实问题;设计、功能和交互应当保持一致,让第一次使用的人不费力,也让长期使用的人偶尔发现藏在细节里的惊喜。Smartisan 这个名字所代表的“智能时代的工匠”,不是为产品贴上一层漂亮的皮肤,而是认真对待每一次触摸、反馈与停顿。
锤子音乐是这种理念很完整的一次表达。黑胶唱盘、唱针、搓碟和爆豆音让数字音乐重新变成可以触碰的东西,歌曲、专辑和资料库又始终保持清楚、克制。它有拟物的趣味,却不该为了表演牺牲播放和管理;真正值得保留的,正是质感、秩序与实用性之间的平衡。
Smartisan OS 已经退出历史舞台,本项目因此以锤子音乐 8.1.0 为视觉与交互基准,使用现代 Android 技术栈重新实现这款本地音乐播放器。界面尽可能保留原版 XML、Drawable、NinePatch、Selector、动画节奏与控件层级,媒体扫描、后台播放、队列、收藏、播放列表和数据持久化则全部基于公开 Android API 重写。应用只读取和播放设备上的音频文件,不内置内容曲库、账号体系或媒体分发服务。
MediaLibraryService、ExoPlayer 与 MediaSession 重建播放链路,支持后台与锁屏播放、媒体通知、耳机和蓝牙控制,以及进程重启后的队列与进度恢复。应用的最终 Manifest 不包含 INTERNET 权限,运行时不依赖网络,也不会上传歌曲、封面、歌词或资料库信息。
READ_MEDIA_AUDIO 读取设备音频;Android 8.1 至 Android 12 使用受版本限制的 READ_EXTERNAL_STORAGE。FOREGROUND_SERVICE_MEDIA_PLAYBACK 仅用于用户播放音乐时维持后台播放和媒体通知。MODIFY_AUDIO_SETTINGS 用于播放音效与系统音乐音量控制,VIBRATE 用于交互触觉反馈。WRITE_SETTINGS 只在用户主动选择“设置铃声”时使用;应用会先跳转系统授权页面,未获得用户明确授权时不会修改系统设置。WRITE_EXTERNAL_STORAGE,再通过 MediaStore 执行删除。截图中展示的专辑封面、艺人信息和音乐内容版权归原权利人所有,仅用于展示应用界面效果。
| 类别 | 技术 |
|---|---|
| 构建 | Android Gradle Plugin 9.2.1、Gradle 9.4.1、JDK 21(Java 11 字节码) |
| 语言 | Kotlin 2.4.0 |
| UI | XML Layout、Android View、自定义 View、Jetpack Compose |
| 播放 | Media3 1.10.1、ExoPlayer、MediaLibraryService、MediaSession |
| 状态 | Lifecycle、StateFlow、Coroutines |
| 存储 | Room 2.8.4、DataStore 1.2.1、MediaStore |
| SDK | minSdk 27 / targetSdk 36 / compileSdk 37 |
准备 JDK 21 和 Android SDK,然后执行:
./gradlew testDebugUnitTest assembleDebug lintDebug
Debug APK 位于 app/build/outputs/apk/debug/。
如需验证经过代码与资源压缩的发布构建,执行:
./gradlew assembleRelease
Release APK 位于 app/build/outputs/apk/release/SmartisanMusic-Revived-0.1.1.apk。
感谢 People-11 的 SmartisanOS_APP_Port 移植工作。本项目使用该项目提供的 Music_8.1.0.apk 进行逆向分析,用于确认原版资源、页面层级、视觉细节、动画时序与交互行为。
People-11 的工作让原版应用能够在非 Smartisan 设备上继续运行;本项目则重新实现媒体扫描、播放服务、资料库、队列和数据存储,在保留原版设计语言的同时使用现代公开 Android API 承担系统能力。
本项目与字节跳动、锤子科技、realme、OPPO 及相关产品的任何权利方无关,仅为个人兴趣驱动的非官方复刻。
THIRD_PARTY_NOTICES.md。more like this
A C and C++ decompilation of the NES games "Super Mario Bros" and "Super Mario Bros: The Lost Levels"
Demodulate and dissect RF packets from toll booth transponders in the E-ZPass network
search projects, people, and tags