@mison/ag-kit-cn 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
- package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
- package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
- package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
- package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
- package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.agent/.shared/ui-ux-pro-max/scripts/search.py +106 -0
- package/.agent/ARCHITECTURE.md +285 -0
- package/.agent/agents/backend-specialist.md +268 -0
- package/.agent/agents/code-archaeologist.md +106 -0
- package/.agent/agents/database-architect.md +225 -0
- package/.agent/agents/debugger.md +225 -0
- package/.agent/agents/devops-engineer.md +242 -0
- package/.agent/agents/documentation-writer.md +104 -0
- package/.agent/agents/explorer-agent.md +73 -0
- package/.agent/agents/frontend-specialist.md +618 -0
- package/.agent/agents/game-developer.md +162 -0
- package/.agent/agents/mobile-developer.md +382 -0
- package/.agent/agents/orchestrator.md +438 -0
- package/.agent/agents/penetration-tester.md +188 -0
- package/.agent/agents/performance-optimizer.md +187 -0
- package/.agent/agents/product-manager.md +112 -0
- package/.agent/agents/product-owner.md +95 -0
- package/.agent/agents/project-planner.md +405 -0
- package/.agent/agents/qa-automation-engineer.md +103 -0
- package/.agent/agents/security-auditor.md +170 -0
- package/.agent/agents/seo-specialist.md +111 -0
- package/.agent/agents/test-engineer.md +158 -0
- package/.agent/mcp_config.json +12 -0
- package/.agent/rules/GEMINI.md +273 -0
- package/.agent/scripts/auto_preview.py +148 -0
- package/.agent/scripts/checklist.py +217 -0
- package/.agent/scripts/session_manager.py +120 -0
- package/.agent/scripts/verify_all.py +327 -0
- package/.agent/skills/api-patterns/SKILL.md +84 -0
- package/.agent/skills/api-patterns/api-style.md +42 -0
- package/.agent/skills/api-patterns/auth.md +24 -0
- package/.agent/skills/api-patterns/documentation.md +26 -0
- package/.agent/skills/api-patterns/graphql.md +41 -0
- package/.agent/skills/api-patterns/rate-limiting.md +31 -0
- package/.agent/skills/api-patterns/response.md +37 -0
- package/.agent/skills/api-patterns/rest.md +40 -0
- package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agent/skills/api-patterns/security-testing.md +122 -0
- package/.agent/skills/api-patterns/trpc.md +41 -0
- package/.agent/skills/api-patterns/versioning.md +22 -0
- package/.agent/skills/app-builder/SKILL.md +75 -0
- package/.agent/skills/app-builder/agent-coordination.md +74 -0
- package/.agent/skills/app-builder/feature-building.md +53 -0
- package/.agent/skills/app-builder/project-detection.md +34 -0
- package/.agent/skills/app-builder/scaffolding.md +118 -0
- package/.agent/skills/app-builder/tech-stack.md +40 -0
- package/.agent/skills/app-builder/templates/SKILL.md +39 -0
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +122 -0
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +169 -0
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +134 -0
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +119 -0
- package/.agent/skills/architecture/SKILL.md +57 -0
- package/.agent/skills/architecture/context-discovery.md +43 -0
- package/.agent/skills/architecture/examples.md +94 -0
- package/.agent/skills/architecture/pattern-selection.md +68 -0
- package/.agent/skills/architecture/patterns-reference.md +50 -0
- package/.agent/skills/architecture/trade-off-analysis.md +77 -0
- package/.agent/skills/bash-linux/SKILL.md +201 -0
- package/.agent/skills/behavioral-modes/SKILL.md +264 -0
- package/.agent/skills/brainstorming/SKILL.md +164 -0
- package/.agent/skills/brainstorming/dynamic-questioning.md +359 -0
- package/.agent/skills/clean-code/SKILL.md +200 -0
- package/.agent/skills/code-review-checklist/SKILL.md +125 -0
- package/.agent/skills/database-design/SKILL.md +54 -0
- package/.agent/skills/database-design/database-selection.md +43 -0
- package/.agent/skills/database-design/indexing.md +39 -0
- package/.agent/skills/database-design/migrations.md +50 -0
- package/.agent/skills/database-design/optimization.md +36 -0
- package/.agent/skills/database-design/orm-selection.md +30 -0
- package/.agent/skills/database-design/schema-design.md +56 -0
- package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agent/skills/deployment-procedures/SKILL.md +241 -0
- package/.agent/skills/doc.md +177 -0
- package/.agent/skills/documentation-templates/SKILL.md +194 -0
- package/.agent/skills/frontend-design/SKILL.md +418 -0
- package/.agent/skills/frontend-design/animation-guide.md +331 -0
- package/.agent/skills/frontend-design/color-system.md +307 -0
- package/.agent/skills/frontend-design/decision-trees.md +418 -0
- package/.agent/skills/frontend-design/motion-graphics.md +306 -0
- package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agent/skills/frontend-design/scripts/ux_audit.py +727 -0
- package/.agent/skills/frontend-design/typography-system.md +345 -0
- package/.agent/skills/frontend-design/ux-psychology.md +1118 -0
- package/.agent/skills/frontend-design/visual-effects.md +383 -0
- package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
- package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
- package/.agent/skills/game-development/SKILL.md +167 -0
- package/.agent/skills/game-development/game-art/SKILL.md +185 -0
- package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
- package/.agent/skills/game-development/game-design/SKILL.md +129 -0
- package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
- package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
- package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
- package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
- package/.agent/skills/game-development/web-games/SKILL.md +150 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +155 -0
- package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agent/skills/i18n-localization/SKILL.md +154 -0
- package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agent/skills/intelligent-routing/SKILL.md +335 -0
- package/.agent/skills/lint-and-validate/SKILL.md +44 -0
- package/.agent/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agent/skills/mcp-builder/SKILL.md +176 -0
- package/.agent/skills/mobile-design/SKILL.md +394 -0
- package/.agent/skills/mobile-design/decision-trees.md +516 -0
- package/.agent/skills/mobile-design/mobile-backend.md +491 -0
- package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
- package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
- package/.agent/skills/mobile-design/mobile-design-thinking.md +355 -0
- package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
- package/.agent/skills/mobile-design/mobile-performance.md +767 -0
- package/.agent/skills/mobile-design/mobile-testing.md +356 -0
- package/.agent/skills/mobile-design/mobile-typography.md +432 -0
- package/.agent/skills/mobile-design/platform-android.md +666 -0
- package/.agent/skills/mobile-design/platform-ios.md +561 -0
- package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agent/skills/mobile-design/touch-psychology.md +537 -0
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +311 -0
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +241 -0
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +489 -0
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +263 -0
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +581 -0
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +431 -0
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +683 -0
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +149 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +286 -0
- package/.agent/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agent/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
- package/.agent/skills/parallel-agents/SKILL.md +194 -0
- package/.agent/skills/performance-profiling/SKILL.md +149 -0
- package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agent/skills/plan-writing/SKILL.md +152 -0
- package/.agent/skills/powershell-windows/SKILL.md +166 -0
- package/.agent/skills/python-patterns/SKILL.md +441 -0
- package/.agent/skills/red-team-tactics/SKILL.md +203 -0
- package/.agent/skills/rust-pro/SKILL.md +190 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +135 -0
- package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +215 -0
- package/.agent/skills/server-management/SKILL.md +161 -0
- package/.agent/skills/systematic-debugging/SKILL.md +114 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
- package/.agent/skills/tdd-workflow/SKILL.md +149 -0
- package/.agent/skills/testing-patterns/SKILL.md +178 -0
- package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
- package/.agent/skills/vulnerability-scanner/checklists.md +131 -0
- package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +459 -0
- package/.agent/skills/web-design-guidelines/SKILL.md +57 -0
- package/.agent/skills/webapp-testing/SKILL.md +187 -0
- package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agent/workflows/brainstorm.md +113 -0
- package/.agent/workflows/create.md +59 -0
- package/.agent/workflows/debug.md +103 -0
- package/.agent/workflows/deploy.md +176 -0
- package/.agent/workflows/enhance.md +63 -0
- package/.agent/workflows/orchestrate.md +242 -0
- package/.agent/workflows/plan.md +89 -0
- package/.agent/workflows/preview.md +80 -0
- package/.agent/workflows/restore-localize-compat.md +525 -0
- package/.agent/workflows/status.md +86 -0
- package/.agent/workflows/test.md +144 -0
- package/.agent/workflows/ui-ux-pro-max.md +295 -0
- package/AGENT_FLOW.md +609 -0
- package/CHANGELOG.md +68 -0
- package/LICENSE +21 -0
- package/README.md +260 -0
- package/bin/adapters/base.js +63 -0
- package/bin/adapters/codex.js +391 -0
- package/bin/adapters/gemini.js +137 -0
- package/bin/ag-kit.js +1336 -0
- package/bin/core/builder.js +80 -0
- package/bin/core/generator.js +59 -0
- package/bin/core/resource-loader.js +64 -0
- package/bin/core/transformer.js +208 -0
- package/bin/interactive.js +65 -0
- package/bin/utils/atomic-writer.js +97 -0
- package/bin/utils/git-helper.js +68 -0
- package/bin/utils/managed-block.js +65 -0
- package/bin/utils/manifest.js +241 -0
- package/bin/utils.js +82 -0
- package/docs/codex-rules-template.md +36 -0
- package/docs/mapping-spec.md +68 -0
- package/docs/multi-target-adapter.md +80 -0
- package/docs/official/README.md +53 -0
- package/docs/official/antigravity/agent-modes-settings.md +64 -0
- package/docs/official/antigravity/rules-workflows.md +96 -0
- package/docs/official/antigravity/skills.md +147 -0
- package/docs/official/codex/agents-md.md +119 -0
- package/docs/official/codex/config-advanced.md +358 -0
- package/docs/official/codex/config-basic.md +141 -0
- package/docs/official/codex/config-reference.md +223 -0
- package/docs/official/codex/config-sample.md +216 -0
- package/docs/official/codex/mcp.md +107 -0
- package/docs/official/codex/rules.md +79 -0
- package/docs/official/codex/skills.md +114 -0
- package/docs/official/sources-index.md +32 -0
- package/docs/operations.md +145 -0
- package/docs/terminology-style-guide.md +69 -0
- package/package.json +51 -0
- package/scripts/postinstall-check.js +112 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
# 移动端颜色系统参考(Mobile Color System Reference)
|
|
2
|
+
|
|
3
|
+
> OLED 优化、暗色模式、电量友好颜色与户外可见性。
|
|
4
|
+
> **移动端颜色不是“审美问题”,还是“电量与可用性问题”。**
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. 移动端颜色基础(Mobile Color Fundamentals)
|
|
9
|
+
|
|
10
|
+
### 为什么移动端颜色不同(Why Mobile Color is Different)
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
DESKTOP: MOBILE:
|
|
14
|
+
├── LCD 屏(背光) ├── OLED 普及(自发光)
|
|
15
|
+
├── 光照可控 ├── 户外/强光
|
|
16
|
+
├── 电源稳定 ├── 电量敏感
|
|
17
|
+
├── 偏好导向 ├── 系统级暗色模式
|
|
18
|
+
└── 观看稳定 └── 角度/运动变化大
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### 移动端颜色优先级(Mobile Color Priorities)
|
|
22
|
+
|
|
23
|
+
| 优先级 | 原因 |
|
|
24
|
+
|--------|------|
|
|
25
|
+
| **1. 可读性** | 户外与光照变化 |
|
|
26
|
+
| **2. 电量效率** | OLED 下暗色更省电 |
|
|
27
|
+
| **3. 系统集成** | 暗色/亮色模式支持 |
|
|
28
|
+
| **4. 语义色** | 错误/成功/警告 |
|
|
29
|
+
| **5. 品牌色** | 在功能满足后考虑 |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 2. OLED 注意事项(OLED Considerations)
|
|
34
|
+
|
|
35
|
+
### OLED 与 LCD 的差异
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
LCD(液晶):
|
|
39
|
+
├── 背光一直开
|
|
40
|
+
├── 黑色 = 背光穿过暗滤光层
|
|
41
|
+
├── 能耗基本恒定
|
|
42
|
+
└── 暗色模式几乎不省电
|
|
43
|
+
|
|
44
|
+
OLED(有机发光):
|
|
45
|
+
├── 每个像素自发光
|
|
46
|
+
├── 黑色 = 像素关闭(0 功耗)
|
|
47
|
+
├── 能耗随亮度变化
|
|
48
|
+
└── 暗色模式可显著省电
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### OLED 省电与颜色
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
颜色能耗(相对):
|
|
55
|
+
|
|
56
|
+
#000000(纯黑) ████░░░░░░ 0%
|
|
57
|
+
#1A1A1A(近黑) █████░░░░░ ~15%
|
|
58
|
+
#333333(深灰) ██████░░░░ ~30%
|
|
59
|
+
#666666(中灰) ███████░░░ ~50%
|
|
60
|
+
#FFFFFF(白色) ██████████ 100%
|
|
61
|
+
|
|
62
|
+
高饱和色也耗电:
|
|
63
|
+
├── 蓝色像素:最省电
|
|
64
|
+
├── 绿色像素:中等
|
|
65
|
+
├── 红色像素:最耗电
|
|
66
|
+
└── 去饱和色更省电
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 纯黑 vs 近黑
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
#000000(纯黑):
|
|
73
|
+
├── 省电最大
|
|
74
|
+
├── 滚动时可能“黑色拖影”
|
|
75
|
+
├── 对比极强,略刺眼
|
|
76
|
+
└── Apple 纯暗色常用
|
|
77
|
+
|
|
78
|
+
#121212 或 #1A1A1A(近黑):
|
|
79
|
+
├── 仍然省电
|
|
80
|
+
├── 滚动更平滑
|
|
81
|
+
├── 眼睛更舒适
|
|
82
|
+
└── Material 推荐
|
|
83
|
+
|
|
84
|
+
建议:背景用 #000000,表面用 #0D0D0D-#1A1A1A
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 3. 暗色模式设计(Dark Mode Design)
|
|
90
|
+
|
|
91
|
+
### 暗色模式的价值
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
用户启用暗色模式通常为了:
|
|
95
|
+
├── 省电(OLED)
|
|
96
|
+
├── 减少眼疲劳(弱光)
|
|
97
|
+
├── 个人偏好
|
|
98
|
+
├── AMOLED 风格
|
|
99
|
+
└── 无障碍(光敏感)
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 暗色模式配色策略
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
LIGHT MODE DARK MODE
|
|
106
|
+
────────── ─────────
|
|
107
|
+
Background: #FFFFFF → #000000 or #121212
|
|
108
|
+
Surface: #F5F5F5 → #1E1E1E
|
|
109
|
+
Surface 2: #EEEEEE → #2C2C2C
|
|
110
|
+
|
|
111
|
+
Primary: #1976D2 → #90CAF9(更亮)
|
|
112
|
+
Text: #212121 → #E0E0E0(非纯白)
|
|
113
|
+
Secondary: #757575 → #9E9E9E
|
|
114
|
+
|
|
115
|
+
暗色模式的“层级”靠亮度:
|
|
116
|
+
├── 更高层级 = 表面更亮
|
|
117
|
+
├── 0dp → 0% overlay
|
|
118
|
+
├── 4dp → 9% overlay
|
|
119
|
+
├── 8dp → 12% overlay
|
|
120
|
+
└── 用亮度层级营造深度
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 暗色模式文本颜色
|
|
124
|
+
|
|
125
|
+
| 角色 | Light Mode | Dark Mode |
|
|
126
|
+
|------|------------|-----------|
|
|
127
|
+
| Primary | #000000 | #E8E8E8(非纯白) |
|
|
128
|
+
| Secondary | #666666 | #B0B0B0 |
|
|
129
|
+
| Disabled | #9E9E9E | #6E6E6E |
|
|
130
|
+
| Links | #1976D2 | #8AB4F8 |
|
|
131
|
+
|
|
132
|
+
### 颜色反转规则
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
不要直接反转颜色:
|
|
136
|
+
├── 高饱和色会刺眼
|
|
137
|
+
├── 语义色失去含义
|
|
138
|
+
├── 品牌色被破坏
|
|
139
|
+
└── 对比变化不可控
|
|
140
|
+
|
|
141
|
+
应当构建独立的暗色 palette:
|
|
142
|
+
├── 适度去饱和
|
|
143
|
+
├── 用更亮的色阶做强调
|
|
144
|
+
├── 语义色保持含义
|
|
145
|
+
└── 独立检查对比度
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 4. 户外可见性(Outdoor Visibility)
|
|
151
|
+
|
|
152
|
+
### 强光问题(The Sunlight Problem)
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
户外屏幕可见性问题:
|
|
156
|
+
├── 强光冲淡低对比
|
|
157
|
+
├── 眩光降低可读性
|
|
158
|
+
├── 偏光镜影响显示
|
|
159
|
+
└── 用户用手遮挡屏幕
|
|
160
|
+
|
|
161
|
+
受影响元素:
|
|
162
|
+
├── 浅灰文字 + 白底
|
|
163
|
+
├── 轻微色差
|
|
164
|
+
├── 低透明覆盖
|
|
165
|
+
└── 粉彩色
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 高对比策略(High Contrast Strategies)
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
户外可见性原则:
|
|
172
|
+
|
|
173
|
+
最低对比要求:
|
|
174
|
+
├── 正文:4.5:1(WCAG AA)
|
|
175
|
+
├── 大字:3:1(WCAG AA)
|
|
176
|
+
├── 推荐:7:1+(AAA)
|
|
177
|
+
|
|
178
|
+
避免:
|
|
179
|
+
├── #999 on #FFF(不达标)
|
|
180
|
+
├── #BBB on #FFF(不达标)
|
|
181
|
+
├── 浅色 + 浅背景
|
|
182
|
+
└── 关键内容用细微渐变
|
|
183
|
+
|
|
184
|
+
应该:
|
|
185
|
+
├── 使用系统语义色
|
|
186
|
+
├── 强光环境实测
|
|
187
|
+
├── 提供高对比模式
|
|
188
|
+
└── 关键 UI 使用纯色
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## 5. 语义色(Semantic Colors)
|
|
194
|
+
|
|
195
|
+
### 含义一致性(Consistent Meaning)
|
|
196
|
+
|
|
197
|
+
| 语义 | 含义 | iOS 默认 | Android 默认 |
|
|
198
|
+
|------|------|----------|-------------|
|
|
199
|
+
| Error | 问题/破坏 | #FF3B30 | #B3261E |
|
|
200
|
+
| Success | 成功/完成 | #34C759 | #4CAF50 |
|
|
201
|
+
| Warning | 注意/警告 | #FF9500 | #FFC107 |
|
|
202
|
+
| Info | 信息提示 | #007AFF | #2196F3 |
|
|
203
|
+
|
|
204
|
+
### 语义色规则(Semantic Color Rules)
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
不要用语义色做:
|
|
208
|
+
├── 品牌色(混淆含义)
|
|
209
|
+
├── 纯装饰(削弱语义)
|
|
210
|
+
├── 随意点缀
|
|
211
|
+
└── 仅用颜色提示状态
|
|
212
|
+
|
|
213
|
+
必须:
|
|
214
|
+
├── 搭配图标(色盲用户)
|
|
215
|
+
├── 明暗模式保持一致
|
|
216
|
+
├── 全 App 语义一致
|
|
217
|
+
└── 遵循平台习惯
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### 错误态颜色(Error State Colors)
|
|
221
|
+
|
|
222
|
+
```
|
|
223
|
+
错误态需要:
|
|
224
|
+
├── 偏红色(语义)
|
|
225
|
+
├── 高对比
|
|
226
|
+
├── 图标强化
|
|
227
|
+
├── 清晰文字解释
|
|
228
|
+
|
|
229
|
+
iOS:
|
|
230
|
+
├── Light:#FF3B30
|
|
231
|
+
├── Dark:#FF453A
|
|
232
|
+
|
|
233
|
+
Android:
|
|
234
|
+
├── Light:#B3261E
|
|
235
|
+
├── Dark:#F2B8B5(在 error container)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 6. 动态颜色(Dynamic Color, Android)
|
|
241
|
+
|
|
242
|
+
### Material You
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
Android 12+ 动态颜色:
|
|
246
|
+
|
|
247
|
+
用户壁纸 → 颜色抽取 → App 主题
|
|
248
|
+
|
|
249
|
+
系统自动提供:
|
|
250
|
+
├── Primary(主色)
|
|
251
|
+
├── Secondary(辅助色)
|
|
252
|
+
├── Tertiary(强调色)
|
|
253
|
+
├── Surface(中性表面)
|
|
254
|
+
├── On-colors(文本/前景色)
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### 动态颜色支持
|
|
258
|
+
|
|
259
|
+
```kotlin
|
|
260
|
+
// Jetpack Compose
|
|
261
|
+
MaterialTheme(
|
|
262
|
+
colorScheme = dynamicColorScheme()
|
|
263
|
+
?: staticColorScheme() // 旧系统兜底
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
// React Native
|
|
267
|
+
// 支持有限,可考虑 react-native-material-you
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### 兜底颜色(Fallback Colors)
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
动态颜色不可用时:
|
|
274
|
+
├── Android < 12
|
|
275
|
+
├── 用户关闭动态颜色
|
|
276
|
+
├── 启动器不支持
|
|
277
|
+
|
|
278
|
+
提供静态配色:
|
|
279
|
+
├── 定义品牌色
|
|
280
|
+
├── 测试明暗模式
|
|
281
|
+
├── 角色对应一致
|
|
282
|
+
└── 支持 light + dark
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## 7. 颜色无障碍(Color Accessibility)
|
|
288
|
+
|
|
289
|
+
### 色盲考虑(Colorblind Considerations)
|
|
290
|
+
|
|
291
|
+
```
|
|
292
|
+
约 8% 男性、0.5% 女性存在色盲
|
|
293
|
+
|
|
294
|
+
类型:
|
|
295
|
+
├── Protanopia(红弱)
|
|
296
|
+
├── Deuteranopia(绿弱)
|
|
297
|
+
├── Tritanopia(蓝弱)
|
|
298
|
+
├── Monochromacy(极少见)
|
|
299
|
+
|
|
300
|
+
设计规则:
|
|
301
|
+
├── 不依赖颜色单一传达
|
|
302
|
+
├── 使用纹理/图标/文字
|
|
303
|
+
├── 用模拟器测试
|
|
304
|
+
├── 避免仅红/绿区分
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### 对比度测试工具(Contrast Testing Tools)
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
建议工具:
|
|
311
|
+
├── Xcode 无障碍检查器
|
|
312
|
+
├── Android Accessibility Scanner
|
|
313
|
+
├── 对比度计算器
|
|
314
|
+
├── 色盲模拟器
|
|
315
|
+
└── 真机强光测试
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### 充足对比(Sufficient Contrast)
|
|
319
|
+
|
|
320
|
+
```
|
|
321
|
+
WCAG 指南:
|
|
322
|
+
|
|
323
|
+
AA(最低)
|
|
324
|
+
├── 正文:4.5:1
|
|
325
|
+
├── 大字(18pt+):3:1
|
|
326
|
+
├── UI 组件:3:1
|
|
327
|
+
|
|
328
|
+
AAA(增强)
|
|
329
|
+
├── 正文:7:1
|
|
330
|
+
├── 大字:4.5:1
|
|
331
|
+
|
|
332
|
+
移动端建议:满足 AA,尽量达到 AAA
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## 8. 颜色反模式(Color Anti-Patterns)
|
|
338
|
+
|
|
339
|
+
### ❌ 常见错误
|
|
340
|
+
|
|
341
|
+
| 错误 | 问题 | 修复 |
|
|
342
|
+
|------|------|------|
|
|
343
|
+
| **浅灰对白** | 户外不可见 | 对比 ≥ 4.5:1 |
|
|
344
|
+
| **暗色模式用纯白** | 刺眼 | 用 #E0E0E0-#F0F0F0 |
|
|
345
|
+
| **暗色仍用高饱和** | 过亮刺眼 | 去饱和 |
|
|
346
|
+
| **只用红/绿区分** | 色盲无法识别 | 加图标 |
|
|
347
|
+
| **用语义色做品牌色** | 含义混淆 | 品牌色用中性 |
|
|
348
|
+
| **忽略系统暗色模式** | 体验跳变 | 支持两种模式 |
|
|
349
|
+
|
|
350
|
+
### ❌ AI 常见颜色错误
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
AI 常见问题:
|
|
354
|
+
├── 明暗模式用同一套颜色
|
|
355
|
+
├── 忽略 OLED 电量
|
|
356
|
+
├── 不计算对比度
|
|
357
|
+
├── 默认紫色/紫罗兰(BANNED)
|
|
358
|
+
├── 低对比“审美灰”
|
|
359
|
+
├── 不做户外测试
|
|
360
|
+
└── 忽视色盲用户
|
|
361
|
+
|
|
362
|
+
规则:按最差条件设计。
|
|
363
|
+
必须在强光、色盲模拟、低电量场景下验证。
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## 9. 颜色系统清单(Color System Checklist)
|
|
369
|
+
|
|
370
|
+
### 选色前(Before Choosing Colors)
|
|
371
|
+
|
|
372
|
+
- [ ] 明暗模式色板已定义?
|
|
373
|
+
- [ ] 对比度 ≥ 4.5:1?
|
|
374
|
+
- [ ] OLED 电量是否考虑?
|
|
375
|
+
- [ ] 语义色遵循平台习惯?
|
|
376
|
+
- [ ] 色盲可用性保障?
|
|
377
|
+
|
|
378
|
+
### 发布前(Before Release)
|
|
379
|
+
|
|
380
|
+
- [ ] 强光环境可读性测试?
|
|
381
|
+
- [ ] OLED 真机暗色测试?
|
|
382
|
+
- [ ] 系统暗色模式是否尊重?
|
|
383
|
+
- [ ] Android 动态颜色支持?
|
|
384
|
+
- [ ] Error/Success/Warning 一致?
|
|
385
|
+
- [ ] 所有文本对比达标?
|
|
386
|
+
|
|
387
|
+
---
|
|
388
|
+
|
|
389
|
+
## 10. 速查(Quick Reference)
|
|
390
|
+
|
|
391
|
+
### 暗色模式背景色(Dark Mode Backgrounds)
|
|
392
|
+
|
|
393
|
+
```
|
|
394
|
+
True black(OLED 省电最大):#000000
|
|
395
|
+
Near black(Material): #121212
|
|
396
|
+
Surface 1: #1E1E1E
|
|
397
|
+
Surface 2: #2C2C2C
|
|
398
|
+
Surface 3: #3C3C3C
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
### 暗色文本色(Text on Dark)
|
|
402
|
+
|
|
403
|
+
```
|
|
404
|
+
Primary: #E0E0E0 ~ #ECECEC
|
|
405
|
+
Secondary: #A0A0A0 ~ #B0B0B0
|
|
406
|
+
Disabled: #606060 ~ #707070
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### 对比度(Contrast Ratios)
|
|
410
|
+
|
|
411
|
+
```
|
|
412
|
+
小字: 4.5:1(最低)
|
|
413
|
+
大字: 3:1(最低)
|
|
414
|
+
UI: 3:1(最低)
|
|
415
|
+
理想: 7:1(AAA)
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
> **记住(Remember)**:移动端颜色必须在最差条件下可用——强光、眼疲劳、色盲、低电量。无法通过这些场景的颜色,就是无效颜色。
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# 移动端调试指南(Mobile Debugging Guide)
|
|
2
|
+
|
|
3
|
+
> **停止只靠 console.log() 调试!**
|
|
4
|
+
> 移动应用存在复杂原生层,文本日志远远不够。
|
|
5
|
+
> **本文件提供高效移动端调试策略。**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🧠 移动端调试思维(Mobile Debugging Mindset)
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Web 调试(Web Debugging): 移动端调试(Mobile Debugging):
|
|
13
|
+
┌──────────────┐ ┌──────────────┐
|
|
14
|
+
│ 浏览器(Browser) │ │ JS Bridge(JS 桥) │
|
|
15
|
+
│ DevTools(开发者工具) │ │ 原生 UI(Native UI) │
|
|
16
|
+
│ Network(网络) │ │ GPU/内存(GPU/Memory) │
|
|
17
|
+
└──────────────┘ │ 线程(Threads) │
|
|
18
|
+
└──────────────┘
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**关键差异:**
|
|
22
|
+
1. **原生层问题:** JS(JavaScript)看起来正常但应用崩溃,通常是原生层(Java/Obj-C)问题。
|
|
23
|
+
2. **部署特性:** 不能像 Web(网页)一样随意刷新,状态可能丢失或卡死。
|
|
24
|
+
3. **网络调试:** SSL Pinning(证书锁定)、代理配置更复杂。
|
|
25
|
+
4. **设备日志:** `adb logcat` 与 `Console.app`(控制台)才是最终真相。
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 🚫 AI 调试反模式(AI Debugging Anti-Patterns)
|
|
30
|
+
|
|
31
|
+
| ❌ 默认做法(Default) | ✅ 移动端正确做法(Mobile-Correct) |
|
|
32
|
+
|-----------------------|-----------------------------------|
|
|
33
|
+
| 只会加 console.log(Add console.logs) | 使用 Flipper / Reactotron |
|
|
34
|
+
| 只看 Network Tab(Check network tab) | 使用 Charles Proxy / Proxyman |
|
|
35
|
+
| 只在模拟器可用(It works on simulator) | **必须真机测试**(硬件相关 bug) |
|
|
36
|
+
| 只重装 node_modules(Reinstall node_modules) | **清理原生构建缓存**(Gradle/Pod) |
|
|
37
|
+
| 忽视原生日志(Ignored native logs) | 读取 `logcat` / Xcode logs |
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 1. 工具集(The Toolset)
|
|
42
|
+
|
|
43
|
+
### ⚡ React Native & Expo
|
|
44
|
+
|
|
45
|
+
| 工具(Tool) | 用途(Purpose) | 适用场景(Best For) |
|
|
46
|
+
|-------------|---------------|---------------------|
|
|
47
|
+
| **Reactotron** | 状态/API/Redux 观测 | JS 侧调试 |
|
|
48
|
+
| **Flipper** | 布局/网络/数据库 | 原生 + JS Bridge 调试 |
|
|
49
|
+
| **Expo Tools** | 元素检查器 | 快速 UI 核查 |
|
|
50
|
+
|
|
51
|
+
### 🛠️ 原生层(深度排查)
|
|
52
|
+
|
|
53
|
+
| 工具(Tool) | 平台(Platform) | 命令(Command) | 用途(Why Use?) |
|
|
54
|
+
|-------------|-----------------|----------------|----------------|
|
|
55
|
+
| **Logcat** | Android | `adb logcat` | 原生崩溃、ANR |
|
|
56
|
+
| **Console(控制台)** | iOS | via Xcode | 原生异常、内存问题 |
|
|
57
|
+
| **Layout Inspector(布局检查)** | Android | Android Studio | UI 层级错误 |
|
|
58
|
+
| **View Inspector(视图检查)** | iOS | Xcode | UI 层级错误 |
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## 2. 常见调试工作流(Common Debugging Workflows)
|
|
63
|
+
|
|
64
|
+
### 🕵️ “应用崩了”(Red Screen vs Crash to Home)
|
|
65
|
+
|
|
66
|
+
**场景 A:红屏(Red Screen,JS 错误)**
|
|
67
|
+
- **原因:** `undefined is not an object`、导入错误等。
|
|
68
|
+
- **处理:** 直接看屏幕堆栈,通常定位清晰。
|
|
69
|
+
|
|
70
|
+
**场景 B:闪退回桌面(Crash to Home,原生崩溃)**
|
|
71
|
+
- **原因:** 原生模块失败、内存 OOM、权限声明缺失等。
|
|
72
|
+
- **工具:**
|
|
73
|
+
- **Android:** `adb logcat *:E`(只看 Error(错误))
|
|
74
|
+
- **iOS:** Xcode → Window → Devices → View Device Logs(设备日志)
|
|
75
|
+
|
|
76
|
+
> **💡 提示:** 应用启动即崩,通常 100% 与原生配置有关(Info.plist、AndroidManifest.xml)。
|
|
77
|
+
|
|
78
|
+
### 🌐 “API 请求失败”(Network)
|
|
79
|
+
|
|
80
|
+
**Web(网页端):** 打开 Chrome DevTools(开发者工具)→ Network(网络)。
|
|
81
|
+
**移动端:** 通常没这么直接。
|
|
82
|
+
|
|
83
|
+
**方案 1:Reactotron / Flipper**
|
|
84
|
+
- 在监控面板中查看网络请求。
|
|
85
|
+
|
|
86
|
+
**方案 2:代理工具(Charles/Proxyman)**
|
|
87
|
+
- **复杂但强大。** 可观察原生 SDK 流量。
|
|
88
|
+
- 需要在设备安装 SSL 证书。
|
|
89
|
+
|
|
90
|
+
### 🐢 “UI 很卡”(Performance)
|
|
91
|
+
|
|
92
|
+
**不要猜,要测。**
|
|
93
|
+
- **React Native:** Performance Monitor(性能监视器,摇一摇菜单)。
|
|
94
|
+
- **Android:** 开发者选项中的 “Profile GPU Rendering(GPU 渲染分析)”。
|
|
95
|
+
- **常见问题:**
|
|
96
|
+
- **JS FPS 下降:** JS 线程计算过重(FPS 为帧率)。
|
|
97
|
+
- **UI FPS 下降:** 视图层级过深、图片过重、布局复杂。
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 3. 平台特有噩梦(Platform-Specific Nightmares)
|
|
102
|
+
|
|
103
|
+
### Android
|
|
104
|
+
- **Gradle Sync 失败:** 多见于 Java 版本冲突或重复类。
|
|
105
|
+
- **模拟器网络:** 模拟器的 `localhost` 是 `10.0.2.2`,不是 `127.0.0.1`。
|
|
106
|
+
- **构建缓存:** `./gradlew clean` 往往能救命。
|
|
107
|
+
|
|
108
|
+
### iOS
|
|
109
|
+
- **Pod 问题:** `pod deintegrate && pod install`。
|
|
110
|
+
- **签名错误:** 检查 Team ID 与 Bundle Identifier。
|
|
111
|
+
- **缓存清理:** Xcode → Product → Clean Build Folder。
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## 📝 调试检查清单(Debugging Checklist)
|
|
116
|
+
|
|
117
|
+
- [ ] **这是 JS(JavaScript)崩溃还是原生崩溃?**(红屏还是退桌面)
|
|
118
|
+
- [ ] **你清理过构建缓存吗?**(原生缓存很“顽固”)
|
|
119
|
+
- [ ] **你在真机上测过吗?**(模拟器会掩盖并发问题)
|
|
120
|
+
- [ ] **你看过原生日志吗?**(不仅是终端输出)
|
|
121
|
+
|
|
122
|
+
> **牢记:** JavaScript 看起来没问题但应用失败时,请优先排查原生层。
|