refactor(ncm): 包名 os.meow.ncm→dev.player.ncm(非系统应用,不用 os.meow.* 保留前缀;卡上目录+MeowData+logs 已同步迁移,登录态保留)

This commit is contained in:
MeowOS committed 2026-08-31 12:50:32 +08:00
1 parent 5fbf30755c
commit f20e4cddd0
17 files changed
+24 -24

No files matched your search

+1 -1
View File
@@ -1 +1 @@
{"name":"网易云音乐","exec":"/usr/data/mnt/sd_0/MeowAPPs/os.meow.ncm/ncm","package":"os.meow.ncm","version":"0.1","version_code":1,"framework":1,"immersive":1,"fonts":"gbk","author":"MeowOS"}
{"name":"网易云音乐","exec":"/usr/data/mnt/sd_0/MeowAPPs/dev.player.ncm/ncm","package":"dev.player.ncm","version":"0.1","version_code":1,"framework":1,"immersive":1,"fonts":"gbk","author":"MeowOS"}
+2 -2
View File
@@ -1,4 +1,4 @@
/* app.c — os.meow.ncm 应用装配层:main + 组装 + 事件分发。
/* app.c — dev.player.ncm 应用装配层:main + 组装 + 事件分发。
*
* 职责(对齐 hello_app/app.c):main 只做初始化/建页/跑事件循环/清理;把 meow_ui_run 的平铺输入
* 回调(key/tap/swipe/tick/touch)路由到当前活动页。页面切换统一走 meow_view_page_push/pop/replace。
@@ -110,7 +110,7 @@ int main(void)
appstate_init();
/* M2.82-联调修复:设备无系统 CA 库(真机 rc=-5 TLS 错误根因)——App 自带 Mozilla CA bundle,
* 显式指给 core HTTP 层(保持 verify=1,不降级为不校验) */
ncm_http_set_verify_default(1, "/usr/data/mnt/sd_0/MeowAPPs/os.meow.ncm/cacert.pem");
ncm_http_set_verify_default(1, "/usr/data/mnt/sd_0/MeowAPPs/dev.player.ncm/cacert.pem");
/* 播放 + 媒体会话线程(UI 不卡;无 launcher socket 时 ipc 优雅跳过) */
player_manager_start();
+1 -1
View File
@@ -4,7 +4,7 @@
#include <stdlib.h>
#include <string.h>
#define NCM_DEFAULT_DATA "/usr/data/mnt/sd_0/MeowData/os.meow.ncm/data"
#define NCM_DEFAULT_DATA "/usr/data/mnt/sd_0/MeowData/dev.player.ncm/data"
int appstate_init(void)
{
+3 -3
View File
@@ -1,4 +1,4 @@
/* ncm_app_internal.h — os.meow.ncm 应用内部共享头(UI 各页 + app 装配层 + 宿主测试面)。
/* ncm_app_internal.h — dev.player.ncm 应用内部共享头(UI 各页 + app 装配层 + 宿主测试面)。
*
* 层级(对齐 hello_app/app.c 批② + files_app):
* - app.c main + 装配 + 事件分发(把 meow_ui_run 的平铺回调路由到各页)
@@ -85,7 +85,7 @@ extern const char *media; /* 占位 */
/* ---- App 全局状态(main 线程拥有;play 线程经 ncm_play_run 共享)---- */
typedef struct ncm_app_state {
ncm_ctx_t ctx; /* 核心库上下文(device_id/cookie/cache) */
char data_dir[512]; /* 数据目录(MeowData/os.meow.ncm/data) */
char data_dir[512]; /* 数据目录(MeowData/dev.player.ncm/data) */
char cache_dir[512];
/* 登录 */
@@ -120,7 +120,7 @@ typedef struct ncm_app_state {
int lyric_line_count;
int cur_lyric_line;
/* 设置(持久化 MeowData/os.meow.ncm/data)*/
/* 设置(持久化 MeowData/dev.player.ncm/data)*/
int level; /* NCM_LEVEL_* */
int cache_limit_gb;
+2 -2
View File
@@ -96,7 +96,7 @@ static void send_meta(int fd, uint32_t req_id)
{
m_meta_t mm;
memset(&mm, 0, sizeof mm);
ncm_strlcpy(mm.app_id, "os.meow.ncm", sizeof mm.app_id);
ncm_strlcpy(mm.app_id, "dev.player.ncm", sizeof mm.app_id);
int idx = player_manager_playing_song();
pthread_mutex_lock(&g_play.mu);
@@ -156,7 +156,7 @@ static void *ipc_thread(void *arg)
m_hello_t h;
memset(&h, 0, sizeof h);
ncm_strlcpy(h.app_id, "os.meow.ncm", sizeof h.app_id);
ncm_strlcpy(h.app_id, "dev.player.ncm", sizeof h.app_id);
h.version = 1;
h.flags = MF_PLAYBACK;
if (send_frame(fd, MSG_HELLO, 1, &h, sizeof h) != 0) { close(fd); return NULL; }
+1 -1
View File
@@ -1,4 +1,4 @@
/* ui/common/chrome.c — os.meow.ncm 共享 chrome(TopAppBar 建置 / 几何 / 空态&页脚 / 底部提示条)。
/* ui/common/chrome.c — dev.player.ncm 共享 chrome(TopAppBar 建置 / 几何 / 空态&页脚 / 底部提示条)。
*
* 与 files_app/ui/common/chrome.c 同理:把「页面 chrome 固定不随内容重建」分出去。绘制全部读
* meow_theme_get() 语义色(§8.1),不硬编码配色。topbar 由 meow_topappbar 建,自动注册进绘制物
+1 -1
View File
@@ -1,7 +1,7 @@
/* ui/settings.c — 设置页(ACT_SETTINGS)。
*
* 行项:音质(Hi-res/较高/标准,默认 Hi-res)+ 缓存上限(1~100GB,默认 10GB)+ 退出登录。
* 设置持久化到 MeowData/os.meow.ncm/data(meow_config_*;缓存上限键 ncm.cache_limit_gb 与核心库
* 设置持久化到 MeowData/dev.player.ncm/data(meow_config_*;缓存上限键 ncm.cache_limit_gb 与核心库
* ncm_cache_load_setting 对齐)。音质/上限经 BottomSheet 选择;退出登录经 confirm 弹窗。
* 空态/绘制用 custom 绘制物 + 手动行命中(仅 3 行,无需列表滚动)。
*/
+2 -2
View File
@@ -10,8 +10,8 @@
#include <string.h>
int main(int argc, char **argv) {
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/os.meow.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/os.meow.ncm/cacert.pem";
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/dev.player.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/dev.player.ncm/cacert.pem";
ncm_ctx_t ctx;
ncm_ctx_init(&ctx, data_dir);
+2 -2
View File
@@ -9,8 +9,8 @@
#include <string.h>
int main(int argc, char **argv) {
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/os.meow.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/os.meow.ncm/cacert.pem";
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/dev.player.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/dev.player.ncm/cacert.pem";
ncm_ctx_t ctx;
ncm_ctx_init(&ctx, data_dir);
+2 -2
View File
@@ -38,8 +38,8 @@ static void run_chain(const char *pid, const char *label, int expect, int cap)
int main(int argc, char **argv)
{
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/os.meow.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/os.meow.ncm/cacert.pem";
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/dev.player.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/dev.player.ncm/cacert.pem";
ncm_ctx_init(&ncm_ctx, data_dir);
printf("device_id=%s cookie_len=%zu\n", ncm_ctx.device_id, strlen(ncm_ctx.cookie));
ncm_http_set_verify_default(1, cacert);
+2 -2
View File
@@ -9,8 +9,8 @@
#include <string.h>
int main(int argc, char **argv) {
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/os.meow.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/os.meow.ncm/cacert.pem";
const char *data_dir = argc > 1 ? argv[1] : "/usr/data/mnt/sd_0/MeowData/dev.player.ncm/data";
const char *cacert = argc > 2 ? argv[2] : "/usr/data/mnt/sd_0/MeowAPPs/dev.player.ncm/cacert.pem";
ncm_ctx_t ctx;
ncm_ctx_init(&ctx, data_dir);
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# build_ncm.sh — 构建 os.meow.ncm(网易云 App,SDK framework=1):链 meow_ui.a + 核心库 + minimp3 + mbedtls。
# build_ncm.sh — 构建 dev.player.ncm(网易云 App,SDK framework=1):链 meow_ui.a + 核心库 + minimp3 + mbedtls。
# 静态 MIPS32r2 (musl sf)。自有代码(app/ + core/)+ core 支撑 vendor 编译;vendor/minimp3/qrcodegen/jsmn 豁免告警。
# 仅改本 App 目录;编译期不改 SDK(patch_v2/sdk/)、不动 meow_launcherd/。mipsel -Wall -Wextra 0 warning。
set -e
+1 -1
View File
@@ -1,5 +1,5 @@
#!/bin/bash
# build_ncm_host.sh — 宿主编译 os.meow.ncm 真实页面(离屏 480x720),用于 MEOW_UI_DUMP 截图自查。
# build_ncm_host.sh — 宿主编译 dev.player.ncm 真实页面(离屏 480x720),用于 MEOW_UI_DUMP 截图自查。
# 思路:gcc 编 SDK 源码(-DMEOW_UI_HOST_TEST, meow_font 打桩 meow_ui_global/render) + 应用源码 +
# 宿主核心库对象(out/core-host/*.o) + 宿主 mbedtls libs。
# 运行:NCM_PAGE=home MEOW_UI_DUMP=/tmp/home.ppm ./ncm_host
+1 -1
View File
@@ -29,7 +29,7 @@ typedef struct ncm_ctx {
int default_level; /* NCM_LEVEL_* 默认音质(Hi-res) */
} ncm_ctx_t;
/* 默认缓存目录(<data_dir>/../cache,即 MeowData/os.meow.ncm/cache)。 */
/* 默认缓存目录(<data_dir>/../cache,即 MeowData/dev.player.ncm/cache)。 */
int ncm_ctx_default_cache_dir(const char *data_dir, char *out, size_t out_sz);
/* 初始化上下文:store(数据目录) + deviceId 载入/生成 + cookie 载入 + cache 目录 + 缓存上限配置。 */
+1 -1
View File
@@ -1,6 +1,6 @@
/* ncm_cache.h — 听过的歌自动缓存(LRU 淘汰到上限)
*
* 目录:MeowData/os.meow.ncm/cache/(可被 ncm_cache_set_base_dir 覆盖)。
* 目录:MeowData/dev.player.ncm/cache/(可被 ncm_cache_set_base_dir 覆盖)。
* 上限:默认 10GB,可配 1~100GB,配置键 ncm.cache_limit_gb(MeowOS 设置,读 <data_dir>/<key>.cfg)。
* LRU:以文件 mtime 作为最后访问时间(lookup/commit 时刷新);超限时按 mtime 升序删最旧。
* 命中缓存即可离线播放(ncm_cache_lookup 返回已缓存文件路径)。
+1 -1
View File
@@ -17,7 +17,7 @@
#define SESSION_FILE "session.enc"
#define SESSION_MAGIC "NCM1"
#define SESSION_MAGIC_LEN 4
#define SESSION_SALT "os.meow.ncm.session.v1"
#define SESSION_SALT "dev.player.ncm.session.v1"
#define DEVICE_FILE "deviceId"
#define MKEY_FILE ".mkey"
Binary file not shown.