Android — Google 登录(login-google)
验收状态
源码候选已建立,但没有正式业务模块发布 Tag / 远程 Reposilite 版本,也没有完成真实游戏项目签名与第三方服务端联调。 单模块 CI 或五模块共存编译不能等同上线验收。生产接入必须以实测、正式版本和固定游戏协议为准。
源码目录:modules/login-google。当前开发主分支的候选依赖为 AndroidX Credential Manager 1.2.2、Google ID SDK 1.1.0(待 Mac 验证的 Kotlin 1.8 兼容候选),模块最低 Android 23。此前 1.6.0 / 1.2.1 因 AGP/compileSdk 冲突撤回;1.3.0 / 1.1.1 又经 Mac 实测在 D8 失败,故退至官方历史 Kotlin 1.8 依赖组合。新候选仍待本地联合编译和旧 Egret 构建验收。
兼容性状态(2026-10-26): Android PR #10 已合并至开发
main,但版本变动后 GitHub Actions 任务未进入执行步骤,用户 Mac 已发现旧版 Google SDK 独立 D8 与五模块联合编译失败,修复候选见 Android PR #17。新版本五模块联合 APK、旧 Egret 宿主与实际账号授权均未验证通过。请按 macOS 统一编译 执行,失败时记录日志再修复。
安装
候选 Maven 坐标为 com.ronpad.sdk:ro-login-google:0.1.0,仅本地 Maven 发布/开发期使用;尚未远程 Reposilite 正式发布。
implementation 'com.ronpad.sdk:ro-login-google:0.1.0'宿主调用
ROLoginGoogle.signIn(activity, webServerOAuthClientId,
context.getMainExecutor(), new ROLoginGoogle.Completion() {
@Override public void onSuccess(String idToken) {
// 向业务后端验签。游戏登录成功以服务端响应为准。
}
@Override public void onFailure(Exception error, boolean cancelled) {
// 透过原有 SDKDelegate 映射回 JS 游戏。
}
});前置:Google Cloud OAuth Web Client ID,正确的应用包名与 SHA 指纹,游戏服务端 ID Token 的 aud/iss/exp/签名验证。游戏侧已有 Platform 不应被新的统一 Adapter 取代。退出登录除客户端 clearState 外也应清理服务器会话。
Mac 真实失败与下一轮验证
用户 Mac 运行 Google 专项诊断(artifacts/local-macos/google-dex-20261026T071204Z)确认:credentials:1.3.0 单独 D8 通过;credentials-play-services-auth:1.3.0 的 kotlin-stdlib:1.9.0 和 googleid:1.1.1 运行时 AAR 分别在旧 R8 4.0.52 中失败。为了继续采用官方 Credential Manager、保留 ROSDK 自身 Java API,开发 main 现选择 1.2.2 + 1.2.2 + 1.1.0,Maven 元数据声明 Kotlin 1.8.x;尚未实际执行新组合 DEX 编译。
仅重测 Android(无需重新跑已通过的 iOS):
cd "$HOME/Developer/ROSDK/roandroid-sdk"
git pull --ff-only origin main
mise exec java@zulu-17 gradle@7.6.4 -- bash scripts/verify-google-compat-macos.sh检查输出的 artifacts/local-macos/google-compat-*/结果.txt 及详细日志。只有 Google AAR/Maven 消费和五模块联合 APK 同时生成非空 APK 后,才能记为当前独立开发基线构建通过,仍不能推断固定旧 Egret 游戏兼容或第三方账户业务联调通过。
Firebase Authentication 规划边界
原生 Google/Apple 登录是独立的身份提供方实现,不是 Firebase Auth。Web 现有 roweb-sdk 使用 Firebase UID/ID Token,再由游戏服务器的 auth.Auth 换取游戏 account/token。待当前 Android Google D8 兼容完成后,单独新增 Android auth-firebase、iOS ROAuthFirebase 可选模块;不覆盖 Google/Apple、不改变 Egret SDKDelegate。Android Issue #16、iOS Issue #18。