Files
real-e-party-iOS/issues/white-label-refactor-plan.md
edwinQQQ a35a711be6 chore: Initial clean commit
- Removed YuMi/Library/ (138 MB, not tracked)
- Removed YuMi/Resources/ (23 MB, not tracked)
- Removed old version assets (566 files, not tracked)
- Excluded Pods/, xcuserdata/ and other build artifacts
- Clean repository optimized for company server deployment
2025-10-09 16:19:14 +08:00

320 lines
9.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 白牌项目一个月改造计划
## 项目背景
- **目标**:基于现有 YuMi 项目创建白牌版本,规避 App Store 审查
- **时间**1个月
- **约束**:保留大部分基建代码和 SDK功能可适当裁剪
- **核心策略**:三层剥离法(标识层 100% + 视觉层 80% + 代码结构层 30%
---
## Week 1: 标识层改造100%- 不可逆的关键改动
### Day 1-2: 项目基础标识
- [ ] 创建新的 Xcode Project新 Bundle ID、新证书
- [ ] 全局替换类名前缀5个前缀
- `YM``新前缀1`(如 `LK`
- `XP``新前缀2`(如 `SL`
- `PI``新前缀3`(如 `MT`
- `Moli``新前缀4`(如 `Nova`
- `MS``新前缀5`(如 `AS`
- [ ] 替换所有宏定义前缀
- `YUMI``新宏前缀`
- [ ] 修改全局常量文件
- `YUMIConstant.h/m` → 重命名 + 内容修改
- `YUMIHtmlUrl.h/m` → 重命名 + 内容修改
### Day 3: 文件和模块重命名
- [ ] 重命名核心模块文件夹
- `YMLogin``新名字`
- `YMMessage``新名字`
- `YMMine``新名字`
- `YMMonents``新名字`
- `YMNewHome``新名字`
- `YMRoom``新名字`
- `YMTabbar``新名字`
- [ ] 重命名 Pod 项目名
- `YuMi.podspec` → 新名字
- [ ] 修改 Podfile 引用
### Day 4-5: 字符串常量清理
- [ ] 扫描所有硬编码字符串grep "YuMi|Moli|YUMI"
- [ ] 替换 UserDefaults/Keychain 的 key 前缀
- [ ] 替换所有中文文案为新的品牌名(可选保留,用新马甲名)
- [ ] 修改多语言文件(.strings
---
## Week 2: 视觉层改造80%- UI/UX 大改
### Day 6-7: 资源文件全量替换
- [ ] **图片资源批量处理**2971个文件
- 编写脚本批量重命名所有图片
- 更换核心 icon登录、TabBar、导航栏按钮等
- 调整配色方案(主题色、渐变色)
- 工具:使用 Python/Shell 脚本 + ImageMagick
- [ ] **SVGA 动画资源**
- 重命名所有 .svga 文件
- 替换关键动画(登录动画、礼物动画)
- [ ] **App Icon 和启动图**
- 全新设计 AppIcon
- 替换 LaunchScreen
### Day 8-9: UI 组件库改造
- [ ] 颜色系统重构
- 修改 `DJDKMIMOMColor.h/m` 为新的色值
- 建立新的 UIColor 扩展类(不要用原类名)
- [ ] 通用 UI 组件重写
- `MoliAvatar` → 新的头像组件(改渲染逻辑)
- `SexAgeLabel` → 新样式
- `MoliMoneyLabel` → 新样式
- 所有渐变效果改变方向或色值
- [ ] 字体系统(可选)
- 替换默认字体为另一种商业字体
### Day 10-12: TabBar 和导航栏重构
- [ ] **TabBar 结构调整**
- 更改 Tab 数量5个→4个或6个
- 更改 Tab 顺序(如:首页/消息/我的 → 消息/首页/我的)
- 完全重写 `XPTabBar.h/m` 布局逻辑
- 新的选中/未选中动画效果
- [ ] **导航栏样式**
- `BaseViewController` 的导航栏改为新样式
- 所有返回按钮、右侧按钮图标更换
- 导航栏背景色/透明度调整
---
## Week 3: 代码结构层改造30%- 关键差异化
### Day 13-15: 核心页面 UI 重构
- [ ] **登录页面**`YMLogin` 模块)
- 完全重写 UI 布局(从竖向改横向?)
- 登录方式顺序调整
- 新的视觉风格
- [ ] **首页**`YMNewHome` 模块)
- 房间列表布局改变(瀑布流→网格?)
- 筛选器位置和样式调整
- Banner 尺寸和位置变化
- [ ] **房间页**`YMRoom` 模块)
- ⚠️ 这是最大的模块1059个文件
- **策略**:只改 UI 层,不动业务逻辑
- 拆分 `XPRoomViewController.m`4605行
- 提取礼物模块为独立 ViewController
- 提取 PK 模块为独立 ViewController
- 提取底部控制栏为独立 View
### Day 16-17: 消息和动态模块
- [ ] **消息列表**`YMMessage` 模块)
- Cell 样式完全重写
- 时间显示格式改变
- 头像位置调整
- [ ] **动态/朋友圈**`YMMonents` 模块)
- 布局方式改变(卡片式→列表式?)
- 交互手势调整(点赞动画、评论入口)
### Day 18-19: 个人中心模块
- [ ] **我的页面**`YMMine` 模块)
- 顶部个人信息卡片重新设计
- 设置项图标和顺序调整
- 等级/财富展示方式改变
---
## Week 4: 功能裁剪和测试
### Day 20-21: 功能裁剪(可选)
根据实际情况,可以移除以下模块以降低相似度:
- [ ] 移除小游戏模块(如果有独特的游戏)
- [ ] 移除特定的礼物动画
- [ ] 简化某些复杂的 H5 页面
- [ ] 移除品牌相关的活动页面
### Day 22-23: 网络层包装
- [ ]`HttpRequestHelper` 外包一层新 API
- [ ] 更改请求头字段名User-Agent, Custom-Headers
- [ ] 参数加密方式微调(如果可以服务端配合)
### Day 24-28: 全面测试
- [ ] 核心功能冒烟测试
- 登录/注册
- 首页浏览
- 进入房间
- 发送消息
- 充值流程(测试环境)
- [ ] UI 自动化测试(截图对比)
- [ ] 崩溃率监控(集成 Bugly/Firebase
- [ ] 内存泄漏检测
### Day 29-30: 提审准备
- [ ] 准备新的 App Store 截图5-10张
- [ ] 撰写新的应用描述(完全不同的文案)
- [ ] 准备审核说明(强调差异化功能)
- [ ] 最终检查清单
---
## 关键技术方案
### 1. 批量类名替换脚本
```bash
#!/bin/bash
# rename_classes.sh
OLD_PREFIX="YM"
NEW_PREFIX="LK"
# 查找所有 .h 和 .m 文件
find ./YuMi -type f \( -name "*.h" -o -name "*.m" \) -exec sed -i '' "s/${OLD_PREFIX}/${NEW_PREFIX}/g" {} +
# 重命名文件
find ./YuMi -type f -name "${OLD_PREFIX}*" | while read file; do
newname=$(echo "$file" | sed "s/${OLD_PREFIX}/${NEW_PREFIX}/g")
mv "$file" "$newname"
done
```
### 2. 图片资源批量处理
```python
#!/usr/bin/env python3
# rename_images.py
import os
import hashlib
from PIL import Image
def rename_images(root_dir):
for dirpath, dirnames, filenames in os.walk(root_dir):
for filename in filenames:
if filename.endswith(('.png', '.jpg', '.jpeg')):
old_path = os.path.join(dirpath, filename)
# 生成新的随机名称基于内容hash
new_name = hashlib.md5(open(old_path,'rb').read()).hexdigest()[:16]
new_path = os.path.join(dirpath, new_name + os.path.splitext(filename)[1])
os.rename(old_path, new_path)
print(f"Renamed: {filename} -> {new_name}")
if __name__ == "__main__":
rename_images("./YuMi/Assets.xcassets")
```
### 3. 拆分超大类工具XPRoomViewController
使用 Category 方式拆分,不改变主类:
```objc
// XPRoomViewController+Gift.h
@interface XPRoomViewController (Gift)
- (void)setupGiftUI;
- (void)handleGiftAction;
@end
// XPRoomViewController+PK.h
@interface XPRoomViewController (PK)
- (void)setupPKUI;
- (void)handlePKAction;
@end
```
### 4. 颜色系统替换
```objc
// 新建 AppTheme.h
@interface AppTheme : NSObject
+ (UIColor *)primaryColor; // 主色调
+ (UIColor *)secondaryColor; // 辅助色
+ (UIColor *)accentColor; // 强调色
@end
// 全局替换所有硬编码颜色
// 旧: [UIColor colorWithHex:0xFF6B9D]
// 新: [AppTheme primaryColor]
```
---
## 风险控制
### 高风险点
1. **类名替换可能误伤字符串**
- 解决:先 grep 找出所有字符串常量,手动检查
- 工具:`grep -r "\".*YM.*\"" ./YuMi`
2. **图片批量重命名导致找不到资源**
- 解决:先做映射表,然后用脚本全局替换代码中的引用
- 保留原图副本,出错可回滚
3. **第三方 SDK 回调失败**
- 原因:某些 SDK 使用类名字符串反射
- 解决:保留涉及 SDK 的类名不变,或在映射表中特殊处理
4. **TabBar 结构改变导致通知/跳转失败**
- 原因:很多业务逻辑硬编码了 Tab index
- 解决:全局搜索 `selectedIndex` 和 TabBar 相关跳转
### 测试检查清单
- [ ] 所有第三方登录Facebook/Google/Apple
- [ ] 支付流程(内购/第三方支付)
- [ ] IM 消息收发
- [ ] 直播推流和拉流
- [ ] 深度链接Deep Link
- [ ] 推送通知
- [ ] 分享功能
---
## 成功标准
### App Store 审查通过标准
1. ✅ 二进制代码相似度 < 30%类名方法名完全不同
2. 所有截图视觉差异明显配色布局icon
3. Bundle ID 和签名完全不同
4. 应用描述和关键词无重叠
5. 核心功能可正常使用
### 技术债务评估
- 预计技术债务中等
- 后续维护需要同步维护两套代码建议用 Git 分支管理
- 代码质量不会比原项目更差因为会顺便重构
---
## 备选方案
如果 30 天时间不够可以采用 **最小可行方案**MVP
### 最小改造清单15天
1. 类名全局替换2天
2. 核心图片替换50个关键icon2天
3. 主题色全局替换1天
4. TabBar 重新设计2天
5. 登录页重写2天
6. 首页重写3天
7. 测试和提审3天
这个方案可以达到约 50-60% 的差异化适合时间极度紧张的情况
---
## 附录:工具清单
### 开发工具
- Xcode Refactor 功能批量重命名
- AppCodeIntelliJ OC IDE重构能力更强
- Shell 脚本批量文件操作
- Python 脚本图片处理文本替换
### 设计工具
- Sketch/Figma重新设计 UI
- ImageMagick批量图片处理
- Lottie/SVGA Player动画资源处理
### 测试工具
- Charles/Proxyman抓包测试网络
- Instruments性能和内存测试
- Xcode UI Testing自动化测试
---
**制定人**: Linus Mode AI
**创建时间**: 2025-10-09
**预计完成时间**: 2025-11-0930天