gradle插件更新后生成的apk未签名

Posted

技术标签:

【中文标题】gradle插件更新后生成的apk未签名【英文标题】:Generated apk is unsigned after gradle plugin update 【发布时间】:2020-07-10 20:22:08 【问题描述】:

所以,在我将 android gradle 插件更新到 3.6 版之前,我的项目运行良好。现在,当我在 Android Studio 中通过“生成签名的 APK”生成发布 apk,或者在我们的 CI 上构建发布 apk 时,它会生成一个未签名的 apk。 我使用 jre 的“jarsigner”工具来验证它(jarsigner --verify --certs D:\app-release.apk),它告诉我“jar 未签名”。 我的 build.gradle 中有一个签名配置:

signingConfigs 
    release 
        storeFile file(signing.keyPathRetail)
        storePassword signing.storePasswordRetail
        keyAlias signing.keyAliasRetail
        keyPassword signing.keyPasswordRetail
    

密钥库的位置和所有密码都正确。密钥库本身多年来没有改变。当我将 com.android.tools.build:gradle 依赖项恢复到版本 3.4.2 时,相同的项目正在生成一个有效的签名 apk。

我发现如果我以 7-zip 打开生成的 apk,它在 META-INF 文件夹中缺少文件“CERT.RSA”和“CERT.SF”(使用 3.4.2 gradle 生成的 apk插件版本有它们),但我不知道为什么。

【问题讨论】:

【参考方案1】:

马上去: 构建 - 生成签名的 APK - 选择密钥库和密钥,然后您就可以开始了。

它对我有用。

尝试以下步骤:-

在 Android Studio 中转到 File > Project Structure 并取消“使用嵌入式 JDK”,然后单击 OK

转到计算机设置(系统设置)(win + 暂停键)然后转到高级系统设置>环境变量。如果 JAVA_HOME 不存在,则添加它并设置已安装 JDK 的路径。 如果找不到直接修改 JDK 路径的方法,请执行以下操作(最后一步),但请确保在此之前进行备份。

为了确保您在项目视图中引导的位置,请从根目录中删除“.grade”、“.idea”、“capture”、“gradle”文件夹和“build”、“release”、“lib”文件夹从“app”离开“src”。删除root.iml,不要删除app.iml文件然后重建工程,然后创建Signed包

【讨论】:

我试过了,新版插件的apk还是未签名 尝试创建一个新的密钥库。 但是如果我创建一个新的密钥库,那么旧版本的客户端如果不卸载应用程序就无法更新吗? 那么你的应用发布了吗?好的。 尝试了编辑后的答案,仍然未签名。我不认为问题出在我的本地项目上,因为在 Jenkins 和其他人的计算机(包括 Mac 和 Linux)上构建 apk 时也会发生这种情况。

以上是关于gradle插件更新后生成的apk未签名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Gradle实验插件对64位Android APK进行代码签名?

配置文件或调试 APK:生成签名的 Bundle 需要您将 Android Gradle 插件更新到版本 3.2.0

Android Studio 2.2 更新:未使用新的 Gradle 插件 2.2.0 生成对齐的 APK (zipAlign)

如何解决此问题“在 app gradle 中 minifyEnabled 为 true 时未生成签名的 apk”

Android:如何仅通过 Gradle 生成签名 APK? [复制]

Android Gradle 插件gradle.properties 中配置编译参数并在 Java 代码 BuildConfig 中调用该参数