把你的游戏做成原生 Android 应用
JumPHP 可以把你的游戏做成一个真正的 Android 应用,不需要浏览器:PHP 8.5、SDL、OpenGL ES 和 OpenAL 都在应用内运行,就像在电脑上一样。它可以离线运行,支持手机(ARM)和平板,需要 Android 8.0 或更高版本。
你需要电脑上的一个 JumPHP 项目(见在你的电脑上)、Docker,如果要上架 Play 商店,还需要一个 Google Play 开发者账号(一次性 25 美元)。你的 Claude 可以替你完成一切:对它说“给我的游戏做一个原生 Android 应用”。
另一种方式是 Trusted Web Activity,它把游戏页面放进 Chrome 中:更轻量,但需要网络和网站。使用相同的包名和同一个密钥,原生应用可以在 Play 商店中取代 TWA,就像发布了一个新版本。
一条命令
bin/jumphp android mon-jeu
- 第一次运行时,它会询问应用的包名(
io.github.vous.mon_jeu:发布后就不能再改)并在~/.jumphp/android/keys/中生成你的上传密钥(如果游戏已有 TWA 的密钥,就沿用那个)。请备份它,它绝不会出现在 git 中。 - 它会把工作流
.github/workflows/android.yml放进你的项目,并且在你同意之后,把密钥发送到你的 GitHub 仓库的 secrets 中(已加密,仅供工作流读取)。 - 它会把版本写入
games/mon-jeu/android/app.json,提交,并在你同意之后推送。 - GitHub 构建应用(第一次约 25 分钟,之后约 8 分钟:PHP 和各个库会被缓存),并在你的仓库中发布一个 release,其中包含用你的密钥签名的
.apk(用于手机)和.aab(用于 Google Play)。该命令会把它们下载到games/mon-jeu/dist/android-native/。
后续版本:bin/jumphp android mon-jeu --version-name 1.1(每次版本号加一)。不使用 GitHub:--local 会在你的电脑上、在 Docker 中构建应用。
想在手机上试用:把 .apk 发送给手机并打开它(允许“安装未知应用”),或者使用 adb install mon-jeu-1.0.apk。
触摸操作
引擎会自己绘制屏幕上的操作控件,和浏览器中一样:十字键(或摇杆)、A、B 和 START,在有黑边时就画在两侧的黑边中。它们在 game.yaml 中设置,方式和浏览器相同:
game:
touch: { pad: stick, a: Space, b: Escape, labels: { a: SAUT } } # pad: stick = 摇杆,否则为十字键
Android 的返回键相当于 Esc。想在电脑上看到它们:
JUMPHP_TOUCH_CONTROLS=1 bin/jumphp run mon-jeu(用鼠标操作)。
应用内部
- 为 Android 编译的 PHP 8.5,带有 JumPHP 的扩展(SDL 及其图像、声音、字体模块,OpenGL、OpenAL、gd、openssl、mbstring……),以及 SDL2 和 OpenAL Soft:也就是让游戏在电脑上运行的那一套。
- 你的游戏会在每个版本首次启动时解包(一两秒),存放在应用的私有存储中。存档和选项在更新之间会保留。
- 名称、图标(PWA 的图标:
assets/icon.png)和屏幕方向(游戏的画面比例)都来自game.yaml。
上架 Play 商店
完整细节(密钥、手机上试用、Play Console 的每项声明、审核、后续版本、常见陷阱):手把手教你上架 Play 商店。简要来说:
- 在 Play Console 中创建应用(名称、语言、“游戏”、免费),并填写各项声明:隐私政策(一个说明游戏不收集任何数据的页面)、内容分级、目标受众、无广告。
- Google Play 应用签名:Google 保管为手机签发应用的密钥;你的密钥只用来证明上传来自你(丢失后 Google 可以替换它)。
- 内部测试:测试和发布 > 内部测试 > 创建新版本 > 上传
.aab> 保存 > 审核 > 发布。添加你的测试人员,他们通过 Google 的链接安装。 - 商店详情:描述、512 × 512 的图标(
bin/jumphp build会生成:dist/web/icon-512.png)、一张 1024 × 500 的图片、至少 2 张截图(bin/jumphp shot mon-jeu,或者在手机上截取)。 - 正式发布:测试通过后,推进该版本。Google 会审核(几小时到几天)。新的个人账号必须先有 12 名测试人员连续测试 14 天。
须知
- HTTPS 可用(
$engine->http(),在线游戏使用wss://):证书随游戏一起提供。 - 应用大小为 30 到 40 MB(包含两种处理器架构的 PHP 和各个库)。
技术细节:见你项目中的 docs/android-native.md。