构建app的android-build.yml似乎有点问题。修改了一下 所有关键改动总结使用方法如下。 1. fork项目,然后修改核心配置文件 (capacitor.config.json) 这是你 App 的“身份证”和“导航图”。 修改内容: appName: 修改为 "XXXXX"。 server.url: 修改为你的自定义站点 http://xxxxxx。 作用:定义了 App 启动后加载哪个网页,以及 App 叫什么名字(配合脚本生效)。 2. 资源文件 (public/icon.png) 这是你 App 的“脸面”。 操作:上传了一张名为 icon.png 的图片到 public 文件夹。 注意点:文件名必须全小写,且必须放在 public 下,否则脚本找不到。 3. 修改构建脚本 (.github/workflows/android-build.yml) —— 这是原本仓库里最难搞的部分,我们把它从“仅限原作者使用”改造成了“万能构建脚本”。 主要改动点: 添加手动开关 (workflow_dispatch): 原版:只能靠打 Tag (git tag v1.0) 触发,很麻烦。 现版:加了手动触发器,现在点一下按钮就能构建,不用改代码。 升级运行环境: 原版:Node 16/18,Java 11/17。 现版:升级到了 Node 22 (Capacitor 新版强制要求) 和 Java 21,解决了 [fatal] The Capacitor CLI requires NodeJS >=22.0.0 报错。 暴力强制修改 App 名称: 问题:安卓项目里 strings.xml 优先级太高,配置文件里的名字不生效。 解决:增加了 sed 命令,在构建前直接读取 JSON 配置,强制替换安卓源码里的 <string name="app_name">,确保名字必变。 暴力强制生成图标: 问题:简单的 Sync 不会覆盖已经存在的安卓默认图标。 解决:增加了 imagemagick 脚本,检测到 public/icon.png 后,强制生成 5 种不同尺寸的图标并覆盖到安卓资源目录。 改为 Debug 构建 (assembleDebug): 原版:assembleRelease (需要签名密钥,否则报错)。 现版:改为 Debug 模式,跳过了复杂的签名验证步骤,虽然安装时会提示“测试版”,但个人使用完全没问题,且 100% 能构建成功。 4. 仓库权限设置 (GitHub Settings) 这是让脚本能跑起来的基础。 改动:在 Settings -> Actions -> General -> Workflow permissions 中,勾选了 Read and write permissions。 作用:允许脚本上传构建产物(APK)或者发布 Release。 5. 现在的操作流程 以后如果你想改个名字,或者换个网址,只需要: 修改 capacitor.config.json -> 提交。 (如果要换图标) 替换 public/icon.png -> 提交。 去 Actions -> 点击 Android Build & Release -> 点击 Run workflow。 等 10 分钟,下载 APK。 完整android-build.yml代码 name: Android Build & Release on: workflow_dispatch: jobs: build: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout repository uses: actions/checkout@v4 # 1. 环境准备 - name: Setup Node.js (v22) uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' - name: Setup Java (v21) uses: actions/setup-java@v4 with: distribution: 'temurin' java-version: '21' - name: Setup Android SDK uses: android-actions/setup-android@v3 - name: Install Dependencies run: npm install # 2. 准备网页资源 - name: Fix Web Assets run: | mkdir -p www if [ -d "public" ]; then cp -r public/* www/ else echo "<h1>App</h1>" > www/index.html fi # 3. 生成图标 - name: Generate App Icons run: | echo "🎨 Starting Icon Generation..." sudo apt-get update && sudo apt-get install -y imagemagick if [ -f "public/icon.png" ]; then RES_PATH="android/app/src/main/res" mkdir -p $RES_PATH/mipmap-mdpi $RES_PATH/mipmap-hdpi $RES_PATH/mipmap-xhdpi $RES_PATH/mipmap-xxhdpi $RES_PATH/mipmap-xxxhdpi generate_icon() { convert "public/icon.png" -resize ${1}x${1} $RES_PATH/$2/ic_launcher.png convert "public/icon.png" -resize ${1}x${1} $RES_PATH/$2/ic_launcher_round.png convert "public/icon.png" -resize ${1}x${1} $RES_PATH/$2/ic_launcher_foreground.png } generate_icon 48 "mipmap-mdpi" generate_icon 72 "mipmap-hdpi" generate_icon 96 "mipmap-xhdpi" generate_icon 144 "mipmap-xxhdpi" generate_icon 192 "mipmap-xxxhdpi" echo "✅ Icons generated!" else echo "⚠️ No public/icon.png found!" fi # 4. 同步 Capacitor - name: Sync Capacitor run: npx cap sync android # 5. ★★★ 绝杀改名:Manifest + Strings ★★★ - name: Force Rename App (Nuclear Option) run: | # 获取新名字 NEW_NAME=$(jq -r '.appName' capacitor.config.json) echo "🔥 Target Name: $NEW_NAME" MANIFEST="android/app/src/main/AndroidManifest.xml" sed -i "s/android:label=\"[^\"]*\"/android:label=\"$NEW_NAME\"/g" $MANIFEST echo "✅ Manifest updated:" grep "android:label" $MANIFEST # 【操作B】地毯式替换所有 strings.xml (包括 values-zh, values-en 等) echo "🔍 Searching for strings.xml files..." find android/app/src/main/res -name "strings.xml" | while read file; do echo " -> Updating $file" # 强制替换 <string name="app_name">...</string> 这一整行 sed -i "s|<string name=\"app_name\">.*</string>|<string name=\"app_name\">$NEW_NAME</string>|g" "$file" done # 6. 构建 APK - name: Build Debug APK working-directory: android run: | chmod +x gradlew ./gradlew assembleDebug # 7. 上传 - name: Upload APK uses: actions/upload-artifact@v4 with: name: APP-APP path: android/app/build/outputs/apk/debug/*.apk
@我才不吃冬瓜 #126 嗯?哈哈哈哈好像这些问题我在最新的版本里都已经修复过了,除了 加了手动触发器,现在点一下按钮就能构建,不用改代码。 这个,因为这个我个人不需要,只有改动才需要自动构建所以就没有加入
@yuxmyyg #120 演示站没有添加任何接口,需要的话自行部署配置了
@我才不吃冬瓜 #118 确实,感谢大佬,已经修复,是多加了个api
收藏了
麻烦给一个部署的方法。
@yuxmyyg #124 请自行查看github项目中的readme部分,已经详细到不能再详细了
构建app的android-build.yml似乎有点问题。修改了一下
所有关键改动总结使用方法如下。
1. fork项目,然后修改核心配置文件 (
capacitor.config.json)这是你 App 的“身份证”和“导航图”。
appName: 修改为 "XXXXX"。server.url: 修改为你的自定义站点http://xxxxxx。2. 资源文件 (
public/icon.png)这是你 App 的“脸面”。
icon.png的图片到public文件夹。public下,否则脚本找不到。3. 修改构建脚本 (
.github/workflows/android-build.yml) ——这是原本仓库里最难搞的部分,我们把它从“仅限原作者使用”改造成了“万能构建脚本”。
主要改动点:
添加手动开关 (
workflow_dispatch):git tag v1.0) 触发,很麻烦。升级运行环境:
[fatal] The Capacitor CLI requires NodeJS >=22.0.0报错。暴力强制修改 App 名称:
strings.xml优先级太高,配置文件里的名字不生效。sed命令,在构建前直接读取 JSON 配置,强制替换安卓源码里的<string name="app_name">,确保名字必变。暴力强制生成图标:
imagemagick脚本,检测到public/icon.png后,强制生成 5 种不同尺寸的图标并覆盖到安卓资源目录。改为 Debug 构建 (
assembleDebug):assembleRelease(需要签名密钥,否则报错)。4. 仓库权限设置 (GitHub Settings)
这是让脚本能跑起来的基础。
5. 现在的操作流程
以后如果你想改个名字,或者换个网址,只需要:
capacitor.config.json-> 提交。public/icon.png-> 提交。完整android-build.yml代码
@我才不吃冬瓜 #126 嗯?哈哈哈哈好像这些问题我在最新的版本里都已经修复过了,除了 加了手动触发器,现在点一下按钮就能构建,不用改代码。 这个,因为这个我个人不需要,只有改动才需要自动构建所以就没有加入
厉害
The Movie Database这玩意好像不让注册,一直出现人类验证
@贪财好色 #129 更换下ip再试呢