Skip to content

Latest commit

 

History

History
170 lines (139 loc) · 4.57 KB

File metadata and controls

170 lines (139 loc) · 4.57 KB
name process-calljava-skill
description 读取 aineed.json,筛选 is_processed=false 的项目,进入对应 project_path,根据 calljava_counts 定位 cpp 文件,批量规范化 callJava(...) 参数格式,并在处理完成后标记为已处理。核心目标是将 callJava 调用进行分类规范化。执行方式为 AI 直接查看并修改 cpp 代码,不使用脚本批量替换。

概述

本技能用于 AI 直接审阅 Android 项目中的 C++ 代码,将 callJava(...) 调用规范化为统一格式,确保与 Java 层解析逻辑兼容。

核心功能

  • 读取 aineed.json 作为 AI 处理入口
  • 筛选 is_processed=false 的项目
  • 进入对应 project_path
  • 根据 calljava_counts 定位需要 AI 查看的 C++ 文件
  • 批量规范化 callJava(...) 参数格式
  • 只修改真实代码中的 callJava("...") 字符串参数
  • 注释中的 callJava 示例仅参考,不进行改写
  • 处理完成后标记为已处理(is_processed=true)
  • 核心目标是将 callJava 调用进行分类规范化

必须保留的完整步骤

读取 aineed.json,筛选 is_processed=false 的项目,进入对应 project_path, 根据 calljava_counts 定位 cpp 文件,批量规范化 callJava(...) 参数格式,并在处理完成后标 记为已处理。核心目标是将 callJava 调用进行分类规范化。

处理规则

1. 统一格式要求

所有 callJava(...) 调用必须统一改写为:

callJava("xxx!@@@@!yyy")

否则 Java 层字符串解析会发生数组越界错误。

2. 分类处理优先级

优先级1:激励广告识别

触发关键词(不区分大小写,包含部分匹配):

  • 激励、奖励、奖励视频、看视频
  • reward、Reward、rewarded、video reward
  • RewardedVideo、rewardVideo、showReward

统一输出格式

callJava("ShowRewaredVideoAd!@@@@!1")

优先级2:非激励广告

适用类型:插屏广告、普通广告、banner等

统一输出格式

callJava("showTriggerScene!@@@@!xxx")

其中 xxx 为根据代码上下文智能选择的场景文案。

优先级3:普通事件

适用类型:生命周期事件、UI事件、定时器、初始化等非广告事件

统一输出格式

callJava("事件名!@@@@!1")

3. 标准化场景文案

对于非激励广告,必须使用以下标准化场景文案:

场景类型 标准文案 识别关键词
点击菜单按钮 "点击菜单按钮" menu、菜单、button
点击列表项 "点击列表项" list、列表、item
关卡开始 "关卡开始" level start、关卡开始、OnLevelStart
关卡结束 "关卡结束" level end、关卡结束、OnLevelFinish
特殊开始 "特殊开始" special start、特殊开始
关卡重开 "关卡重开" level restart、关卡重开
原游戏插屏 "原游戏插屏" fullscreen、interstitial、插屏
强制激励 "强制激励" force reward、强制激励
游戏暂停 "游戏暂停" pause、暂停、OnPause
游戏控制 "游戏控制" control、控制
升级 "升级" upgrade、升级、level up
付费解锁 "付费解锁" pay、付费、unlock
场景切换 "场景切换" scene switch、场景切换
按钮设置 "按钮设置" settings、设置、config

4. 场景文案生成规则

  1. 优先级1:代码上下文中已有明确中文文案
  2. 优先级2:函数名或注释包含关键词
  3. 优先级3:使用标准化场景文案
  4. 兜底方案:使用 "unknown"(尽量避免)

处理示例

激励广告示例

// 原始
callJava("rewardVideo");
callJava("showReward");
callJava("RewardedVideo");

// 规范化后
callJava("ShowRewaredVideoAd!@@@@!1");

非激励广告示例

// 原始
callJava("showAd");
callJava("ShowFullScreen"); // 在OnLevelFinish函数中

// 规范化后
callJava("showTriggerScene!@@@@!原游戏插屏");
callJava("showTriggerScene!@@@@!关卡结束");

普通事件示例

// 原始
callJava("OnTick");
callJava("InitGame");
callJava("OnPause");

// 规范化后
callJava("OnTick!@@@@!1");
callJava("InitGame!@@@@!1");
callJava("OnPause!@@@@!1");

执行流程

步骤1:数据准备

  1. 读取 aineed.json 文件
  2. 验证文件格式和内容完整性
  3. 筛选 is_processed=false 的项目

步骤2:文件定位

  1. 获取项目的 project_path
  2. 进入 project_path/app/src/main/cpp 目录
  3. 根据 calljava_counts 打开对应 .cpp 文件由 AI 逐个阅读

步骤3:代码处理

  1. AI 定位真实执行路径中的 callJava 调用(非注释)
  2. 结合函数语义和附近日志/注释判断调用类型
  3. AI 直接按规则改写字符串参数
  4. 保持原有代码格式、缩进和逻辑结构不变
  5. 已是 !@@@@! 规范格式的调用默认不重复改写

步骤4:状态更新

  1. AI 复核变更点,确认无注释误改
  2. 确认编译风险后更新 aineed.json 的 is_processed=true
  3. 记录本次 AI 处理结论

技术约束

处理范围

  • ? 仅处理 aineed.json 中记录的项目
  • ? 仅处理 calljava_counts 中统计的文件
  • ? 仅处理 callJava("...") 直接调用形式(包括注释的calljava)
  • ? 由 AI 直接查看并修改目标 cpp/h
  • ? 不使用 Python 脚本批量处理 callJava
  • ? 不处理 Java/Kotlin 层代码
  • ? 不处理其他语言文件
  • ? 不修改函数调用结构、变量、逻辑

安全要求

  • 绝不修改 Java 层 callJava(String msg1) 解析逻辑
  • 绝不修改 Java 侧业务分发 switch-case 代码
  • 不删除任何代码结构、注释或逻辑
  • 不改变函数签名或调用方式
  • 仅修改 callJava 的字符串参数部分
  • 处理前后必须保证代码能正常编译和运行