【发布时间】:2023-03-17 02:03:01
【问题描述】:
我正在尝试使用 AzureDevops Pipeline 为 Xamarin Android 应用设置构建管道。
导致我的头发变薄变白的步骤是签名和拉链对齐。
对于签名,我使用以下方法创建了一个自签名密钥:
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
管道运行良好,没有错误,产生工件:
这是签名步骤的部分日志:
开始:AndroidSigning
==================================================== ============================> 任务:Android 签名说明:Android 签名和对齐
APK 文件版本:3.181.0 作者:微软公司
帮助 : 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
验证对齐
/Users/runner/work/1/s/xxx.MobileApp/xxx.MobileApp.Android/obj/Release/android/bin/com.xxx.xxx.mobileapp.apk
(4)...
49 AndroidManifest.xml(OK - 压缩)
...
28095862 META-INF/proguard/androidx-annotations.pro(OK - 压缩)
验证成功
/Users/runner/Library/Android/sdk/build-tools/30.0.3/apksigner 签名
--ks /Users/runner/work/_temp/keystore.keystore --ks-pass pass:12345678 --ks-key-alias keyAlias --key-pass
通过:12345678 --verbose
/Users/runner/work/1/s/xxx.MobileApp/xxx.MobileApp.Android/obj/Release/android/bin/com.xxx.xxx.mobileapp.apk
签名整理: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.
这让我把双手举在空中,然后摇头。
【问题讨论】:
-
很高兴知道您找到了原因。请标记您的答案,以便有相同问题的人更容易找到答案。
-
@WalterQian-MSFT 完成,忘了做。谢谢提醒。
标签: android xamarin azure-devops google-play azure-pipelines