VSTS Android签名报错:安全文件不存在或未获授权使用
这个问题我之前在Azure DevOps流水线配置中碰到过,核心原因是AndroidSigning@2任务默认会把jarsignerKeystoreFile参数指向Secure Files库中的文件,而不是你签入源码仓库的本地文件,所以即使文件在解决方案根目录,任务也找不到它,就会抛出这个错误。下面给你两种可行的解决办法:
办法一:使用Secure Files库管理Keystore(推荐,更安全)
如果你的keystore包含敏感信息,优先用这种方式:
- 登录你的Azure DevOps项目,进入Pipelines > Library > Secure Files页面
- 上传你的
mykey.keystore文件到Secure Files库 - 点击上传后的文件,进入详情页,找到Pipeline permissions选项,授权你的目标流水线可以使用这个文件
- 保持你原来的YAML代码不变,现在任务就能正确找到Secure Files中的keystore文件了
办法二:直接引用源码仓库中的Keystore文件
如果你坚持要从源码目录读取keystore,需要调整任务的参数配置,改用本地文件路径的参数:
- task: AndroidSigning@2 displayName: 'Signing' inputs: apkFiles: 'Platforms/MyApp.Android/bin/Release/*.apk' jarsign: true # 指定源码根目录下的keystore文件路径(相对于流水线工作目录) keystoreFile: 'mykey.keystore' keystorePassword: '$(myKeyPassword)' keystoreAlias: "mykey" keyPassword: '$(myKeyPassword)' zipalign: true
这里把原来的jarsignerKeystoreFile换成了keystoreFile,同时对应调整了密码和别名的参数名,这样任务就会从流水线的工作目录(也就是你的源码根目录)读取keystore文件,而不是去Secure Files库查找。
注意:把keystore签入源码仓库存在安全风险,因为任何能访问仓库的人都能拿到这个文件,所以更推荐第一种Secure Files的方式。
内容的提问来源于stack exchange,提问作者François
相关产品推荐
相关产品推荐

