网址转 APK - 完整源码 + 部署教程
一、服务器准备
1.1 安装 Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun systemctl start docker systemctl enable docker docker -v
1.2 配置镜像加速器
mkdir -p /etc/docker cat > /etc/docker/daemon.json <<'EOF' { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me", "https://docker.1panel.live", "https://hub.rat.dev" ], "max-concurrent-downloads": 3 } EOF systemctl daemon-reload systemctl restart docker
1.3 拉取 Android 编译镜像(约 13.9GB)
nohup docker pull mingc/android-build-box > /root/pull.log 2>&1 & tail -f /root/pull.log
看到 Pull complete 即成功。
二、准备构建资源
2.1 创建目录
mkdir -p /www/wwwroot/apk-tools/wrapper mkdir -p /www/wwwroot/apk-tools/builds mkdir -p /www/wwwroot/apk-keys
2.2 下载 Gradle Wrapper
cd /www/wwwroot/apk-tools/wrapper wget https://raw.githubusercontent.com/gradle/gradle/v8.4.0/gradlew wget https://raw.githubusercontent.com/gradle/gradle/v8.4.0/gradle/wrapper/gradle-wrapper.jar -O gradle-wrapper.jar chmod +x gradlew
若 wget 拉不下来,手动下载这两个文件后通过宝塔上传:
-
gradlew:https://raw.githubusercontent.com/gradle/gradle/v8.4.0/gradlew -
gradle-wrapper.jar:https://raw.githubusercontent.com/gradle/gradle/v8.4.0/gradle/wrapper/gradle-wrapper.jar
2.3 生成签名证书
docker run --rm -v /www/wwwroot/apk-keys:/out mingc/android-build-box \ keytool -genkeypair -v \ -keystore /out/release.jks \ -alias release \ -keyalg RSA -keysize 2048 -validity 10000 \ -storepass ChangeMe123 -keypass ChangeMe123 \ -dname "CN=WebToApk, OU=Dev, O=MyOrg, L=City, S=State, C=CN" ls -l /www/wwwroot/apk-keys/release.jks
ChangeMe123是密码,可改。改完 PHP 里的ks_pass和key_pass要同步改。
2.4 权限
chmod 600 /www/wwwroot/apk-keys/release.jks chmod -R 777 /www/wwwroot/apk-tools/builds usermod -aG docker www systemctl restart php-fpm-74
三、宝塔配置
3.1 PHP 7.4 启用禁用函数
宝塔 → 软件商店 → PHP 7.4 → 设置 → 禁用函数,删掉:
-
exec -
shell_exec -
putenv -
proc_open
保存后重载配置。
3.2 PHP 7.4 超时
宝塔 → PHP 7.4 → 性能调整:
-
max_execution_time=900 -
request_terminate_timeout=900
或命令行:
sed -i 's/^max_execution_time.*/max_execution_time = 900/' /www/server/php/74/etc/php.ini sed -i 's/^max_input_time.*/max_input_time = 900/' /www/server/php/74/etc/php.ini sed -i 's/^request_terminate_timeout.*/request_terminate_timeout = 900/' /www/server/php/74/etc/php-fpm.conf systemctl restart php-fpm-74
3.3 Nginx 超时
宝塔 → 网站 → 你的站点 → 设置 → 配置文件,在 location ~ [^/]\.php(/|$) 里加:
fastcgi_read_timeout 900s; fastcgi_send_timeout 900s; fastcgi_connect_timeout 900s;
保存 → 重载 Nginx。
3.4 下载目录权限
mkdir -p /www/wwwroot/www.zyfbw.com/tool/web2app/downloads chmod -R 777 /www/wwwroot/www.zyfbw.com/tool/web2app/downloads
四、完整源码
路径:/www/wwwroot/域名目录/web2app/index.php
五、启用 Gradle 缓存(强烈建议)
为了让第二次之后编译只需 30~60 秒:
mkdir -p /www/wwwroot/apk-tools/gradle-cache chmod -R 777 /www/wwwroot/apk-tools/gradle-cache
源码里已经包含 -v /www/wwwroot/apk-tools/gradle-cache:/root/.gradle 挂载,只要目录建好就生效。
六、测试
-
浏览器打开
https://www.zyfbw.com/tool/web2app/ -
输入
https://www.baidu.com -
上传一张 真 PNG 图标(512×512 最佳,不要用
.ico) -
点「生成 APK」
首次 3~8 分钟,之后 30 秒~1 分钟。
成功后页面显示:
-
✅ 打包成功
-
📥 下载 APK 按钮
-
📋 复制下载链接按钮
-
图标状态(用了你上传的还是默认的)
七、验证签名
cd /www/wwwroot/www.zyfbw.com/tool/web2app/downloads/ docker run --rm -v /www/wwwroot/www.zyfbw.com/tool/web2app/downloads:/apks \ mingc/android-build-box \ bash -c "/opt/android-sdk/build-tools/34.0.0/apksigner verify --verbose /apks/\$(ls *.apk | head -1)"
预期输出:
Verifies Verified using v1 scheme (JAR signing): true Verified using v2 scheme (APK Signature Scheme v2): true
两个 true 就是可以安装的。
八、文件清单
| 路径 | 说明 |
|---|---|
/www/wwwroot/apk-tools/wrapper/gradlew |
Gradle Wrapper 脚本 |
/www/wwwroot/apk-tools/wrapper/gradle-wrapper.jar |
Gradle Wrapper JAR |
/www/wwwroot/apk-tools/builds/ |
临时构建目录(自动清理) |
/www/wwwroot/apk-tools/gradle-cache/ |
Gradle 缓存(第二次之后加速) |
/www/wwwroot/apk-keys/release.jks |
签名证书 |
/www/wwwroot/www.zyfbw.com/tool/web2app/index.php |
主页面 |
/www/wwwroot/www.zyfbw.com/tool/web2app/downloads/ |
APK 输出 |
九、日常维护
清理旧 APK(保留 7 天)
宝塔 → 计划任务 → Shell 脚本,每天执行:
find /www/wwwroot/www.zyfbw.com/tool/web2app/downloads -name "*.apk" -mtime +7 -delete
清理 Docker 悬空镜像
docker image prune -f

💬 评论区 (0条评论)