Files
keyboard/docs/final-implementation-guide.md
2026-03-02 09:19:06 +08:00

7.3 KiB
Raw Blame History

键盘多语言/多布局功能 - 最终实施指南

📋 概述

本文档是键盘多语言/多布局功能的最终实施指南,包含所有必要的步骤和注意事项。


已完成的工作

代码实现

  1. 配置中心外置JSON + Manager
  2. 布局 JSON 配置补充AZERTY、QWERTZ、注音布局
  3. 扩展侧布局切换逻辑
  4. 主 App 配置管理器集成
  5. 联想引擎分流框架

文件创建

所有必要的代码文件已创建并验证通过(运行 check_files.sh 查看)。


🚀 下一步操作(按顺序执行)

步骤 1: 在 Xcode 中添加新文件

重要性: (必须完成)

操作指南: 参考 docs/xcode-file-addition-guide.md

需要添加的文件:

  1. Shared/Resource/kb_input_profiles.json
    • Target: keyBoard + CustomKeyboard
  2. Shared/KBInputProfileManager.h
    • Target: keyBoard + CustomKeyboard
  3. Shared/KBInputProfileManager.m
    • Target: keyBoard + CustomKeyboard
  4. CustomKeyboard/Manager/KBKeyboardLayoutResolver.h
    • Target: CustomKeyboard
  5. CustomKeyboard/Manager/KBKeyboardLayoutResolver.m
    • Target: CustomKeyboard

验证方法:

# 在 Xcode 中编译
Cmd + B

步骤 2: 编译验证

重要性: (必须完成)

操作步骤:

  1. 在 Xcode 中选择 scheme: keyBoard
  2. Cmd + B 编译主 App
  3. 检查是否有编译错误
  4. 在 Xcode 中选择 scheme: CustomKeyboard
  5. Cmd + B 编译扩展
  6. 检查是否有编译错误

常见问题:

  • 如果提示"找不到文件",检查文件是否正确添加到 target
  • 如果提示"重复符号",检查 Build Phases > Compile Sources 是否有重复

步骤 3: 基础功能测试

重要性: (必须完成)

测试清单: 参考 docs/testing-checklist.md

最小测试集(必须通过):

  1. 主 App 语言选择界面正常显示
  2. 单布局语言(英语)切换成功
  3. 多布局语言(西班牙语)切换成功
  4. 扩展侧英语 QWERTY 布局正确显示
  5. 扩展侧西班牙语 AZERTY 布局正确显示
  6. App Group 数据正确写入

如果基础测试失败:

  • 检查日志输出,查找错误信息
  • 确认 App Group 配置正确
  • 确认文件正确添加到工程

步骤 4: 完善联想引擎(可选)

重要性: (建议完成)

当前状态: 已实现基础框架,但中文联想词库需要完善

需要完善的部分:

  1. 繁体拼音联想:实现拼音到繁体字的映射
  2. 注音联想:实现注音符号到繁体字的映射
  3. 简体拼音联想:实现拼音到简体字的映射

实现建议:

  • 可以使用现有的拼音输入法库(如 OpenCC
  • 或者创建简单的拼音/注音到汉字的映射表
  • 参考 KBSuggestionEngine.m 中的 TODO 注释

如果暂时不实现:

  • 拉丁字母联想(英语、西班牙语等)已经可以正常工作
  • 中文输入可以先使用基础词库(已提供示例词汇)

步骤 5: 本地化资源补齐(可选)

重要性: (建议完成)

需要新增的文件:

  1. Shared/Localization/es.lproj/Localizable.strings
  2. Shared/Localization/pt.lproj/Localizable.strings
  3. Shared/Localization/zh-Hant.lproj/Localizable.strings
  4. Shared/Localization/id.lproj/Localizable.strings

如果暂时不实现:

  • 界面会显示英文文案
  • 不影响核心功能

步骤 6: 完整测试

重要性: (建议完成)

测试清单: 参考 docs/testing-checklist.md

测试范围:

  1. 所有语言和布局的切换
  2. 联想引擎切换
  3. 皮肤下发
  4. 异常情况处理
  5. 性能测试
  6. 回归测试

📊 实施优先级

P0 - 必须完成(阻塞发布)

  • 代码实现
  • 在 Xcode 中添加新文件
  • 编译验证
  • 基础功能测试

P1 - 建议完成(影响用户体验)

  • 完善联想引擎
  • 完整测试

P2 - 可选完成(锦上添花)

  • 本地化资源补齐

🔍 验证检查点

检查点 1: 文件完整性

cd "/Users/mac/Desktop/项目/公司/KeyBoard"
./check_files.sh

预期输出: 所有文件检查通过

检查点 2: 编译成功

  • 主 App 编译无错误
  • 扩展编译无错误

检查点 3: 基础功能

  • 语言切换成功
  • 布局切换成功
  • 键盘显示正确

检查点 4: 数据持久化

NSUserDefaults *appGroup = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.loveKey.nyx"];
NSLog(@"ProfileId: %@", [appGroup stringForKey:@"AppGroup_SelectedKeyboardProfileId"]);

预期输出: 正确的 profileId


🐛 常见问题排查

问题 1: 编译错误 "No such file or directory"

原因: 文件没有正确添加到 target 解决方案: 参考 docs/xcode-file-addition-guide.md 重新添加文件

问题 2: 键盘布局没有切换

原因: App Group 数据没有正确写入或读取 解决方案:

  1. 检查 App Group 配置是否正确
  2. 检查日志输出,查看 profileId 是否正确
  3. 确认 KBKeyboardLayoutResolver 正确读取数据

问题 3: 联想功能不工作

原因: 联想引擎没有正确切换 解决方案:

  1. 检查 kb_updateSuggestionEngineType: 是否被调用
  2. 检查 KBSuggestionEngineengineType 是否正确设置
  3. 查看日志输出

问题 4: 注音布局显示不正确

原因: 注音符号可能需要特殊字体支持 解决方案:

  1. 确认系统支持注音符号显示
  2. 检查 kb_keyboard_layout_config.json 中的注音符号是否正确
  3. 可能需要调整字体设置

📝 日志检查

在测试过程中,注意查看以下日志:

主 App 日志

[KBInputProfileManager] Loaded X profiles
[KBPersonInfoVC] Switching to profileId: xxx

扩展日志

[KBKeyboardView] Loaded profileId: xxx, layoutJsonId: xxx
[KBKeyboardLayoutResolver] layoutJsonId for profileId xxx: xxx
[KeyboardViewController] Detected profileId change: xxx -> xxx
[KBSuggestionEngine] Engine type set to: xxx

🎯 成功标准

最小可行产品MVP

  • 主 App 可以选择语言和布局
  • 扩展侧可以正确显示对应的键盘布局
  • 英语和西班牙语QWERTY/AZERTY/QWERTZ正常工作
  • 数据正确持久化到 App Group

完整功能

  • 所有语言和布局都正常工作
  • 繁体中文联想功能正常
  • 注音输入功能正常
  • 皮肤正确下发
  • 无崩溃和性能问题

📚 相关文档

  1. keyboard-language-layout-handover.md - 原始交接文档
  2. keyboard-language-layout-implementation-summary.md - 实现总结
  3. xcode-file-addition-guide.md - Xcode 文件添加指南
  4. testing-checklist.md - 完整测试清单

🤝 需要帮助?

如果在实施过程中遇到问题:

  1. 查看相关文档
  2. 检查日志输出
  3. 参考常见问题排查
  4. 运行 check_files.sh 验证文件完整性

总结

本次实现已经完成了核心功能的代码编写,剩余工作主要是:

  1. 在 Xcode 中添加文件(必须)
  2. 编译和测试(必须)
  3. 完善联想引擎(建议)

按照本指南的步骤操作,应该可以顺利完成整个功能的实施。祝你成功!🎉