Android Azure Devops Gradle构建在签署apk w zipalign时失败,退出代码1

Android Azure Devops Gradle构建在签署apk w zipalign时失败,退出代码1,android,gradle,azure-devops,zipalign,android-signing,Android,Gradle,Azure Devops,Zipalign,Android Signing,我有一个android应用程序,我正在尝试为我们的团队在Azure Devops中设置CICD。 然而,我无法完成“构建”阶段。 在“Android签名”子任务中失败,错误消息: [错误]错误:进程“/Users/vsts/Library/Android/sdk/build tools/19.1.0/zipalign”失败,退出代码为1 当我在签名任务上取消选择可选的“zipalign”功能时,它会起作用。但正如我所读到的,如果不首先使用zipalign,就不应该部署应用程序 该应用程序是在An

我有一个android应用程序,我正在尝试为我们的团队在Azure Devops中设置CICD。 然而,我无法完成“构建”阶段。 在“Android签名”子任务中失败,错误消息:

[错误]错误:进程“/Users/vsts/Library/Android/sdk/build tools/19.1.0/zipalign”失败,退出代码为1 当我在签名任务上取消选择可选的“zipalign”功能时,它会起作用。但正如我所读到的,如果不首先使用zipalign,就不应该部署应用程序

该应用程序是在Android Studio(Kotlin)中构建的。我在网上发现的所有类似问题都与xamarin有关,我现在不使用xamarin

如果相关的话,我正在arm64设备上部署。在Android Studio中构建和签名没有问题(尽管我不确定它是否默认使用zipalign,因为使用生成签名的APK向导不清楚。我想它会在没有询问的情况下为您完成这项工作?)。 无论如何,我当然在尝试在DevOps中对主分支的pull请求进行自动构建部署,这是我通常在其他项目中执行的方式

这是我的azure-pipelines.yaml

# Android
# Build your Android project with Gradle.
# Add steps that test, sign, and distribute the APK, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/android

trigger:
- master

pool:
  vmImage: 'macos-latest'

steps:
- task: Gradle@2
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'assembleDebug'

- task: AndroidSigning@3
  inputs:
    apkFiles: '**/*.apk'
    apksignerKeystoreFile: 'key.jks'
    apksignerKeystorePassword: 'XXXX'
    apksignerKeystoreAlias: 'key0'
    apksignerKeyPassword: 'XXXX'

- task: CopyFiles@2
  inputs:
    contents: '**/*.apk'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
下面是圆木的尾端。我收到了一堆关于各种资源的(坏-1-2-3)消息。不确定这是否与错误本身有关


我遇到了完全相同的问题,结果我的发布版本仍然设置为可调试。在我的gradle文件中设置“debugable false”解决了这个问题。

请查看此处的讨论。似乎在最新的Gradle版本中,apk是使用自动对齐apk的新库(zipflinger)构建的,zipalign在尝试对齐已对齐的apk时失败(zipalign验证在初始apk上返回成功)。。。 这听起来很奇怪,但显然不再需要zipalign了

因此,解决方案是在zure-piplelines.yml中禁用zipalign

 - task: AndroidSigning@3
  inputs:
    apkFiles: '**/*.apk'
    ...
    zipalign: false

你能给我们看一下完整的调试日志吗?这个退出代码非常通用。也许能从中发现一些不正常的东西。(请设置System.debug=true)@MerlinLiang MSFT很抱歉回复太晚。谢谢你的回复。我已经在上面的帖子中添加了日志的结尾。这有帮助吗?@RoleyBaxter你让它工作了吗?我也有这个问题。@WoutervanVegchel遗憾的是,没有。我们不经常发布这样的版本,这个应用程序只供内部使用。到目前为止,我一直在Android Studio中手动构建版本。我相信这可能与某些文件的压缩状态返回为“坏”有关,但我不知道如何修复此问题。如果你运气好的话,请告诉我:)把assembleDebug改成assembleRelease对我很有效。看到这个答案了吗