Xamarin.forms Azure Devops管道-AndroidSigning上缺少输入APK

Xamarin.forms Azure Devops管道-AndroidSigning上缺少输入APK,xamarin.forms,azure-devops,azure-pipelines,android-app-signing,Xamarin.forms,Azure Devops,Azure Pipelines,Android App Signing,我正在为Xamarin Android应用程序建立一个构建管道。我已经完成了将项目拉入、恢复和构建到APK文件的所有步骤。我的下一步是在发布包之前对包进行签名 到目前为止,我所拥有的: 已创建.keystore文件并将其上载到管道>库>安全文件。我通过提供一个不正确的名称并观察结果,然后输入正确的名称,验证了该文件的位置是否正确 密码作为安全变量存储在管道本身中 文件名和别名作为变量存储在管道文件本身上 AndroidSigning@3: 我已经尝试了我能想到的一切来调试它,包括管道中列

我正在为Xamarin Android应用程序建立一个构建管道。我已经完成了将项目拉入、恢复和构建到APK文件的所有步骤。我的下一步是在发布包之前对包进行签名

到目前为止,我所拥有的:

  • 已创建.keystore文件并将其上载到管道>库>安全文件。我通过提供一个不正确的名称并观察结果,然后输入正确的名称,验证了该文件的位置是否正确
  • 密码作为安全变量存储在管道本身中
  • 文件名和别名作为变量存储在管道文件本身上
  • AndroidSigning@3


我已经尝试了我能想到的一切来调试它,包括管道中列出二进制文件目录的一些Powershell脚本。执行此操作时,
$(outputDirectory)
路径扩展到
D:\a\1\b\Release
。这里的文件内容包括我的
.apk
文件,大约18MB大小。此文件夹中还有生成中的一些.dll和.pdb文件

当我的管道到达Android签名任务时,它开始验证.apk文件中的文件:

2020-11-23T21:31:32.2526098Z [command]"C:\Program Files (x86)\Android\android-sdk\build-tools\30.0.2\zipalign.exe" -v 4 D:\a\1\b\Release\com.COMPANY.PROJECT.apk.unaligned D:\a\1\b\Release\com.COMPANY.PROJECT.mobileapp.apk
2020-11-23T21:31:32.4654095Z Verifying alignment of D:\a\1\b\Release\com.COMPANY.PROJECT.mobileapp.apk (4)...
2020-11-23T21:31:32.4657624Z       49 AndroidManifest.xml (OK - compressed)
2020-11-23T21:31:32.4665566Z     1359 res/anim/abc_fade_in.xml (OK - compressed)
2020-11-23T21:31:32.4666075Z     1631 res/anim/abc_fade_out.xml (OK - compressed)
2020-11-23T21:31:32.4666429Z     1920 res/anim/abc_grow_fade_in_from_bottom.xml (OK - compressed)
它完成了对文件的所有检查(或不管它做什么),然后事情就破裂了:

2020-11-23T21:31:32.4904751Z Verification succesful
2020-11-23T21:31:33.3789976Z [command]C:\windows\system32\cmd.exe /D /S /C ""C:\Program Files (x86)\Android\android-sdk\build-tools\30.0.2\apksigner.bat" sign --ks D:\a\_temp\mykeystore.keystore --ks-pass "pass:***" --ks-key-alias aliasname --key-pass "pass:***" --verbose D:\a\1\b\Release\com.COMPANY.PROJECT.apk"
2020-11-23T21:31:41.7116048Z Missing input APK
2020-11-23T21:31:41.7753859Z ##[error]Error: The process 'C:\Program Files (x86)\Android\android-sdk\build-tools\30.0.2\apksigner.bat' failed with exit code 1
2020-11-23T21:31:41.7842464Z ##[section]Finishing: AndroidSigning
我现在不知所措。错误只是说它缺少输入APK,但据我所知,APK文件就在那里。我唯一的怀疑是,也许验证APK中所有内容的过程会删除原始APK


任何帮助都将不胜感激。在这一点上我很迷茫。我正在跟踪我公司另一个团队建立的YML文件,他们通过查看管道历史记录似乎没有任何问题…

问题是我生成了一个随机密码,其中包含
&
%
字符。我解决这个问题的方法是只使用一个非常长的随机字母数字密码,以避免转义这些字符的麻烦。

请检查您的密码中是否有
&
%

如果你没有正确地逃脱那些魔咒,你应该有这样的问题

有人通过正确转义解决了密码中的%和(&A),请参考此链接:


作为一种解决方法,您还可以尝试使用更简单的密码上载另一个密钥库。

这正是问题所在。事实上,我在昨天下午写了这篇文章后发现了它,忘记了更新这就是问题所在。管道工程现在:)
2020-11-23T21:31:32.4904751Z Verification succesful
2020-11-23T21:31:33.3789976Z [command]C:\windows\system32\cmd.exe /D /S /C ""C:\Program Files (x86)\Android\android-sdk\build-tools\30.0.2\apksigner.bat" sign --ks D:\a\_temp\mykeystore.keystore --ks-pass "pass:***" --ks-key-alias aliasname --key-pass "pass:***" --verbose D:\a\1\b\Release\com.COMPANY.PROJECT.apk"
2020-11-23T21:31:41.7116048Z Missing input APK
2020-11-23T21:31:41.7753859Z ##[error]Error: The process 'C:\Program Files (x86)\Android\android-sdk\build-tools\30.0.2\apksigner.bat' failed with exit code 1
2020-11-23T21:31:41.7842464Z ##[section]Finishing: AndroidSigning