一页结论
/api/prod/* 覆盖训练、filter、交易、下载、举报。直接证据能证明类名、字符串、接口路径、SDK 接入和默认配置键;线上开关值、真实 host、广告频次和付费墙顺序必须动态验证。
直接证据 vs 推断
| 主题 | 直接证据 | 推断 | 置信度 |
|---|---|---|---|
| Onboarding | OnboardingOne/Two/Three、OnboardingV3、多组 onboarding_* assets | 多版本 onboarding 由 Remote Config 切换 | 高 |
| 头像训练 | TrainingPhotosState、Add at least 10 images、三段上传 API | 至少 10 张图,服务端训练,客户端轮询结果 | 高 |
| AI Filter | FilterProcessProvider、ML Kit face/selfie、upload-init-image | 本地做人脸/人像校验与 mask/crop,服务端生成 | 高 |
| 付费 | Adapty 多 paywall 类、Billing Activity、on-user-subscribed | Adapty 与自有后端共同维护权益/额度 | 高 |
| 广告 | ProcessingAdsPage、ContinueWithAdsModal、CASRewarded、多广告网络 Activity | 免费/限额路径用广告换继续生成 | 中高 |
| 归因 | AppsFlyer 标记、OneSignal 类、Firebase Analytics/Auth/Remote Config | 匿名 Firebase token + 归因开关受 Remote Config 控制 | 中 |
产品 / 实现逻辑图
SplashPage初始化 Firebase、Remote Config、Auth、分析。
OnboardingV3展示 avatar / fashion / img-to-img 素材卖点。
AvatarHomePage 与 FilterPacksHomePage 分流。start-upload-training-v2upload-training-photo-v2upload-training-finished-v2get-my-trainingsget-not-downloaded-inferencesget-all-generated-photosupload-init-imageupload-custom-maskgenerate-more-photos-for-init-imageProcessingAdsPageContinueWithAdsModalCASRewardedOnboarding
直接证据
SplashPageState OnboardingOne/Two/Three OnboardingV3State _OnboardingV3BuilderState assets/images/onboarding_avatar_* assets/images/onboarding_fashion_* assets/images/onboarding_img_to_img_*Adapty onboarding 事件包括 onboarding_started、screen_presented、screen_completed、products_screen_presented、onboarding_completed。
推断
Onboarding 负责卖点展示和付费前置,且版本、跳过、paywall 触发点由 Remote Config 控制。
头像生成链路
| 链路 | 关键直接证据 | 实现判断 |
|---|---|---|
| 多图人物训练 | InitialStyleSelectorState、TrainingPhotosState、Add at least 10 images、start-upload-training-v2、upload-training-photo-v2、upload-training-finished-v2 |
选择最多 5 个 style,至少 10 张训练图,客户端 crop/旋转后批量上传,服务端启动训练。 |
| 训练结果 | get-my-last-training-status、get-my-trainings、get-not-downloaded-inferences、get-all-generated-photos、set-inference-downloaded |
异步轮询/下载/缓存结果,下载完成后回写状态。 |
| 单图 filter | FilterSettingsPageState、FilterProcessProvider、google_mlkit_face_detector、google_mlkit_selfie_segmenter、upload-init-image |
本地做人脸、人像、mask/crop 处理,再上传 init image 给服务端生成。 |
| 单图继续生成 | generate-more-photos-for-init-image、generate-multiple-photos-for-init-image、get-not-downloaded-inferences-for-init-image |
围绕同一 init image 批量生成更多结果,并复用轮询/下载结构。 |
付费 / 广告 / 归因
Paywall
直接证据显示多种 Adapty widget:AdaptySubscriptionOptionsPaywall、AdaptyShortPaywallWithReviews、AdaptyDailyLimitPaywall、AdaptyAvatarCouponsPaywall、AdaptyFashionCouponsPaywall。事件包含 purchase/restore/rendering/loading products 全链路。
Remote Config key 显示 placement:Main_PW、short_pw、Avatars_pack、Fashion_pack、0_try、Each_launch、pressed_locked、hq_no_WM。
广告
直接证据:ProcessingAdsPage、ContinueWithAdsModal、CASRewarded、showAds、showAdOptionToGenerate。Manifest 中还有 AppLovin、Google Ads、Pangle、Chartboost、Meta Audience Network、Fyber、InMobi、IronSource、Mintegral、Unity Ads、Vungle、Yandex、Bigo 等组件。
归因 / 推送
直接证据:AppsFlyer 标记、OneSignal 类、Firebase Analytics/Auth/Remote Config/Crashlytics/InAppMessaging。推断:Firebase 匿名登录提供 authToken,AppsFlyer 初始化可能受 initializeAppsFlyer 控制。
接口 / 后端依赖
| 领域 | API 路径 |
|---|---|
| 健康 / 配置 | /api/prod/is-up, /api/prod/is-service-available-v2 |
| 用户 / 交易 | /api/prod/sync-user, /api/prod/sync-store-transactions-v2, /api/prod/on-user-subscribed, /api/prod/get-consumables |
| 训练上传 | /api/prod/start-upload-training-v2, /api/prod/upload-training-photo-v2, /api/prod/upload-training-finished-v2 |
| 训练结果 | /api/prod/get-my-last-training-status, /api/prod/get-my-trainings, /api/prod/get-not-downloaded-inferences, /api/prod/get-inference-status, /api/prod/get-all-generated-photos |
| 风格 / 更多生成 | /api/prod/get-styles, /api/prod/save-styles-selected, /api/prod/generate-more-photos-randomly, /api/prod/generate-more-photos-by-style, /api/prod/generate-video-slideshow |
| AI Filter | /api/prod/get-filter-styles, /api/prod/get-inference-features, /api/prod/upload-init-image, /api/prod/upload-custom-mask, /api/prod/generate-more-photos-for-init-image, /api/prod/generate-multiple-photos-for-init-image |
| 反馈 / 管理 | /api/prod/send-user-action-on-photo, /api/prod/flag-job-and-template, /api/prod/delete-inference-job, /api/prod/remove-training, /api/prod/add-user-style-request |
Base host 直接字符串包括 avatarroServerUrl、serverUrl、diff.kallossoft.com。Firebase 配置存在,但本报告不记录密钥值。
可复刻学习项
- 用本地 ML Kit 校验图片质量,减少无效服务端生成成本。
- 把 onboarding、paywall、广告、limit、样式解锁都接入 Remote Config。
- 按 placement 拆 paywall:onboarding 后、daily limit、locked style、fast processing、avatar pack、fashion pack、HQ/no watermark。
- AI 生成采用异步任务结构:启动、上传、完成、轮询、下载、已下载标记。
- 免费路径用广告/limit 兜底,但需要动态验证频次和体验损耗。
动态验证点
| 验证项 | 方法 | 产物 |
|---|---|---|
| 首启路径 | 清安装、屏幕录制、logcat | splash -> remote config -> onboarding/paywall/home 顺序 |
| Remote Config 线上值 | Frida hook getAll 或抓包 | paywall、ads、limit、onboarding 实际配置 |
| 真实 API host | MITM + hook http.Client / Uri | base URL、headers、auth token、body |
| 训练上传 | 上传 10 张图 | 上传字段、图片压缩/裁剪、失败重试 |
| 单图 filter | 无脸/单脸/多人脸/带 mask 图 | 本地拦截条件、上传内容、生成参数 |
| 广告路径 | 免费用户触发 daily limit / continue with ads | CAS rewarded 展示和奖励回调 |
| 购买同步 | 测试购买/恢复 | Adapty entitlement 和自有后端同步结果 |
阻塞 / 静态止点
- 未运行 App,不能确认线上 Remote Config、paywall 顺序、广告展示频次。
- 未抓包,不能确认真实 host、请求方法、headers、body、上传图片内容。
- 未 hook 运行时,不能确认 Frida 函数地址在设备上的可用性。
- 未登录/购买,不能确认 Adapty、Google Billing、RuStore 和自有后端同步。
- 未生成真实头像,不能确认服务端模型、队列耗时、结果质量和图片删除承诺。
安全记录:静态输出中存在 Firebase 配置密钥字段;报告只记录配置存在和项目标识层面的事实,不记录密钥值。