使用 Xamarin.Android 10.3,我尝试从 Visual Studio 16.6.5 签署发布包。为了不在 csproj 文件中包含明文密码,我在项目文件夹中添加了一个名为 Pass.txt 的文件,并将其排除在 git.ignore 文件中
但是当涉及到签名过程时,它失败了:
无法加载签名者“签名者#1” java.io.IOException:无法读取签名者 #1 的密钥“myapp”密码:在 C:\Users\myuser\source 中到达文件末尾 epos\MyApp.Xamarin\Pass.txt
如果我删除
file:Pass.txt
并输入密码,它就可以正常工作。
根据此版本,我们可以在 Xamarin 10.1 及更高版本中使用
file:
。
<PropertyGroup>
<AndroidSigningStorePass>file:C:\Users\Windows User\AndroidSigningPassword.txt</AndroidSigningStorePass>
<AndroidSigningKeyPass>file:C:\Users\Windows User\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>
遗漏了“请注意,如果为两个设置指定了同一个文件,则该文件必须包含两行。第一行必须是密钥库密码,第二行必须是别名密码。 – 刚才的 Fritjof Berggren”
在文件上添加两次密码即可解决问题
有时问题就解决了,但你永远不知道如何解决。 这就是我所做的并且已修复。
C:\Android\SDK>adb remove {your Package Name}
Clean Project
Release Mode
之后清理并重建
Debug mode
。
对我来说,这个问题是我的文件夹位于 One Drive 中,并且我设置了节省空间的选项,所以我的机器中只有链接,一旦下载文件,它就可以工作
2024 年 2 月:我遇到了同样的问题,必须改变
旧:
<propertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-android34.0|AnyCPU'">
<EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningStorePass>xxxxx</AndroidSigningStorePass>
<ApplicationId>com.aaaaa.bbbbb</ApplicationId>
</PropertyGroup>
致:
<propertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net8.0-android34.0|AnyCPU'">
<EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
<AndroidKeyStore>True</AndroidKeyStore>
<AndroidSigningKeyPass>xxxxx</AndroidSigningKeyPass>
<AndroidSigningStorePass>xxxxx</AndroidSigningStorePass>
<ApplicationId>com.aaaaa.bbbbb</ApplicationId>
</PropertyGroup>
缺少 AndroidSigningKeyPass (!) 行。