android - 如何使用 azure 管道生成 .AAB 文件并签署 Android 应用程序包
问题描述
我想使用 Azure 管道生成一个 Android 应用程序包 (.aab) 文件,并在生成 Android 应用程序包文件时遇到问题。
我已经使用下面的 Gradle 任务来生成和签署 .aab 文件。但是,它会生成 .APK 文件。我想生成 .aab 文件。
- task: Gradle@2
inputs:
gradleWrapperFile: 'gradlew'
tasks: 'buildRelease'
publishJUnitResults: false
javaHomeOption: 'JDKVersion'
sonarQubeRunAnalysis: false
spotBugsAnalysis: false
这是脚本,我使用 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)'
解决方案
在 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'
我在签名任务中创建并使用了以下变量:
KeyStoreFile.secureFilePath
StorePassword
KeyPassword
KeyStoreAlias