Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unable to sign the unsigned APK

I'm trying to sign the unsigned APK. I followed this link.

My steps:

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

The problem is:

jarsigner: unable to open jar file: HelloWorld-release-unsigned.apk

Then i followed 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 (got problem)

the problem is:

Illegal option: -my-release-key.keystore

Can anyone help me. Thank you.

like image 654
syareen Avatar asked Feb 03 '16 09:02

syareen


People also ask

How do I sign an unsigned APK?

Sign an APK You can include this information in two ways: Specify a KeyStore file using the --ks option. Specify the private key file and certificate file separately using the --key and --cert options, respectively. The private key file must use the PKCS #8 format, and the certificate file must use the X.

Why is my APK unsigned?

Unsigned Apk, as the name suggests it means it is not signed by any Keystore. A Keystore is basically a binary file that contains a set of private keys. Every App that we install using the Google Play App Store needs to be signed with a Keystore.

Is it possible to install unsigned APK?

Apps that are not listed in the Google Play app store are called Unsigned Android Apps. If you need to install such an app for your Android device, you can still do so, but you'll need to enable settings inside Android that enable you to install unsigned third-party apps.

Can we upload unsigned APK to playstore?

You cannot upload to Google Store a not signed and not aligend APK. Ask your developer to give you the signed and aligend APK. Or you can ask them to provide the key to you so you can sign and align it yourself using that key .


2 Answers

You need to remove the - in front of the keystorefile and add the flag -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

Generally I use these commands to generate a release build apk that I will publish in the Google Play Store:

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

Note that I created the dir. certificates with the .keystore certificate, and the dir. releases/android where I save all signed apk releases.

To generate a new keystore file with a new password:

keytool -genkey -v -keystore certificates/my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
like image 69
manzapanza Avatar answered Oct 04 '22 08:10

manzapanza


Steps to sign Corodva apk using keytool, jarsigner and zipalign are:

1. Generate keystore for your app using keytool:

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

2. Next create a certificate into a pkcs12 keystore format with keytool

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

It will create two files in Project_root_dir as android.keystore (with pkcs12) and android.keystore.old (without pkcs12)

3. Sign apk with jarsigner:

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

First time you'll get below error as:

jarsigner: unable to open jar file: app-release-unsigned.apk

Then you just need to move .apk file from

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

in to Project_root_dir/

Then again run the jarsigner command above, it will sign apk successfully.

4. Finally verify apk:

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

Your apk is signed successfully, you can publish it in play store.

I hope this will help you.

like image 34
mayurs Avatar answered Oct 04 '22 08:10

mayurs