无法在 Xamarin.Android 上加载签名者

问题描述 投票:0回答:4

使用 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>
android xamarin xamarin.android
4个回答
3
投票

遗漏了“请注意,如果为两个设置指定了同一个文件,则该文件必须包含两行。第一行必须是密钥库密码,第二行必须是别名密码。 – 刚才的 Fritjof Berggren”

在文件上添加两次密码即可解决问题


2
投票

有时问题就解决了,但你永远不知道如何解决。 这就是我所做的并且已修复。

  1. 转到工具>> Android >> Android ADB 命令提示符
  2. 类型
    C:\Android\SDK>adb remove {your Package Name}
  3. Clean Project
  4. 内置
    Release Mode

之后清理并重建

Debug mode


1
投票

对我来说,这个问题是我的文件夹位于 One Drive 中,并且我设置了节省空间的选项,所以我的机器中只有链接,一旦下载文件,它就可以工作


0
投票

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 (!) 行。

© www.soinside.com 2019 - 2024. All rights reserved.