我在部署之前试图签署我的apk。 这里是yaml片段:
- task: AndroidSigning@2
displayName: 'Signing'
inputs:
apkFiles: 'Platforms/MyApp.Android/bin/Release/*.apk'
jarsign: true
jarsignerKeystoreFile: 'mykey.keystore'
jarsignerKeystorePassword: '$(myKeyPassword)'
jarsignerKeystoreAlias: "mykey"
jarsignerKeyPassword: '$(myKeyPassword)'
zipalign: true
问题是,虽然文件mykey.keystore
位于解决方案的根目录(检查到源代码管理),但我得到以下yaml验证错误:
阶段Android:步骤输入jarsignerKeystoreFile引用安全文件 mykey.keystore无法找到。安全文件 不存在或未被授权使用。
答案 0 :(得分:1)
与doc所说的相反,密钥库文件不能来自源代码管理。它必须是在secure file
版本定义中上传的library
(请参阅此post)。
所以上传该文件然后开始创建手动构建定义,选择Android Signing
任务,有一个安全文件的下拉列表。选择您在库中上传的文件,然后单击&#34;查看YAML&#34;。然后,您可以看到正确的输入以使用jarsignerKeystoreFile: '<someId>'
。
答案 1 :(得分:0)
这是对我有用的构建配置:
trigger:
- master
pool:
vmImage: 'Ubuntu-16.04'
variables:
- group: 'Android Signing keys'
steps:
- task: Gradle@2
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
javaHomeOption: 'JDKVersion'
jdkVersionOption: '1.11'
jdkArchitectureOption: 'x64'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleRelease'
- task: DownloadSecureFile@1
inputs:
secureFile: key-store.jks
- task: AndroidSigning@3
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: 'key-store.jks'
apksignerKeystorePassword: '$(KEYSTORE_PASSWORD)'
apksignerKeystoreAlias: '$(KEYSTORE_ALIAS)'
apksignerKeyPassword: '$(KEY_PASSWORD)'
# When it was set to true the task threw this error:
# zipalign: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
zipalign: false
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1