常见问题和解决方案

故障排除

解决使用 Capgo Cloud Build 构建原生应用时的常见问题。

”Upload failed” or “Connection timeout”

或超时

标题: 、“或超时”

  • 症状:
  • 项目上传过程中构建失败

60 秒后出现超时错误

  1. 解决方案:

    终端窗口
    # Test connection to Capgo
    curl -I https://api.capgo.app
  2. 减少项目大小

    • 确保 node_modules/ 正在上传(应自动排除)
    • 检查项目中大文件:
    终端窗口
    find . -type f -size +10M
  3. 检查上传 URL 过期

    • 上传 URL 过期后 1 小时
    • 如果出现过期 URL 错误,请重新运行构建命令

Symptoms:

  • Build exceeds maximum allowed time
  • Status shows timeout

Solutions:

  1. Optimize dependencies

    • Remove unused npm packages
    • 使用 npm prune --production 在构建之前
  2. 在构建过程中检查网络问题

    • 某些依赖项在构建过程中可能下载较大的文件
    • 考虑使用锁文件进行预缓存
  3. 检查原生依赖项

    终端窗口
    # iOS - check Podfile for heavy dependencies
    cat ios/App/Podfile
    # Android - check build.gradle
    cat android/app/build.gradle
  4. 联系支持

    • 如果您的应用程序合法地需要更多时间
    • 我们可以根据具体用例调整限制

身份验证问题

关于认证问题

“API 键无效”或“未授权”

API 键无效或未授权

症状:

  • 在构建过程中立即出现了身份验证错误。
  • 未授权访问或访问被拒绝

解决方案:

  1. 验证API密钥是否正确

    终端窗口
    # Test with a simple command
    bunx @capgo/cli@latest app list
  2. 检查API密钥权限

    • 必须具有密钥 writeall 权限
    • 在Capgo控制台下API密钥
  3. 确保API密钥正在被读取

    终端窗口
    # Check environment variable
    echo $CAPGO_TOKEN
    # Or check your saved credentials file
    cat ~/.capgo-credentials/credentials.json # global
    cat .capgo-credentials.json # local (--local)
  4. 重新验证

    终端窗口
    bunx @capgo/cli@latest login

“应用未找到”或“没有此应用的权限”

标题:“应用未找到”或“没有此应用的权限”

症状:

  • 认证正常,但应用特定错误

解决方案:

  1. 验证应用已注册

    终端窗口
    bunx @capgo/cli@latest app list
  2. 检查应用 ID 是否匹配

    • 验证 capacitor.config.json appId
    • 确保命令使用正确的应用 ID
  3. 验证组织访问权限

    • 检查您是否在正确的组织中
    • API 键必须具有访问应用组织的权限

iOS 构建问题

iOS 构建问题

症状:

  • 构建过程中 code 签名阶段失败
  • Xcode 出现与证书或配置文件相关的错误

解决方案:

  1. 确认证书类型与构建类型匹配

    • 开发构建需要使用开发证书
    • App Store 构建需要使用发布证书
  2. 检查证书和配置文件是否匹配

    终端窗口
    # Decode and inspect your certificate
    echo $BUILD_CERTIFICATE_BASE64 | base64 -d > cert.p12
    openssl pkcs12 -in cert.p12 -nokeys -passin pass:$P12_PASSWORD | openssl x509 -noout -subject
  3. 确保配置文件有效

    • 检查过期日期
    • 验证其中包含您的 App ID
    • 确认其中包含证书
  4. 重新生成凭据

    • 删除旧的证书/配置文件
    • 在 Apple Developer portal 中创建新凭据
    • 重新编码并更新环境变量

“配置文件中未包含签名证书”

标题:“配置文件中未包含签名证书”

__CAPGO_KEEP_0__:

  • Xcode无法在配置文件中找到证书

__CAPGO_KEEP_1__:

  1. 从Apple下载最新配置文件

    • 前往Apple Developer → 证书、ID 和配置文件
    • 下载配置文件
    • 确保配置文件包含您的证书
  2. 在配置文件中验证证书

    终端窗口
    # Extract profile
    echo $BUILD_PROVISION_PROFILE_BASE64 | base64 -d > profile.mobileprovision
    # View profile contents
    security cms -D -i profile.mobileprovision
  3. 在Apple Developer门户中,编辑配置文件并使用正确的证书

    • 重新创建配置文件
    • 确保已选择您的分发证书
    • 下载并重新编码

”App Store Connect authentication failed”

Section titled “”App Store Connect authentication failed””

症状:

  • 向 TestFlight 上传失败
  • API key errors

验证__CAPGO_KEEP_0__密钥凭证

  1. Verify API key credentials

    • 检查 APPLE_ISSUER_ID(应为 UUID 格式)
    • 验证 APPLE_KEY_CONTENT 是否正确 base64 编码
    • __CAPGO_KEEP_0__ key 错误
  2. 同步电脑时钟

    • App Store Connect 使用短期 JWT,生成自本地系统时间
    • Apple 会拒绝那些将在 20 分钟后过期的令牌,因此即使是微小的时钟漂移也会使一个原本有效的密钥失效
    • 在 Windows 上,打开 设置 > 时间和语言 > 日期和时间 并点击 立即同步
    • 在 macOS 上,打开 系统设置 > 常规 > 日期和时间 并启用自动时间
    • 在 Linux 上,检查 timedatectl status 并启用 NTP 如果需要
    • 重新同步后,请重新运行Capgo构建或凭据命令

    参见苹果的 API请求生成令牌 文档中的App Store Connect令牌有效期规则。

  3. 在本地测试API密钥

    终端窗口
    # Decode key
    echo $APPLE_KEY_CONTENT | base64 -d > AuthKey.p8
    # Test with fastlane (if installed)
    fastlane pilot list
  4. 检查API密钥权限

    • 密钥需要“开发者”角色或更高
    • 在App Store Connect->用户和访问->密钥中验证
  5. 确保密钥未被撤销

    • 在App Store Connect中检查
    • 如果需要则生成新密钥

症状:

  • 在 CocoaPods 安装期间构建失败
  • Podfile 错误

解决方案:

  1. 验证 Podfile.lock 已提交

    终端窗口
    git status ios/App/Podfile.lock
  2. 测试本地 pod 安装

    终端窗口
    cd ios/App
    pod install
  3. 检查不兼容的 Pods

    • 检查 Podfile 中的版本冲突
    • 确保所有 Pods 支持您的 iOS 部署目标
  4. 清除 Pod 缓存

    终端窗口
    cd ios/App
    rm -rf Pods
    rm Podfile.lock
    pod install
    # Then commit new Podfile.lock

Android 构建问题

Android 构建问题

错误:密钥库密码错误

密钥库密码错误

症状:

  • 签名过程中构建失败
  • Gradle关于keystore的错误

解决方案:

  1. 验证keystore密码

    终端窗口
    # Test keystore locally
    keytool -list -keystore my-release-key.keystore
    # Enter password when prompted
  2. 检查环境变量

    终端窗口
    # Ensure no extra spaces or special characters
    echo "$KEYSTORE_STORE_PASSWORD" | cat -A
    echo "$KEYSTORE_KEY_PASSWORD" | cat -A
  3. 验证base64编码

    终端窗口
    # Decode and test
    echo $ANDROID_KEYSTORE_FILE | base64 -d > test.keystore
    keytool -list -keystore test.keystore

症状:

  • 使用别名错误导致签名失败

解决方案:

  1. 列出密钥库别名

    终端窗口
    keytool -list -keystore my-release-key.keystore
  2. 确认别名完全匹配

    • 别名区分大小写
    • 检查KEYSTORE_KEY_ALIAS中的拼写错误
  3. 使用密钥库中的正确别名

    终端窗口
    # Update environment variable to match
    export KEYSTORE_KEY_ALIAS="the-exact-alias-name"

症状:

  • 常见Gradle错误
  • 编译或依赖问题

解决方案:

  1. 先在本地测试构建

    终端窗口
    cd android
    ./gradlew clean
    ./gradlew assembleRelease
  2. 检查依赖项是否缺失

    • Review __CAPGO_KEEP_0__ files
    • 确保所有插件都列在依赖项中
  3. 验证Gradle版本兼容性

    终端窗口
    # Check gradle version
    cat android/gradle/wrapper/gradle-wrapper.properties
  4. 清除Gradle缓存

    终端窗口
    cd android
    ./gradlew clean
    rm -rf .gradle build

Play Store上传失败

标题:Play Store上传失败

症状:

  • 构建成功但上传失败
  • 服务帐号错误

解决方案:

  1. 验证服务帐号 JSON

    终端窗口
    # Decode and check format
    echo $PLAY_CONFIG_JSON | base64 -d | jq .
  2. 检查服务帐号权限

    • 前往 Play Console → 设置 → API 访问
    • 确保服务帐号有权访问您的应用
    • 授予“发布到测试跟踪”权限
  3. 验证应用已在 Play Console 中设置

    • 应用必须在 Play Console 中首先创建
    • 至少需要手动上传一个 APK
  4. 检查 API 是否启用

    • Google Play Developer API 必须启用
    • 检查 Google Cloud Console

“找不到工作”或“无法获取构建状态”

标题:“找不到工作”或“无法获取构建状态”

症状:

  • 无法检查构建状态
  • 工作 ID 错误

解决方案:

  1. 稍等一下,重新尝试

    • 构建作业可能需要几秒钟来初始化
  2. 检查作业 ID 是否正确

    • 从初始构建响应中验证作业 ID
  3. 检查构建未过期

    • 构建数据可用 24 小时

症状:

  • 在编译开始之前构建失败
  • 缺失文件错误

解决方案:

  1. 在本地运行 Capacitor 同步

    终端窗口
    bunx cap sync
  2. 确保所有本地文件都已提交

    终端窗口
    git status ios/ android/
  3. 检查被忽略的本地文件

    • 查看 .gitignore
    • 确保重要的配置文件未被忽略

”Build succeeded but I don’t see output”

Section titled “”Build succeeded but I don’t see output””

Symptoms:

  • Build shows success but no download link

解决方案:

  1. 检查构建配置

    • 可能未配置的存储
    • 如果构建中无法访问存储,请联系支持
  2. 用于 iOS TestFlight 提交

    • 检查 App Store Connect
    • 上传后处理可能需要 5-30 分钟
  3. 用于 Android Play Store

    • 检查 Play Console → Testing → 内部测试
    • 处理可能需要几分钟

CI/CD 特定问题

CI/CD 特定问题

GitHub Actions: “命令未找到”

GitHub Actions: “命令未找到””

症状:

  • bunx @capgo/cli@latest … 在 CI 中失败,提示“命令未找到”

解决方案:

  1. 首先设置 Bun 所以 bunx 可用:

    - uses: oven-sh/setup-bun@v2
  2. 然后运行 CLIbunx 可以按需获取,不需要全局安装:

    - run: bunx @capgo/cli@latest build request com.example.app --platform android

GitHub Actions: “未发现密钥”

GitHub Actions: “未发现密钥””

症状:

  • 构建时环境变量为空

解决方案:

  1. 验证密钥是否已设置

    • 前往仓库设置 → 秘密和变量 → Actions
    • 添加所有必需密钥
  2. 使用正确的语法

    env:
    CAPGO_TOKEN: ${{ secrets.CAPGO_TOKEN }}
  3. 检查密钥名称是否匹配

    • 名称区分大小写
    • 无错误的秘密参考

获取更多帮助

获取更多帮助

启用详细日志

启用详细日志
终端窗口
# Add debug flag (when available)
bunx @capgo/cli@latest build request com.example.app --verbose

收集构建信息

收集构建信息

联系支持时,请包含:

  1. 构建命令

    终端窗口
    bunx @capgo/cli@latest build request com.example.app --platform ios
  2. 错误信息 (完整输出)

  3. 任务 ID (从构建输出)

  4. 构建日志 (复制完整终端输出)

  5. 环境信息

    终端窗口
    node --version
    npm --version
    bunx @capgo/cli@latest --version

当前限制:

  • 最大构建时间:10分钟
  • 最大上传大小:约500MB
  • iOS构建需要24小时Mac租赁,Mac构建将排队以确保最佳使用
  • 根据构建目的地和存储配置,构建产物下载可用性会有所不同。

这些限制可能会根据反馈进行调整。