Xamarin.forms Azure Devops管道-AndroidSigning上缺少输入APK
我正在为Xamarin Android应用程序建立一个构建管道。我已经完成了将项目拉入、恢复和构建到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: 我已经尝试了我能想到的一切来调试它,包括管道中列
- 已创建.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