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 中调用该参数