无法签署未签名的APK

时间:2016-02-03 09:49:53

标签: android ionic-framework apk keystore

我试图签署未签名的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(有问题)
  4. 问题是:

      

    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(有问题)
    2. 问题是:

        

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

      任何人都可以帮助我。谢谢。

7 个答案:

答案 0 :(得分:7)

您需要移除-文件前面的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

通常我会使用这些命令生成我将在Google Play商店中发布的release build apk

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

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

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

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

答案 1 :(得分:0)

按照@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

答案 2 :(得分:0)

请按照此路径编写密钥库名称以及别名: -

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

创建APK的步骤

  1. 添加android平台

    ionic cordova platform add android

  2. 为所有平台生成图标并启动 ionic cordova resources

  3. 构建Android APK ionic cordova build android --prod --release

  4. 发布APK,通过在项目Path中打开CMD生成RSA密钥并执行此命令

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

  5. 然后通过生成的密钥库文件对Release APK进行签名,请使用以下命令

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myApp.keystore E:\myApp\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk myApp (绝对路径,而不是相对路径)

答案 5 :(得分:0)

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

答案 6 :(得分:0)

使用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(带有pkcs12) android.keystore.old(没有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商店中。

我希望这会对您有所帮助。