PackageParserException:包 ...base.apk 在条目 AndroidManifest.xml 处没有证书

PackageParserException: Package ...base.apk has no certificates at entry AndroidManifest.xml

我 运行 我的应用处于调试模式,没问题。但是当我签名并尝试安装apk时,这个错误发生在Logcat,phone显示"App is not installed"。

对于 <7.0 android 的每个 phone 都是一样的,所以我认为问题出在应用程序签名中,但我已经尝试 V1、V2、只有 V1 - 好像 android 工作室甚至没有意识到我改变了一些东西。

试图用这个完全禁用 V2,但没有成功。

signingConfigs{
    release {
        storeFile file("keystore.jks")
        storePassword 'password'
        keyAlias 'alias'
        keyPassword 'password'
        v2SigningEnabled false
    }
}

我还能做什么?

C:\Program Files\Android\Android Studio\jre\jre\bin>java -version
openjdk version "1.8.0_152-release"
OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
OpenJDK 64-Bit Server VM (build 25.152-b01, mixed mode)    

今天我将 Android Studio 更新到 3.3 并遇到了同样的问题。

我在删除 Build 文件夹后修复了它,清理项目使 Caches/Restart 失效。 之后,我可以通过 Build -> Generate Signed Bundle/APK 生成签名的应用程序,只有 V1 签名。

使用 signingConfigs release 构建签名的应用程序仍然不起作用。

你可以试试我的解决方案。

好的,我通过执行这些操作解决了它,但我不确定实际修复它的原因。无论如何:

  1. 将所有代码复制到另一个项目中(奇怪?)

  2. 创建另一个密钥库

  3. 删除所有需要 newest java features 的函数,因此是最新的 Android

  4. 之后,只选择v1 jar签名

生成签名 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。