如何使用 azure pipeline 生成 .AAB 文件并签署 Android 应用程序包

har*_*nat 4 android azure azure-devops azure-pipelines

我想使用 Azure 管道生成 Android 应用程序包 (.aab) 文件,但在生成 Android 应用程序包文件时遇到问题。

我已使用以下 Gradle 任务来生成并签署 .aab 文件。但是,它生成 .APK 文件。我想生成 .aab 文件。

- task: Gradle@2
  inputs:
    gradleWrapperFile: 'gradlew'
    tasks: 'buildRelease'
    publishJUnitResults: false
    javaHomeOption: 'JDKVersion'
    sonarQubeRunAnalysis: false
    spotBugsAnalysis: false
Run Code Online (Sandbox Code Playgroud)

这是脚本,我在其中使用 jarsigner 来签署 .aab 文件:

- task: CmdLine@2
  displayName: 'Signing and aligning AAB file(s) app\build\outputs\bundle\release\app-release.aab'
  inputs:
    script: 'jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore $(KeyStoreFile.secureFilePath) -storepass $(StorePassword) -keypass $(KeyPassword) $(system.defaultworkingdirectory)/app/build/outputs/bundle/release/app-release.aab $(KeyStoreAlias)'
Run Code Online (Sandbox Code Playgroud)

har*_*nat 11

在 Gradle 任务中:我需要将tasks值“ buildRelease”更改为“ :app:bundleRelease”以生成 .aab 文件。

这是我用来生成和签署 .aab 文件的 .yaml 文件:

trigger:
- master

pool:
  vmImage: ubuntu-latest

steps:
- task: DownloadSecureFile@1
  inputs:
    secureFile: 'AndroidApp.jks'

- task: Gradle@2
  inputs:
    gradleWrapperFile: 'gradlew'
    tasks: ':app:bundleRelease'
    publishJUnitResults: false
    javaHomeOption: 'JDKVersion'
    sonarQubeRunAnalysis: false
    spotBugsAnalysis: false


- task: CmdLine@2
  displayName: 'Signing and aligning AAB file(s) app\build\outputs\bundle\release\app-release.aab'
  inputs:
    script: 'jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore $(KeyStoreFile.secureFilePath) -storepass $(StorePassword) -keypass $(KeyPassword) $(system.defaultworkingdirectory)/app/build/outputs/bundle/release/app-release.aab $(KeyStoreAlias)'

- task: CopyFiles@2
  inputs:
    SourceFolder: '$(system.defaultworkingdirectory)/app/build/outputs/bundle/release/'
    Contents: '**'
    TargetFolder: '$(build.artifactstagingdirectory)'

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'
Run Code Online (Sandbox Code Playgroud)

我在签名任务中创建并使用了以下变量:

KeyStoreFile.secureFilePath
StorePassword
KeyPassword
KeyStoreAlias
Run Code Online (Sandbox Code Playgroud)