【问题标题】:INSTALL_PARSE_FAILED_NO_CERTIFICATES on a release build发布版本上的 INSTALL_PARSE_FAILED_NO_CERTIFICATES
【发布时间】:2019-02-17 18:22:38
【问题描述】:

我有一个奇怪的问题,即我的调试版本运行良好,但在签署并生成我上传到 Play 商店的应用程序包后,应用程序立即崩溃(我在具有商店版本的手机上运行 LogCat我的应用程序,我看到它与 AndroidX ConstraintLayout 有关,但无法重现)。我认为releasedebug 版本之间存在一些差异,所以我开始调试我的发布版本。

当我这样做时,Android Studio 无法安装 APK 并出现以下错误:

安装失败并显示 INSTALL_PARSE_FAILED_NO_CERTIFICATES 消息: 包 /data/app/vmdl1900556551.tmp/base.apk 没有证书 条目 AndroidManifest.xml。这个问题有可能得到解决 通过卸载现有版本的apk(如果存在),以及 然后重新安装。

警告:卸载将删除应用程序数据!

您要卸载现有的应用程序吗?

我的app.gradle 中有签名配置,它使用与我签名和发布的应用相同的数据:

android {
    signingConfigs {
        defaultConfig {
            keyAlias 'solaredge-notifier'
            keyPassword '******'
            storeFile file('/path/to/KeyStore.jks')
            storePassword '*****'
        }
    }
    compileSdkVersion 28
    defaultConfig {
        applicationId "nl.friesoft.solaredgenotifier"
        minSdkVersion 23
        targetSdkVersion 27
        versionCode 2
        versionName "1.1"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            debuggable true
            signingConfig signingConfigs.defaultConfig
        }
    }
}

我现在有点迷失了(坦率地说,我有点生气,因为我在 Play Store 上发布了一个崩溃的应用程序)。

如果您想查看实时应用,请点击此处:https://play.google.com/store/apps/details?id=nl.friesoft.solaredgenotifier&hl=en

【问题讨论】:

  • 如果你use keytool to examine your signed APK,它签名是否如你所愿?
  • @CommonsWare 你是指我尝试调试的那个吗?
  • 我的意思是导致INSTALL_PARSE_FAILED_NO_CERTIFICATES 安装错误的那个。您正在尝试对其签名——它是否已签名?还是您不小心使用了未签名的 APK 副本?
  • @CommonsWare 我将 Android Studio 设置为构建变体“发布”,然后按 Shift-F9 进行调试。我现在正在与keytool 核对。
  • APK中META-INF中没有RSA文件。它似乎没有签名。

标签: android android-studio code-signing


【解决方案1】:

在(重新)生成您的证书之前,请尝试以下操作:

您设备的 Android SDK 版本是否在 minSdkVersion 和 compileSdkVersion 指定的范围内?

至少您设备的 SDK 版本必须符合 minSdkVersion。

试试看。根据我的经验,当我部署到 SDK 版本超出 minSdkVersion 和 compileSdkVersion 范围的设备时,出现此错误: '无法安装应用程序:INSTALL_PARSE_FAILED_NO_CERTIFICATES'。

我修改了范围以包括我设备的 SDK 版本,瞧!

【讨论】:

    【解决方案2】:

    生成签名apk的步骤:

    1 – 构建发布未签名的 apk。

    2 – 使用命令提示符压缩对齐未签名的 APK。

    zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk
    

    3 – 使用应用签名者通过命令提示符使用 Sonim 私钥对 APK 进行签名。

    apksigner sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
    

    4 – 在设备中安装签名的 apk。

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 1970-01-01
      • 2019-05-12
      • 2012-12-20
      • 2018-01-17
      • 2021-02-13
      • 2016-10-09
      • 1970-01-01
      • 2018-10-12
      相关资源
      最近更新 更多