Azure Pipeline Xamarin Android 您上传的 APK 没有压缩对齐。您需要 运行 在您的 APK 上安装一个 zip 对齐工具,然后重新上传

Azure Pipeline Xamarin Android You uploaded an APK that is not zip aligned. You will need to run a zip align tool on your APK and upload it again

我正在尝试使用 AzureDevops 管道为 Xamarin Android 应用程序设置构建管道。

导致我的头发变细变白的步骤是签名和 Zipaligning。

为了签名,我使用以下方法创建了一个自签名密钥:

keytool -genkeypair -v -keystore keystore.keystore -alias keyAlias -keyalg RSA -keysize 2048 -validity 10000

然后我将 keystore.keystore 添加到 azureDevOps 安全文件位置并为所有管道启用它

然后我按以下方式设置签名步骤:

task: AndroidSigning@3
inputs:
apkFiles: '**/*.apk'
apksign: true
apksignerKeystoreFile: 'keystore.keystore'
apksignerKeystorePassword: '12345678'
apksignerKeystoreAlias: 'keyAlias'
apksignerKeyPassword: '12345678'
apksignerArguments: '--verbose'
zipalign: true

管道运行良好,没有错误,产生工件:

这是签名步骤的部分日志:

Starting: AndroidSigning
============================================================================== > Task : Android signing Description : Sign and align Android
APK files Version : 3.181.0 Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/build/android-signing
============================================================================== > /Users/runner/Library/Android/sdk/build-tools/30.0.3/zipalign -v 4

/Users/runner/work/1/s/xxx.MobileApp/xxx.MobileApp.Android/obj/Release/android/bin/com.xxx.xxx.mobileapp.apk.unaligned
/Users/runner/work/1/s/xxx.MobileApp/xxx.MobileApp.Android/obj/Release/android/bin/com.xxx.xxx.mobileapp.apk
Verifying alignment of
/Users/runner/work/1/s/xxx.MobileApp/xxx.MobileApp.Android/obj/Release/android/bin/com.xxx.xxx.mobileapp.apk
(4)...
49 AndroidManifest.xml (OK - compressed)
...
28095862 META-INF/proguard/androidx-annotations.pro (OK - compressed)
Verification succesful
/Users/runner/Library/Android/sdk/build-tools/30.0.3/apksigner sign
--ks /Users/runner/work/_temp/keystore.keystore --ks-pass pass:12345678 --ks-key-alias keyAlias --key-pass
pass:12345678 --verbose
/Users/runner/work/1/s/xxx.MobileApp/xxx.MobileApp.Android/obj/Release/android/bin/com.xxx.xxx.mobileapp.apk
Signed Finishing: AndroidSigning

然而,当我尝试将 APK 上传到 Play 商店时“创建内部测试版本”

我收到错误: You uploaded an APK that is not zip aligned. You will need to run a zip align tool on your APK and upload it again.

这让我双手高举,摇头。

原因是一如既往的内在心智能力不足。我没有设置输出目录。将 apkFiles: '**/*.apk' 更改为 apkFiles: '$(outputDirectory)/*.apk' 后一切正常。

task: AndroidSigning@3
inputs:
apkFiles: '$(outputDirectory)/*.apk'
apksign: true
apksignerKeystoreFile: 'keystore.keystore'
apksignerKeystorePassword: '12345678'
apksignerKeystoreAlias: 'keyAlias'
apksignerKeyPassword: '12345678'
apksignerArguments: '--verbose'
zipalign: true