DOCUMENTATION

使用文档

从注册到拿到 APK / IPA 的完整说明,以及后台配置、收费开关、构建集群对接方式。版本 v1.0,对应当前 最骚App。

安装与部署(宝塔)

  1. 新建站点:宝塔 → 网站 → 添加站点,域名填你的域名,PHP 版本选 7.4 及以上,数据库选「MySQL 数据库」(本程序支持数据库与文件双模式,推荐 MySQL)。
  2. 创建数据库:宝塔 → 数据库 → 添加数据库,记下数据库名 / 用户名 / 密码;安装向导里选择 MySQL 并填写。若选「文件存储」则可跳过此步。
  3. 上传解压:进入站点目录 → 上传 packforge-php.zip → 右键解压。解压后站点根目录应直接能看到 install.php、index.php、assets/;若解压出来多了一层文件夹,把文件夹里的内容移动到根目录。
  4. 首页设置:站点 → 网站首页,确保包含 index.php(如首页是 index.html,删掉或把它排到 index.php 之后)。
  5. 目录权限:data/、storage/、assets/uploads/ 需要可写。宝塔默认运行用户 www 即可;若安装页报红,右键目录 → 权限 → 设为 755 并勾选「应用到子目录」。
  6. 运行安装向导:解压后直接打开 https://你的域名/ 会自动跳转到安装页;也可手动访问 https://你的域名/install.php,按「环境检测 → 站点信息 → 管理员账号」三步完成。装好会自动登录并写入 data/install.lock,之后再访问 /install.php 会显示「站点已安装」。
  7. 伪静态:无需配置。使用 .php 直链,Apache / Nginx 都能直接跑。
Nginx 安全(可选):宝塔默认是 Nginx,不读 .htaccess。数据文件已改成 data/*.php 保护格式(直接访问输出空白),通常无需额外配置;如需彻底封死目录,可在 站点 → 配置文件 里加:
location ^~ /data/   { deny all; }
location ^~ /storage/ { deny all; }
数据表说明:MySQL 模式共两张表:pf_settings 存站点设置,pf_rows 存用户 / 订单 / 打包任务(按 namespace 区分);表前缀可在安装时修改(默认 pf_)。备份直接使用宝塔的「数据库备份」即可。
重装 / 忘记密码:删除 data/users.php 再访问 /install.php 重新安装(data/install.lock 也可一并删);会清空用户、任务与订单数据。

构建工具链(真实 APK)

开箱即用:程序内置 aapt2、zipalign、框架资源、外壳 classes.dex 与签名证书,解压即可直接在服务器上编译出可安装的真实 APK,无需安装任何东西。流程:aapt2 编译资源与清单 → 注入外壳 dex → zipalign 对齐 → 签名(默认内置 PHP JAR v1 签名、targetSdk=29;配置 JRE 后自动升级为 apksigner v2 + 更高 targetSdk)。

  1. 无需自己写代码:程序已内置预编译外壳 worker/classes.dex 与签名证书 worker/packforge.keystore,所有任务复用,每个任务只注入自己的配置与图标。
  2. 无需安装(默认):内置核心随包分发,解压后直接打包就是真 APK;后台「站点设置 → 构建工具链」可一键检测状态。
  3. 可选升级(v2 签名):装 JRE 后在站点设置填 java_home,签名自动升级为 apksigner v2、targetSdk 可提到 34+;也可在站点目录执行:
    bash worker/install-toolchain.sh
    脚本自动安装 JRE17、下载 build-tools 与 android.jar,并打印后台要填的三个路径。完整说明见 worker/README.txt。
  4. 手动安装:JRE(apt-get install -y openjdk-17-jre-headless)+ build-tools_r34-linux.zip(含 aapt2 / zipalign / lib/apksigner.jar)+ platform-34 包里的 android.jar。
  5. 后台报「禁用了所有进程执行函数」:宝塔 → 软件商店 → PHP → 设置 →「禁用函数」中删除 exec(及 shell_exec/proc_open 若也被禁)并重启 PHP;未放开前系统会自动回退演示产物并说明原因。
  6. 后台配置:站点设置 → 构建工具链,填入 java_home、build_tools、android_jar → 点「检测工具链」,显示 构建核心就绪 后立即生效(这三项是可选增强,默认已开箱可用)。
iOS / IPA 说明:苹果要求必须在 macOS + Xcode 环境用开发者证书签名,Linux 服务器无法直接构建 IPA。iOS 产物走两条路:① 后台上传已签名的模板 IPA,打包时注入网址配置;② 云构建:填 builder_api 把任务交给你的 macOS 构建机,回调交付(见「构建集群对接」)。
产物与维护:APK 位于 storage/builds/<任务ID>/app-release.apk;构建工作目录 storage/builds/<任务ID>/android/ 可定期清理;签名证书务必长期固定(换证书 = 换应用,无法覆盖安装),需更换时用 keytool 生成后覆盖 storage/keys/packforge.keystore。

快速开始

  1. 注册账号(后台可关闭注册),登录后进入「个人中心」。
  2. 回到首页,在输入框粘贴你的网址,例如 zuisao.com。
  3. 选择目标平台:Android · APK、iOS · IPA 或「双端同时出包」。
  4. 点击「一键打包」,流水线跑完后在任务详情页下载产物。
提示:未配置构建集群时走演示构建,产物为配置清单 + 构建报告;接入集群后即为真实 APK / IPA。

创建打包任务

任务表单包含四个核心字段,全部会写进 packforge.json:

{
  "url": "zuisao.com",           // 你的站点,自动补 https://
  "platform": "android",          // android | ios | both
  "app_name": "Zuisao",           // 可留空,按域名自动推导
  "package_id": "com.zuisao.app"  // 可留空,按域名自动推导
}
  • 任务状态:排队中 → 构建中 → 已完成 / 失败。
  • 任务归属创建者,只有本人和管理员可以查看、下载、删除。
  • 任务日志按步骤追加,失败时会记录原因,便于排查。

平台与产物(APK / IPA)

Android · APK

  • 产物扩展名 .apk,可直接侧载安装或转 AAB 上架 Google Play。
  • 需要后台配置签名证书;未配置时使用调试证书并在日志中标注。

iOS · IPA

  • 产物扩展名 .ipa,用于 TestFlight / App Store 提交。
  • 需上传描述文件(描述文件与证书由你在后台或对接集群时提供)。

双端同时出包

选择「双端」后任务会生成两条构建记录,分别产出 APK 与 IPA,在同一任务详情页下载。

后台配置说明

管理员在 管理后台 → 站点设置 可控制:

  • 品牌:站点名称、口号、Logo、Favicon、备案号、页脚文案、联系邮箱。
  • 外观:默认亮色 / 暗色主题(用户仍可自行切换并记忆)。
  • 开关:是否开放注册、是否启用计费。
  • 套餐:三档套餐的名称、价格、月度构建额度与卖点。
  • 构建:builder_api 地址与令牌,留空则走演示构建。
  • 公告:顶部通栏公告,支持简单 HTML 与链接。

收费与订单

  1. 后台打开「启用计费」后,价格页的订阅按钮会生成订单。
  2. 订单初始为 待支付,用户在「个人中心 — 订单」查看。
  3. 管理员在 管理后台 → 订单 标记已支付,系统自动开通对应套餐一个月。
  4. 切换到 易支付 网关并填入商户号 / 密钥后,用户可自助在线支付(接口已预留)。
  5. 按次扣费单价 大于 0 时,超额构建将从账户余额扣款,余额由管理员在用户管理中充值。

构建集群对接

在后台填入 builder_api 后,创建任务会以 JSON POST 到你的构建服务:

POST {builder_api}
X-Builder-Token: {builder_token}
Content-Type: application/json

{
  "id": 1024,
  "url": "zuisao.com",
  "platform": "android",
  "app": { "name": "Zuisao", "package": "com.zuisao.app", "version": "1.0.0" },
  "permissions": ["push", "camera"],
  "callback": "https://your-site/ajax/build_callback.php"
}

构建完成后回调 ajax/build_callback.php,携带任务 id、状态与产物地址,系统会更新任务并通知用户。

安全与数据

  • 密码使用 password_hash() 加盐存储,会话 Cookie 为 HttpOnly + SameSite=Lax。
  • 所有写操作带 CSRF 令牌校验,输出统一转义防 XSS。
  • 数据存储分两种模式:MySQL 模式下数据存数据库(表 pf_settings / pf_rows,前缀可改);文件模式下存 data/*.php(首行带 <?php exit; ?> 保护),安装时二选一。文件模式写入加文件锁;建议再对 /data 与 /storage 配置 deny。
  • 产物存放在 /storage/builds/{id}/,下载走 PHP 权限校验,不暴露目录。

常见问题

更换域名 / 迁移站点要注意什么?

整站是绿色目录,复制到新环境即可运行;请确保 /data 与 /storage 可写。迁移后无需改数据库。

如何关闭注册?

管理后台 → 站点设置 → 关闭「开放注册」,保存后注册页会提示已关闭。

忘记密码怎么办?

当前版本由管理员在「用户管理」中重置;如需自助找回,可在后台配置邮件服务后扩展。

可以多台服务器共用数据吗?

JSON 文件存储适合单机部署。多机部署建议把 /data 放到共享存储,或迁移到 MySQL(连接层已隔离在 storage.php,替换成本很低)。