相关疑难解决方法(0)

生成签名的 apk - 获取密钥失败:给定最终块未正确填充

我正在尝试在 Google Play 上发布我的第一个应用程序,但遇到了困难。让我向您解释我的问题:我的应用程序编译,我想生成一个签名的 apk ......这不适用于 android studio (Build--> generate signed budle/apk),我收到了下一条错误消息:

erreur keytool : java.io.FileNotFoundException: C:\Users\sebla\Desktop\AndroidApp\jdk-11.0.1\bin\mykeystore.jks (Accès refusé)
Run Code Online (Sandbox Code Playgroud)

然后,我成功创建了密钥库(通过 cmd):
C:\Users\sebla\Desktop\AndroidApp\jdk-11.0.1\bin>keytool -genkey -v -keystore appkeystore.keystore -alias permisKey -keyalg RSA -keysize 2048 -validity 10000

但是现在我在生成签名的 apk 时收到以下错误消息:

Something went wrong with the encryption tool: Get Key failed: Given final block not properly padded
java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded
    at sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyStore.java:410)
    at sun.security.provider.KeyStoreDelegator.engineGetKey(KeyStoreDelegator.java:96)
    at sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(JavaKeyStore.java:70)
    at java.security.KeyStore.getKey(KeyStore.java:1023)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.extractPrivateKey(KeystoreHelper.java:56)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.getPrivateKey(KeystoreHelper.java:35)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncryptedPrivateKeyTool.java:98)
    at org.jetbrains.android.exportSignedPackage.ExportSignedPackageWizard$2.run(ExportSignedPackageWizard.java:241) …
Run Code Online (Sandbox Code Playgroud)

java android

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

如何使用 Gitlab CI/CD 生成签名发布 APK?

我正在试验 GitLab 的 CI/CD,并正在研究如何生成签名版本 APK。

我在这里阅读了这篇文章。

它提出了以下建议:

- ./gradlew assembleRelease
    -Pandroid.injected.signing.store.file=$(pwd)/my.keystore
    -Pandroid.injected.signing.store.password=$KEYSTORE_PASSWORD
    -Pandroid.injected.signing.key.alias=$KEY_ALIAS
    -Pandroid.injected.signing.key.password=$KEY_PASSWORD
Run Code Online (Sandbox Code Playgroud)

并将变量存储在 Gitlab CI/CD 变量中。

但是每次我运行管道时,它总是会导致:

* What went wrong:
Execution failed for task ':app:packageRelease'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: java.lang.RuntimeException: 
com.android.ide.common.signing.KeytoolException: Failed to read key key0 from store "/tmp/Lp7GrQLJ/0/XXXXX/sample-android-project/keystore": Keystore was tampered with, or password was incorrect
Run Code Online (Sandbox Code Playgroud)

有人可以在这里指导我吗?我可能做错了什么?

android gitlab

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

如何使用 build.gradle 文件中的 V1(Jar 签名)或 V2(完整 APK 签名)

我的gradle文件中有这个:

android {
    signingConfigs {
        mySigningConfig {
            keyAlias 'theAlias'
            keyPassword 'thePassword'
            storeFile file('theKeystore.jks')
            storePassword 'thePassword'
        }
    }
    ...
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.mySigningConfig
        }
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后当我生成我的发布 APK 时,我只需转到Build -> Build Bundle(s) / APK(s) -> Build APK(s)并创建 APK。与如果我去不同Build -> Generate Signed Bundle / APK,它会提示我:

在此处输入图片说明

我的问题是,我当前的 gradle 文件生成什么版本的签名?是V1还是V2?如何修改我的 gradle 文件,以便它专门使用 V1 或 V2 构建?

android gradle android-studio

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

Gradle生成unsigned release apk

我有一个具有以下结构的项目:

Root
    \__main_project
    |
    \__modules
       \__
       |  library1
       |   
       \__
          library2
Run Code Online (Sandbox Code Playgroud)

我的gradle中有以下配置:

android {
    compileSdkVersion 19
    buildToolsVersion '19.0.0'

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
    }

    signingConfigs {
        release {
            storeFile file('/home/home/.signing/test.keystore')
            storePassword 'testtest'
            keyAlias 'testtest'
            keyPassword 'testtest'
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

构建我的项目我运行以下命令:

./gradlew :main_project:assembleRelease
Run Code Online (Sandbox Code Playgroud)

但它只生成main_project-release-unsigned.apk

所以我的问题是,当我指定所有必需的配置时,它为什么会生成unsigned apk.谢谢.

android gradle

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

签名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
查看次数

加载p12密钥库的BadPaddingException

执行以下代码时:

    KeyStore ks = KeyStore.getInstance(storeType);
    ks.load(new FileInputStream(keyStore), storePassword.toCharArray());

    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kmf.init(ks, keyPassword.toCharArray());
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:

java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
Run Code Online (Sandbox Code Playgroud)

这最初来自使用keytool转换为PKCS12密钥库的JKS密钥库.我尝试创建一个新的PKCS12密钥库,但没有运气.

java

3
推荐指数
1
解决办法
3589
查看次数

无法使用Android Studio生成签名的.apk

我正在尝试导出签名APK以提交到Play商店,但是当我单击Build-> Generate Signed APK时,该选项显示为灰色,我无法选择它。在此处输入图片说明

android

0
推荐指数
2
解决办法
4199
查看次数