VSTS - Android签名 - 安全文件不存在或未经授权使用

时间:2018-05-05 15:45:22

标签: yaml azure-pipelines

我在部署之前试图签署我的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无法找到。安全文件   不存在或未被授权使用。

2 个答案:

答案 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