标签: apksigner

Android签名错误:受信任的证书条目未受密码保护

有证书签署android unsigned release apk文件,所以我使用命令导入了cer:

keytool -import -alias alias_name -file cer_name.cer -storepass changeit  -keystore my_keystore.keystore
Run Code Online (Sandbox Code Playgroud)

但是当用android studio签署应用程序时,它会产生错误:

Error:Execution failed for task ':packageDebug'.
> com.android.ide.common.signing.KeytoolException: Failed to read key alias_name from store "C:\Users\username\my_keystore.keystore": trusted certificate entries are not password-protected
Run Code Online (Sandbox Code Playgroud)

我的扣除说,因为密钥没有密码保护所以我再次尝试并使用以下方法设置密钥密码:

keytool -import -alias alias_name -file cer_name.cer -storepass changeit -keypass changeit -keystore my_keystore.keystore
Run Code Online (Sandbox Code Playgroud)

但仍然存在错误.

我也尝试过与jarsigner的手动程序:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my_keystore.keystore unsigned-release.apk alias_name
Run Code Online (Sandbox Code Playgroud)

得到错误:

jarsigner: Certificate chain not found for: alias_name.  alias_name must reference a valid KeyStore key entry containing a …
Run Code Online (Sandbox Code Playgroud)

android keytool jarsigner apk apksigner

12
推荐指数
2
解决办法
4350
查看次数

如何在 AOSP 源代码中添加预构建应用程序(系统应用程序)

我试图在 AOSP 版本 10 中添加 APK 作为系统应用程序。我已按照几乎不同的链接中提到的过程进行操作,该链接位于此处Add apk in AOSP但没有任何效果。此链接中提到的过程以及我遵循的步骤是:

  1. 将我的 Apk 放入Aosp_root/packages/apps/my-app-folder/my-app.apk
  2. Android.mkmy-app.apk/my-app-folder

代码Android.mk

    LOCAL_PATH := $(call my-dir)
    
    include $(CLEAR_VARS)
    
    LOCAL_MODULE_TAGS := optional
    
    LOCAL_MODULE := Signal
    
    LOCAL_CERTIFICATE := platform
    
    LOCAL_SRC_FILES := Signal-website-universal-release-4.55.8.apk
    
    LOCAL_MODULE_CLASS := APPS
    
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    
    include $(BUILD_PREBUILT)
Run Code Online (Sandbox Code Playgroud)
  1. 然后在步骤 3 中添加PRODUCT_PACKAGEScore.mk否则common.mk我无法在指定目录 ( ) 中找到两个指定文件 (core.mk或) 。但我在文件夹中找到了文件,并在该文件中找到了该文件并在其中添加了 my-app 的目录。common.mkbuild/target/productsgsi-common.mkbuild/target/productPRODUCT_PACKAGES

这是 的代码gsi-common.mk

   `PRODUCT_PACKAGES += \ …
Run Code Online (Sandbox Code Playgroud)

android operating-system android-source apksigner

9
推荐指数
1
解决办法
1万
查看次数

Apk 签名者条目不包含密钥

我正在尝试使用此代码使用 APK 签名者手动签署 APK

apksigner sign --ks D:\Android\SDK\keystores\release.keystore --ks-key-alias uploadcertificate --out app-release.apk app.apk
Run Code Online (Sandbox Code Playgroud)

但这给了我一个错误

Failed to load signer "signer #1": D:\Android\SDK\keystores\release.keystore entry "uploadcertificate" does not contain a key
Run Code Online (Sandbox Code Playgroud)

但是,当我使用 keytool 列出密钥库中的别名时,我可以看到别名 uploadcertificate。

keytool -v -list -keystore D:\Android\SDK\Keystores\release.keystore
Enter keystore password:
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

Alias name: uploadcertificate
Creation date: May 21, 2018
Entry type: trustedCertEntry

Owner: C=US, O=Android, CN=Android Debug
Issuer: C=US, O=Android, CN=Android Debug
Serial number: 1
Valid from: Mon Feb 13 …
Run Code Online (Sandbox Code Playgroud)

android keytool apksigner

7
推荐指数
1
解决办法
4596
查看次数

Jar签名者和Apk签名者有什么区别?

由于ApkSigner在版本24.0.3及更高版本的Android SDK Build Tools中可用.我有一个问题ApkSigner和JarSigner有什么区别?为什么我们需要ApkSigner?

我可以在命令行中为两位签名者签署Apk吗?

android apksigner

6
推荐指数
1
解决办法
3860
查看次数

Visual Studio 的 AndroidApkSigner 在密钥库中找不到密钥

在 Visual Studio 中创建 APK 时出现此错误:

Failed to load signer "signer #1": C:\...\googleplay.keystore entry "googleplay" does not contain a key
Run Code Online (Sandbox Code Playgroud)

我是熟悉 Visual Studio 的长期 ASP.NET 开发人员,但这是我的第一个 Xamarin 项目。(我没有使用 Android Studio。)我正在尝试将 Android 版本部署到 Google Play。我从来没有上传过APK到Google Play,所以我无法使用Visual Studio的自动部署;我必须首先按照 Google 和 Microsoft 的说明执行手动部署。

我正在使用 JDK 1.8 运行 Visual Studio 2017 15.7.5(最新)。我的项目使用 NETStandard.Library 2.0.3、Xamarin.Forms 3.1.0 和 Microsoft.EntityFrameworkCore 2.1.1。

这个问题类似于这个没有答案的问题,但我从 Visual Studio 中收到错误。如果这是重复的,我深表歉意,但我无法添加有关该问题的其他详细信息。

我正在使用 Google Play 应用签名。我已经通过 Google Play 创建了一个密钥。我下载了 .der 格式的证书。我使用 keytool(来自 c:\Program Files\Java\jdk1.8.0_172\bin)使用以下命令将 .der 文件转换为 .keystore:

keytool -importcert -alias googleplay -file …
Run Code Online (Sandbox Code Playgroud)

keytool visual-studio xamarin.android google-play apksigner

6
推荐指数
1
解决办法
6143
查看次数

apksigner:找不到命令

规格:

  • Android Studio 版本:Android Bumblebee
  • Android 构建 SDK 构建工具:30.0.3
  • Android SDK 命令行工具:7.0

我正在尝试使用 apksigner 签署 apk。我在 Android Studio 终端中使用此命令

apksigner sign --ks release.jks app.apk
Run Code Online (Sandbox Code Playgroud)

我正在遵循官方文档,但收到此错误

bash: apksigner: command not found
Run Code Online (Sandbox Code Playgroud)

当我进一步挖掘时,我发现 Android/sdk/cmdline-tools/7.0/bin 没有 apksigner,它有以下命令行工具

在此输入图像描述

我在这里缺少什么?我尝试下载cmdline-tools/6.03.0但没有看到 apksigner。

android android-studio android-app-signing apksigner

6
推荐指数
1
解决办法
9830
查看次数

我可以指定 apksigner 使用的摘要算法吗?

由于最近的 SHA1 冲突新闻,我想确保在我的 apk 签名中不再使用 SHA1。但是我在apksigner 中找不到参数。

有没有办法指定(直接或间接)apksigner 使用的摘要算法?

(在 SDK 24 之前,Android 使用 javajarsigner来签署 apk,其中有类似的选项-sigalg SHA1withRSA -digestalg SHA1


更新:正如亚历克斯提到的,我apksignerV1SchemeSigner.java 中找到了如何确定方案 v1 的签名算法。

简而言之,apksignerminimumSDK证书和密钥类型来确定它。

  • SHA256withRSA 最低 SDK 18 (Android 4.3) 及以上
  • SHA256withDSA 最低 SDK 21 (Android 5.0) 及以上
  • SHA256withEC 最低 SDK 18 及以上
  • SHA1with* 用于较低的最低 SDK 级别

这是我为备忘而写的常见问题解答:SHA1 Collision and Android APK Signing

android apk apksigner

5
推荐指数
1
解决办法
3728
查看次数

上传新 APK 版本时出现签名错误消息(API 级别 8 不支持 SHA1)

我在 2010 年发布了一个应用程序。那时,我创建了一个本地密钥库和一个密钥,我从未更改过并用于我从那时起发布的这个应用程序的所有(大约 30 个)版本。

我从来没有遇到过任何问题,在我用 Eclipse 开发的日子里,它总是工作得很好,最近几年我切换到 Android Studio 时也没有。

我发布的最后一个版本是 2016 年 12 月 23 日。现在我想发布一个新的,用 Android Studio 生成一个签名的 APK,将它上传到开发者控制台......并收到以下错误消息:

上传失败 - 您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误(Jar 签名者 CERT.DSA):JAR 签名 META-INF/CERT.DSA 使用摘要算法 SHA-1 和带有 DSA 的签名算法 SHA-1 这在 API 级别 8 上不受支持,为此APK 正在验证中

我尝试了(新可用的)签名版本选项的这些组合(始终具有相同的结果):

  • 只有“V1(Jar Signature)”
  • “V1(Jar 签名)”和“V2(完整 APK 签名)”

我将 Android Studio 2.3.3 与 buildToolsVersion 25.0.0 和 Gradle 3.3 版一起使用。

android apksigner

5
推荐指数
1
解决办法
1559
查看次数

Apksigner 不验证签名

我试图用 apksigner 验证最新的 Gmail 应用程序(版本 8.11.25.224)的签名,但失败了。

我用了:

apksigner verifiy --verbose --print-certs <apk.file>

结果是:

DOES NOT VERIFY
ERROR: APK Signature Scheme v2 signer #1 Malformed additional attribute #1
Run Code Online (Sandbox Code Playgroud)

我正在寻找为什么会发生这种情况的解释,但我找不到任何解决此问题的方法。我已经进行了一些实验,如果您添加--min-sdk-version 28到 apksigner 命令的选项中,那么结果是:

Verified using v1 scheme (JAR signing): false
Verified using v2 scheme (APK Signature Scheme v2): false
Number of signers: 1
Signer #1 certificate DN: CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Signer #1 certificate SHA-256 digest: f0fd...
Signer #1 certificate SHA-1 digest: 3891...
Signer #1 certificate …
Run Code Online (Sandbox Code Playgroud)

android apk android-security apksigner

5
推荐指数
2
解决办法
7020
查看次数

签名apk适用于Android Studio,但为什么同一个密钥库在命令行上不起作用?

我用于签署Android应用的密钥是使用Android Studio生成的.当我尝试从Android Studio生成签名的APK时,它工作正常.

但是,当我尝试使用apksigner工具进行签名时,相同的密钥不起作用.这是我正在使用的命令.

apksigner sign --ks mykey.jks --ks-key-alias MyAlias --out app-myapp-release.apk app-myapp-release-aligned.apk

我收到以下错误:

java.io.IOException:密钥库被篡改,或密码不正确

有什么建议?

**更新**Android Studio版本2.2.3密钥库是使用"生成"菜单中的"生成签名APK"对话框生成的.

android command-line-tool android-studio apksigner

4
推荐指数
1
解决办法
1576
查看次数