由于签名问题,由 ADO 管道签名的 APK 无法安装并出现“未安装应用程序”错误

时间:2021-04-12 05:11:10

标签: android xamarin.forms azure-devops-pipelines

我是 xamarin 和移动开发的新手,很难将我的应用部署到实际设备上。每次我尝试在模拟器以外的任何设备上安装时,都会收到 App not installed 错误。我花了很多时间在线讨论类似的问题/问题,但它们都没有帮助,或者至少我无法成功地将它们应用于我的情况,因为绝大多数似乎都适用于在 android studio 工作并手动构建 apk。

我在 VS 2019 中使用 xamarin.forms,然后使用 ADO 管道来构建和签署 .apk 文件。从我的管道的角度来看,事情似乎工作正常。签名步骤应该可以成功签名和验证,但是尝试在 android studio 中调试 .apk 文件时出现以下错误:

Installation did not succeed.
The application could not be installed: INSTALL_PARSE_FAILED_NO_CERTIFICATES

APK signature verification failed.

运行命令 apksigner verify --print-certs <myapkfile>.apk,出现以下错误:

DOES NOT VERIFY
ERROR: Missing META-INF/MANIFEST.MF

我不确定为什么我的签名 apk 仍然失败并出现这些错误,并且根据 guide for signing 我没有看到我遗漏的任何东西。

配置

我的目标 android 版本是 Android 10.0(API 级别 29),我的 ADO .yaml 管道中的任务配置如下:

- task: XamarinAndroid@1
  inputs:
    projectFile: '**/*Droid*.csproj'
    outputDirectory: $(Build.ArtifactStagingDirectory)
    configuration: '$(buildConfiguration)'
    createAppPackage: true
    jdkOption: 'JDKVersion'
- task: AndroidSigning@3
  inputs:
    apkFiles: '**/*.apk'
    apksign: true
    apksignerKeystoreAlias: OnDeck
    apksignerKeystoreFile: 'release.keystore'
    apksignerKeystorePassword: $(CredentialPassword)
    apksignerKeyPassword: $(CredentialPassword)

我觉得它一定是我遗漏的一些非常小的东西,但我就是想不通。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这个问题是因为在移动设备上安装了相同的版本,但在不同的系统上构建(导致不同的 SHA1 密钥)

解决方案:- 增加版本号并尝试安装。