在 GitHub 上自动构建手机 APP:零本地配置方案

7次阅读

共计 3228 个字符,预计需要花费 9 分钟才能阅读完成。

引言

很多人想把自己的网页项目打包成手机 APP,但一想到要学 Java、配 Android Studio、折腾 Gradle,就打了退堂鼓。其实有个更简单的方式——用 GitHub Actions 在云端自动构建 APK,全程不用碰 Android 开发环境,最后直接在手机上下载安装即可。

本文以我自己的 ” 正点闹钟 ” 项目为例,手把手演示如何把纯 HTML/CSS/JS 网页项目转成可安装的 Android APP。

技术方案

核心工具是 Capacitor 和 GitHub Actions:

  • Capacitor:把网页包进原生 Android 项目壳里,支持调用手机硬件(震动、通知等)
  • GitHub Actions:GitHub 提供的免费 CI/CD 服务,每次 push 代码后自动在云端编译 APK

整个流程是:网页项目 → Capacitor 包装 → 推送到 GitHub → Actions 自动构建 → 下载 APK → 手机安装

前提条件

  • 一个已有的网页项目(HTML/CSS/JS,单页或多页都可以)
  • GitHub 账号
  • 手机(Android)能安装未知来源应用

不需要本地装 Android Studio,不需要懂 Java。

步骤一:初始化 Capacitor 项目

在项目根目录执行以下命令:

# 1. 初始化 npm 项目(如果还没有 package.json)npm init -y

# 2. 安装 Capacitor 核心依赖
npm install @capacitor/core @capacitor/cli @capacitor/android

创建配置文件

新建 capacitor.config.json

{
  "appId": "com.yourname.app",
  "appName": "你的 APP 名称",
  "webDir": "www",
  "plugins": {
    "SplashScreen": {
      "launchShowDuration": 2000,
      "backgroundColor": "#1a1a2e"
    }
  }
}

注意 webDir 指向你的网页资源目录。我把项目文件放到了 www/ 文件夹下。

生成 Android 原生项目

npx cap add android

这会在当前目录生成一个 android/ 文件夹,里面就是完整的 Gradle + Android 项目结构。

步骤二:配置需要的权限

编辑 android/app/src/main/AndroidManifest.xml,在 </manifest> 前添加手机功能权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

如果你做了闹钟类应用,这些权限能让震动、响铃、通知正常工作。

步骤三:配置 GitHub Actions 自动构建

在项目根目录创建文件:.github/workflows/build-apk.yml

name: Build APK

on:
  push:
    branches: [main, master]
  workflow_dispatch:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4

    - name: Set up JDK 17
      uses: actions/setup-java@v4
      with:
        java-version: '17'
        distribution: 'temurin'

    - name: Setup Node.js
      uses: actions/setup-node@v4
      with:
        node-version: '20'
        cache: 'npm'

    - name: Install dependencies
      run: npm ci

    - name: Sync Capacitor Android
      run: npx cap sync android

    - name: Grant execute permission for gradlew
      run: chmod +x android/gradlew

    - name: Build Release APK
      run: cd android && ./gradlew assembleRelease

    - name: Upload APK
      uses: actions/upload-artifact@v4
      with:
        name: app-apk
        path: android/app/build/outputs/apk/release/app-release-unsigned.apk

这个配置做了这几件事:

  1. 每次 push 到 main 分支时自动触发
  2. 在 Ubuntu 服务器上安装 JDK 17 和 Node.js 20
  3. 执行 npm ci 安装依赖
  4. 同步 Capacitor Android 资源
  5. 用 Gradle 构建 Release APK
  6. 把生成的 APK 文件上传到 Artifacts,供下载

步骤四:推送到 GitHub 并触发构建

初始化 Git 仓库并推送:

git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/ 你的用户名 / 你的仓库名.git
git push -u origin main

Push 成功后,打开 GitHub 仓库页面 → Actions 标签,就能看到构建正在运行。

步骤五:下载 APK 并安装到手机

构建完成后(约 3-5 分钟):

  1. 进入 Actions 页面,点击那次成功的构建记录
  2. 页面底部找到 Artifacts 区域
  3. 点击下载 ZIP 文件,解压得到 .apk
  4. 把 APK 传到手机上(微信文件传输、数据线、网盘都行)
  5. 手机上点击安装,允许 ” 未知来源应用 ”

因为是未签名 APK,安装时会有安全提示,属于正常现象,点继续安装即可。

常见问题

Q1: npm ci 报 “lock file mismatch” 错误

这是因为 package.json 修改后没有同步更新 package-lock.json。解决方法是删除 lock 文件重新生成:

rm package-lock.json
npm install

Q2: 构建时间太长

第一次构建需要下载 Gradle 依赖和 Android SDK,可能需要 5-8 分钟。后续构建会快很多。

Q3: 想给 APK 签名,避免 ” 未知来源 ” 提示

可以用 GitHub Secrets 配置签名密钥。在 workflow 中加入签名步骤,需要生成一个 keystore 文件并配置到仓库的 Secrets 里。详细步骤参考 Capacitor 官方文档的签名章节。

Q4: 安装后 APP 闪退

检查 webDir 路径是否正确,确保所有资源文件(CSS、JS、图片)都已放入对应目录,并在 npx cap sync 后正确同步到了 android 项目的 assets 里。

进阶:签名 APK

如果你希望 APK 有正式签名,在 GitHub 仓库设置中添加 4 个 Secrets:

  • SIGNING_KEY:keystore 文件的 Base64 编码
  • ALIAS:密钥别名
  • KEY_STORE_PASSWORD:密钥库密码
  • KEY_PASSWORD:密钥密码

然后在 workflow 中加入签名步骤,就能构建出签名版 APK,安装体验更顺畅。

总结

用 Capacitor + GitHub Actions 把网页转成手机 APP,核心优势是 零本地配置

  • 不需要安装 Android Studio
  • 不需要懂 Java 或 Gradle
  • 不需要本地配 JDK 和 Android SDK
  • 所有构建在云端完成,手机直接下载安装

对于个人项目、原型验证、或者不想折腾原生开发环境的人来说,这是最省事的方案。

正文完
 0
hermes
版权声明:本站原创文章,由 hermes 于2026-04-26发表,共计3228字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。