【问题标题】:unable to sign the unsigned APK无法签署未签名的 APK
【发布时间】:2016-02-03 09:49:53
【问题描述】:

我正在尝试签署未签名的 APK。我关注了this link

我的步骤:

  1. $ cordova build --release android(成功)
  2. $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name - keyalg RSA -keysize 2048 -validity 10000(成功)
  3. $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore HelloWorld-release-unsigned.apk alias_name(有问题)

问题是:

jarsigner:无法打开 jar 文件:HelloWorld-release-unsigned.apk

然后我关注了this link

  1. $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -my-release-key.keystore F:\mobile\moto\whatever_the_path_is_to_your_apk_file\HelloCordova-release-unsigned.apk alias_name(有问题)

问题是:

非法选项:-my-release-key.keystore

谁能帮帮我。谢谢。

【问题讨论】:

    标签: android ionic-framework apk keystore


    【解决方案1】:

    您需要删除keystore文件前面的-并添加标志-keystore

    $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore F:\mobile\moto\whatever_the_path_is_to_your_apk_file\HelloCordova-release-unsigned.apk alias_name
    

    通常我使用这些命令来生成一个release build apk,我将在 Google Play 商店中发布:

    cd ~/Projects/myappname/
    cordova build android --release
    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore certificates/myappname-cert.keystore -storepass myappname -keypass myappname platforms/android/ant-build/CordovaApp-release-unsigned.apk myappname
    jarsigner -verify -verbose -certs platforms/android/ant-build/CordovaApp-release-unsigned.apk
    ~/android-sdk-macosx/build-tools/21.1.2/zipalign -v 4 platforms/android/ant-build/CordovaApp-release-unsigned.apk releases/android/myappname1.0.0.apk
    

    请注意,我创建了目录。 certificates 带有 .keystore 证书和目录。 releases/android 我保存所有已签名的 apk 版本。

    使用新的password 生成新的keystore 文件:

    keytool -genkey -v -keystore certificates/my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
    

    【讨论】:

    • 当我通过删除- = $ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 my-release-key.keystore F:\mobile\moto\whatever_the_path_is_to_your_apk_file\HelloCordova-release-unsigned.apk alias_name 使用它时,它告诉我the only one alias can be specified
    • 然后我尝试了这个jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore -storepass try -keypass try C:\Users\Users\desktop\try\platform\android\build\outputs\apk\android-release-unsigned.apk try它告诉我jarsigner error: java.lang.RuntimeException: keystore load: keystore was tempered with, or password was incorrect
    • 我更新了答案,添加了使用新密码生成新密钥库文件的命令。
    • 在此之前我使用的是c:\Users\Users\desktop\try\platform\android\build\outputs\apk\android-release-unsigned.apk,然后我像您一样更改为platform\android\build\outputs\apk\android-release-unsigned.apk。然后它的工作感谢先进:)
    【解决方案2】:

    使用 keytool、jarsigner 和 zipalign 签署 Corodva apk 的步骤是:

    1. 使用 keytool 为您的应用生成密钥库:

    keytool -genkey -v -keystore android.keystore -alias android_app -keyalg RSA -keysize 2048 -validity 10000
    

    2. 接下来使用 keytool 将证书创建为 pkcs12 密钥库格式

    keytool -importkeystore -srckeystore android.keystore -destkeystore android.keystore -deststoretype pkcs12
    

    它将在 Project_root_dir 中创建两个文件,分别为 android.keystore (with pkcs12)android.keystore.old (without pkcs12)

    3. 使用 jarsigner 签名 apk:

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore android.keystore app-release-unsigned.apk android_app
    

    第一次出现以下错误:

    jarsigner:无法打开 jar 文件:app-release-unsigned.apk

    然后你只需要从 .apk 文件中移动

    /Project_root_dir/platforms/android/app/build/outputs/apk/release/app-release unsigned.apk

    进入 Project_root_dir/

    然后再次运行上面的jarsigner命令,就可以成功签名apk了。

    4。最后验证apk:

    zipalign -v 4 app-release-unsigned.apk app-release.apk
    

    您的 apk 签名成功,您可以在 play store 中发布它。

    希望对你有所帮助。

    【讨论】:

      【解决方案3】:

      按照@manzapanza 写的,我还必须从http://dl.dropbox.com/u/34706306/zipalign 下载 zipalign 将 zipalign 移入 Android mv /Users/YOUR_USER_NAME/Downloads/zipalign /Users/YOUR_USER_NAME/Library/Android/sdk/tools 赋予执行权限:

      chmod 777 /Users/YOUR_USER_NAME/Library/Android/sdk/tools/zipalign 执行命令 jarsigner:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore yourkeystore.jks app-release-unsigned.apk aliayourkeystore

      【讨论】:

        【解决方案4】:

        按照这条路径,请写下您的密钥库名称以及您的别名:-

        jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore salonify-release-key.keystore platform/android/app/build/outputs/apk/release/app-release-unsigned.apk salonify

        【讨论】:

          【解决方案5】:

          只需使用绝对路径而不是相对路径:

          jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myApp.keystore E:\myApp\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk myApp
          

          【讨论】:

            【解决方案6】:

            你需要运行项目根目录下的所有命令,重要的是,你应该在运行$ cordova build --release android之后将你的apk文件移动AwesomeProject\platforms\android\app\build\outputs\apk\release到项目根目录。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2019-08-17
              • 2016-12-11
              • 1970-01-01
              • 2016-11-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多