How to get APK signing signature?

后端 未结 3 1936
北恋
北恋 2020-11-22 15:00

Is there a way to retrieve the signature of the key used to sign an APK? I signed my APK with my key from my keystore. How can I retrieve it programmatically?

3条回答
  •  南方客
    南方客 (楼主)
    2020-11-22 15:52

    My situation is that I have a pre-installed apk which use a wrong key-store . So directly install will give a fail because of inconsistent signature.I need to check the signature first to make sure it can be install smoothly.

    Here is my solution.

    As this code says, you can get the signature from an installed apk.

    details:

    Signature sig = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES).signatures[0];
    

    Secondly: get the releaseApk hashCode to compare. In my case, I downloaded this apk from my server, and put it in the sd_card.

    Signature releaseSig = context.getPackageManager().getPackageArchiveInfo("/mnt/sdcard/myReleaseApk.apk", PackageManager.GET_SIGNATURES).signatures[0];
    

    Finally,compare the hashCode.

    return sig.hashCode() == releaseSig.hashCode;
    

    I have tried the code above, it works just fine. If the hashCode is different, you should just uninstall the old apk or if it's a system app and the device is rooted, you can just use runtime to remove it,and then install the new signature apk.

提交回复
热议问题