You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过AppCenter构建后脚本用Curl上传APK报错curl: (26)

解决AppCenter Post-Build脚本curl上传APK报错curl: (26) Failed to open/read local data的问题

curl返回(26)错误的核心原因是指定的本地文件不存在,或者进程没有权限读取该文件。结合你提供的AppCenter脚本,可通过以下步骤排查修复:

1. 先验证文件路径与存在性

在curl命令前添加调试输出,确认环境变量指向的目录下是否真的存在app-release.apk:

echo "APPCENTER_OUTPUT_DIRECTORY路径:$APPCENTER_OUTPUT_DIRECTORY"
ls -la "$APPCENTER_OUTPUT_DIRECTORY"

执行脚本后查看AppCenter构建日志,就能清楚看到目录下的所有文件,确认目标APK是否存在。

2. 修正curl命令的路径引用

原脚本中-F "file_stage=@$APPCENTER_OUTPUT_DIRECTORY/app-release.apk"存在潜在问题:如果$APPCENTER_OUTPUT_DIRECTORY包含空格或特殊字符,路径会被拆分导致curl无法识别。需要给路径添加转义引号,确保完整解析:

-F "file_stage=@\"$APPCENTER_OUTPUT_DIRECTORY/app-release.apk\""

3. 确认APK的实际生成路径

部分Android项目的APK不会直接生成在$APPCENTER_OUTPUT_DIRECTORY根目录,而是在子路径中(比如Gradle项目的app/build/outputs/apk/release/)。如果调试发现根目录没有APK,需要把路径调整为实际生成位置,例如:

-F "file_stage=@\"$APPCENTER_SOURCE_DIRECTORY/app/build/outputs/apk/release/app-release.apk\""

修改后的完整脚本

if [ "$AGENT_JOBSTATUS" == "Succeeded" ]; then

    echo "Current branch is $APPCENTER_BRANCH"
    if [ "$APPCENTER_BRANCH" == "staging" ];
     then
        # 调试输出,检查路径和文件
        echo "APPCENTER_OUTPUT_DIRECTORY路径:$APPCENTER_OUTPUT_DIRECTORY"
        ls -la "$APPCENTER_OUTPUT_DIRECTORY"
        
        curl \
        -F "status=2" \
        -F "file_stage=@\"$APPCENTER_OUTPUT_DIRECTORY/app-release.apk\"" \
        https://stag.api.website.com/v1/upload/android
    else
        echo "Current branch is $APPCENTER_BRANCH"
    fi
fi

内容的提问来源于stack exchange,提问作者Avinash A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:42:22